protected function GlobalRedirectTestCase::_globalredirect_test_paths in Global Redirect 7
2 calls to GlobalRedirectTestCase::_globalredirect_test_paths()
1 method overrides GlobalRedirectTestCase::_globalredirect_test_paths()
File
- ./
globalredirect.test, line 88 - Global Redirect functionality tests
Class
- GlobalRedirectTestCase
- @file Global Redirect functionality tests
Code
protected function _globalredirect_test_paths() {
// Get the settings
$settings = _globalredirect_get_settings();
$this
->assert('pass', '<pre>' . print_r($settings, TRUE) . '</pre>');
// Array of request => "array of expected data" pairs.
// The array must have a return-code key (with a numeric HTTP code as a value (eg 301 or 200).
// The array may also have an expected-path key with a value representing the expected path. If this is ommitted, the request is passed through url().
return array(
// "" is the frontpage. Should NOT redirect. -- Test for normal requests
array(
'request' => '',
'return-code' => 200,
'expected-path' => '',
),
// "node" is the default frontpage. Should redirect to base path. --- Test for frontpage redirect
// The result depends on settings
array(
'request' => 'node',
'return-code' => $settings['frontpage_redirect'] ? 301 : 200,
'expected-path' => $settings['frontpage_redirect'] ? '' : 'node',
),
// "node/1" has been defined above as having an alias ("test-node"). Should 301 redirect to the alias. --- Test for source path request on aliased path
array(
'request' => 'node/1',
'return-code' => 301,
),
// "node/add/article" has an alias, however the redirect depends on the menu_check setting --- Test for access request to secured url
array(
'request' => 'node/add/article',
'return-code' => $settings['menu_check'] ? 403 : 301,
),
// "user/[uid]/" has no alias, but the redirect depends on the $deslash_check setting --- Test for deslashing redirect
array(
'request' => 'user/' . $this->loggedInUser->uid . '/',
'return-code' => $settings['deslash'] ? 301 : 200,
'expected-path' => 'user/' . $this->loggedInUser->uid,
),
// NonClean to Clean check 1 --- This should always redirect as we're requesting an aliased path in unaliased form (albeit also unclean)
array(
'request' => url('<front>', array(
'absolute' => TRUE,
)),
'options' => array(
'query' => array(
'q' => 'node/1',
),
'external' => TRUE,
),
'return-code' => 301,
'expected-path' => 'test-node',
),
// NonClean to Clean check 2 --- This may or may not redirect, depending on the state of nonclean_to_clean as we're requesting an unaliased path
array(
'request' => url('<front>', array(
'absolute' => TRUE,
)),
'options' => array(
'query' => array(
'q' => 'node/add/page',
),
'external' => TRUE,
),
'return-code' => $settings['nonclean_to_clean'] ? 301 : 200,
'expected-path' => $settings['nonclean_to_clean'] ? 'node/add/page' : '?q=node/add/page',
),
// Ensure that the NonClean to Clean with an external URL does not redirect.
array(
'request' => url('<front>', array(
'absolute' => TRUE,
)),
'options' => array(
'query' => array(
'q' => 'http://www.example.com',
),
'external' => TRUE,
),
'return-code' => 404,
),
array(
'request' => url('<front>', array(
'absolute' => TRUE,
)),
'options' => array(
'query' => array(
'q' => 'http://www.example.com/',
),
'external' => TRUE,
),
'return-code' => 404,
),
// Also test un-escaped query strings with external URLs.
array(
'request' => url('<front>', array(
'absolute' => TRUE,
)) . '?q=http://www.example.com',
'options' => array(
'external' => TRUE,
),
'return-code' => 404,
),
array(
'request' => url('<front>', array(
'absolute' => TRUE,
)) . '?q=http://www.example.com/',
'options' => array(
'external' => TRUE,
),
'return-code' => 404,
),
// Test with external URLs in the destination query string.
array(
'request' => 'node/1',
'options' => array(
'query' => array(
'destination' => 'http://www.example.com/',
),
),
'return-code' => 301,
'expected-path' => 'test-node',
),
// Case Sensitive URL Check --- This may or may not redirect, depending on the state of case_sensitive_urls as we're requesting an aliased path in the wrong case
array(
'request' => 'Test-Node',
'options' => array(
'external' => TRUE,
),
'return-code' => $settings['case_sensitive_urls'] ? db_driver() == 'sqlite' ? 404 : 301 : (db_driver() == 'sqlite' ? 404 : 200),
// SQLite cannot return case-insensitive rows.
'expected-path' => $settings['case_sensitive_urls'] ? 'test-node' : 'Test-Node',
),
// Term Path Handler Check --- This may or may not redirect, depending on the state of term_path_handler as we're requesting an aliased path with the wrong source
array(
'request' => 'taxonomy/term/' . $this->gr_forum_term->tid,
// TODO: WE're assumeing term 1 is the forum tid created in setUp() - bad?
'return-code' => $settings['term_path_handler'] ? 301 : 200,
'expected-path' => $settings['term_path_handler'] ? 'forum/' . $this->gr_forum_term->tid : 'taxonomy/term/' . $this->gr_forum_term->tid,
),
// Trailing Zero Check --- This may or may not redirect, depending on the state of trailing_zero, as we're requesting an aliased path with a trailing zero source
// If 1, we trim ALL trailing /0... If 0 (disabled) or 2 (taxonomy term only), then a 200 response should be issued.
array(
'request' => 'node/1/0',
'return-code' => $settings['trailing_zero'] == 1 ? 301 : 200,
'expected-path' => $settings['trailing_zero'] == 1 ? 'test-node' : 'node/1/0',
),
// Trailing Zero Check --- This may or may not redirect, depending on the state of trailing_zero, as we're requesting an aliased path with a trailing zero source
// If not disabled, then we should trim from taxonomy/term/1/0
array(
'request' => 'taxonomy/term/' . $this->gr_term->tid . '/0',
'return-code' => $settings['trailing_zero'] > 0 ? 301 : 200,
'expected-path' => $settings['trailing_zero'] > 0 ? 'test-term' : 'taxonomy/term/' . $this->gr_term->tid . '/0',
),
// Regression test for http://drupal.org/node/867654 - term 10 does not exist
array(
'request' => 'taxonomy/term/10/0',
'return-code' => $settings['trailing_zero'] > 0 ? 301 : 404,
// Term 10 does not exist in testing.
'expected-path' => $settings['trailing_zero'] > 0 ? 'taxonomy/term/10' : 'taxonomy/term/10/0',
),
// Regression test for http://drupal.org/node/867654 - term 10 does not exist
array(
'request' => 'admin',
'return-code' => $settings['ignore_admin_path'] > 0 ? 200 : 301,
// Ignoring the admin path means no src=>alias redirecting.
'expected-path' => $settings['ignore_admin_path'] > 0 ? 'admin' : 'administration',
),
);
}