'Page example functionality', 'description' => 'Creates page and render the content based on the arguments passed in the URL.', 'group' => 'Examples', ); } /** * Enable modules and create user with specific permissions. */ function setUp() { parent::setUp('page_example'); } /** * Generates a random string of ASCII numeric characters (values 48 to 57). * * @param $length * Length of random string to generate . * @return * Randomly generated string. */ private static function randomNumber($length = 8) { $str = ''; for ($i = 0; $i < $length; $i++) { $str .= chr(mt_rand(48, 57)); } return $str; } /** * Verify that current user has no access to page. * * @param $url * URL to verify. */ function pageExampleVerifyNoAccess($url) { // Test that page returns 403 Access Denied $this->drupalGet($url); $this->assertResponse(403); } /** * Login user, create an example node, and test blog functionality through the admin and user interfaces. */ function testPageExampleBasic() { // Verify that anonymous user can't access the pages created by // page_example module $this->pageExampleVerifyNoAccess('examples/page_example/simple'); $this->pageExampleVerifyNoAccess('examples/page_example/arguments/1/2'); // Create a regular user and login. $this->web_user = $this->drupalCreateUser(); $this->drupalLogin($this->web_user); // Verify that regular user can't access the pages created by // page_example module $this->pageExampleVerifyNoAccess('examples/page_example/simple'); $this->pageExampleVerifyNoAccess('examples/page_example/arguments/1/2'); // Create a user with permissions to access 'simple' page and login. $this->web_user = $this->drupalCreateUser(array('access simple page')); $this->drupalLogin($this->web_user); // Verify that user can access foo content $this->drupalGet('examples/page_example/simple'); $this->assertResponse(200, t('Simple page content successfully accessed.')); $this->assertText(t('The quick brown fox jumps over the lazy dog.'), t('foo content successfully verified.')); // Check if user can't access arguments page $this->pageExampleVerifyNoAccess('examples/page_example/arguments/1/2'); // Create a user with permissions to access 'arguments' page and login. $this->web_user = $this->drupalCreateUser(array('access arguments page')); $this->drupalLogin($this->web_user); // Verify that user can access foo content $first = $this->randomNumber(3); $second = $this->randomNumber(3); $this->drupalGet('examples/page_example/arguments/' . $first . '/' . $second); $this->assertResponse(200, t('arguments content successfully accessed.')); // Verify argument usage $this->assertRaw(t("First number was @number.", array('@number' => $first)), t('arguments first argument successfully verified.')); $this->assertRaw(t("Second number was @number.", array('@number' => $second)), t('arguments second argument successfully verified.')); $this->assertRaw(t('The total was @number.', array('@number' => $first + $second)), t('arguments content successfully verified.')); // Verify incomplete argument call to arguments content $this->drupalGet('examples/page_example/arguments/' . $first . '/'); $this->assertText("provides two pages"); // Verify invalid argument call to arguments content $this->drupalGet('examples/page_example/arguments/' . $first . '/' . $this->randomString()); $this->assertResponse(403, t('Invalid argument for arguments content successfully verified')); // Verify invalid argument call to arguments content $this->drupalGet('examples/page_example/arguments/' . $this->randomString() . '/' . $second); $this->assertResponse(403, t('Invalid argument for arguments content successfully verified')); // Check if user can't access simple page $this->pageExampleVerifyNoAccess('examples/page_example/simple'); } }