| 1.20.x path.test | PathTestCase::testNodeAlias() | 
Tests alias functionality through the node interfaces.
File
- modules/path/ tests/ path.test, line 147 
- Tests for the Path module.
Class
- PathTestCase
- Provides a base class for testing the Path module.
Code
function testNodeAlias() {
  // Create test node.
  $node1 = $this->backdropCreateNode();
  // Create alias.
  $edit = array();
  $edit['path[auto]'] = FALSE;
  $edit['path[alias]'] = $this->randomName(8);
  $this->backdropPost('node/' . $node1->nid . '/edit', $edit, t('Save'));
  // Confirm that the alias works.
  $this->backdropGet($edit['path[alias]']);
  $this->assertText($node1->title, 'Alias works.');
  $this->assertResponse(200);
  // Change alias to one containing "exotic" characters.
  $edit['path[auto]'] = FALSE;
  $previous = $edit['path[alias]'];
  $edit['path[alias]'] = "- ._~!$'\"()*@[]?&+%#,;=:" . // "Special" ASCII characters.
    "%23%25%26%2B%2F%3F" . // Characters that look like a percent-escaped string.
    "éøïвβ中國書۞"; // Characters from various non-ASCII alphabets.
  $this->backdropPost('node/' . $node1->nid . '/edit', $edit, t('Save'));
  // Confirm that the alias works.
  $this->backdropGet($edit['path[alias]']);
  $this->assertText($node1->title, 'Changed alias works.');
  $this->assertResponse(200);
  // Make sure that previous alias no longer works.
  $this->backdropGet($previous);
  $this->assertNoText($node1->title, 'Previous alias no longer works.');
  $this->assertResponse(404);
  // Create second test node.
  $node2 = $this->backdropCreateNode();
  // Set alias to second test node.
  // Leave $edit['path[alias]'] the same.
  $this->backdropPost('node/' . $node2->nid . '/edit', $edit, t('Save'));
  // Confirm that the alias didn't make a duplicate.
  $this->assertText(t('The alias is already in use.'), 'Attempt to moved alias was rejected.');
  // Delete alias.
  $this->backdropPost('node/' . $node1->nid . '/edit', array('path[alias]' => ''), t('Save'));
  // Confirm that the alias no longer works.
  $this->backdropGet($edit['path[alias]']);
  $this->assertNoText($node1->title, 'Alias was successfully deleted.');
  $this->assertResponse(404);
}