page_example.test in Examples for Developers 7
Same filename and directory in other branches
Test case for Testing the page example module.
This file contains the test cases to check if module is performing as expected.
File
page_example/page_example.testView source
<?php
/**
* @file
* Test case for Testing the page example module.
*
* This file contains the test cases to check if module is performing as
* expected.
*/
/**
* Functional tests for the Page Example module.
*
* @ingroup page_example
*/
class PageExampleTestCase extends DrupalWebTestCase {
protected $webUser;
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => '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.
*/
public function setUp() {
parent::setUp('page_example');
}
/**
* Generates a random string of ASCII numeric characters (values 48 to 57).
*
* @param int $length
* Length of random string to generate.
*
* @return string
* Randomly generated string.
*/
protected 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 string $url
* URL to verify.
*/
public function pageExampleVerifyNoAccess($url) {
// Test that page returns 403 Access Denied.
$this
->drupalGet($url);
$this
->assertResponse(403);
}
/**
* Functional test for various page types.
*/
public 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->webUser = $this
->drupalCreateUser();
$this
->drupalLogin($this->webUser);
// 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->webUser = $this
->drupalCreateUser(array(
'access simple page',
));
$this
->drupalLogin($this->webUser);
// Verify that user can access simple content.
$this
->drupalGet('examples/page_example/simple');
$this
->assertResponse(200, 'simple content successfully accessed.');
$this
->assertText(t('The quick brown fox jumps over the lazy dog.'), 'Simple 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 'simple' page and login.
$this->webUser = $this
->drupalCreateUser(array(
'access arguments page',
));
$this
->drupalLogin($this->webUser);
// Verify that user can access simple content.
$first = $this
->randomNumber(3);
$second = $this
->randomNumber(3);
$this
->drupalGet('examples/page_example/arguments/' . $first . '/' . $second);
$this
->assertResponse(200, 'arguments content successfully accessed.');
// Verify argument usage.
$this
->assertRaw(t("First number was @number.", array(
'@number' => $first,
)), 'arguments first argument successfully verified.');
$this
->assertRaw(t("Second number was @number.", array(
'@number' => $second,
)), 'arguments second argument successfully verified.');
$this
->assertRaw(t('The total was @number.', array(
'@number' => $first + $second,
)), '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, '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, 'Invalid argument for arguments content successfully verified');
// Check if user can't access simple page.
$this
->pageExampleVerifyNoAccess('examples/page_example/simple');
}
}
Classes
Name | Description |
---|---|
PageExampleTestCase | Functional tests for the Page Example module. |