Mercurial > hg > isophonics-drupal-site
diff core/modules/node/tests/src/Functional/NodeViewTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/node/tests/src/Functional/NodeViewTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,98 @@ +<?php + +namespace Drupal\Tests\node\Functional; + +use Drupal\Component\Utility\Html; + +/** + * Tests the node/{node} page. + * + * @group node + * @see \Drupal\node\Controller\NodeController + */ +class NodeViewTest extends NodeTestBase { + + /** + * Tests the html head links. + */ + public function testHtmlHeadLinks() { + $node = $this->drupalCreateNode(); + + $this->drupalGet($node->urlInfo()); + + $result = $this->xpath('//link[@rel = "canonical"]'); + $this->assertEqual($result[0]->getAttribute('href'), $node->url()); + + // Link relations are checked for access for anonymous users. + $result = $this->xpath('//link[@rel = "version-history"]'); + $this->assertFalse($result, 'Version history not present for anonymous users without access.'); + + $result = $this->xpath('//link[@rel = "edit-form"]'); + $this->assertFalse($result, 'Edit form not present for anonymous users without access.'); + + $this->drupalLogin($this->createUser(['access content'])); + $this->drupalGet($node->urlInfo()); + + $result = $this->xpath('//link[@rel = "canonical"]'); + $this->assertEqual($result[0]->getAttribute('href'), $node->url()); + + // Link relations are present regardless of access for authenticated users. + $result = $this->xpath('//link[@rel = "version-history"]'); + $this->assertEqual($result[0]->getAttribute('href'), $node->url('version-history')); + + $result = $this->xpath('//link[@rel = "edit-form"]'); + $this->assertEqual($result[0]->getAttribute('href'), $node->url('edit-form')); + + // Give anonymous users access to edit the node. Do this through the UI to + // ensure caches are handled properly. + $this->drupalLogin($this->rootUser); + $edit = [ + 'anonymous[edit own ' . $node->bundle() . ' content]' => TRUE + ]; + $this->drupalPostForm('admin/people/permissions', $edit, 'Save permissions'); + $this->drupalLogout(); + + // Anonymous user's should now see the edit-form link but not the + // version-history link. + $this->drupalGet($node->urlInfo()); + $result = $this->xpath('//link[@rel = "canonical"]'); + $this->assertEqual($result[0]->getAttribute('href'), $node->url()); + + $result = $this->xpath('//link[@rel = "version-history"]'); + $this->assertFalse($result, 'Version history not present for anonymous users without access.'); + + $result = $this->xpath('//link[@rel = "edit-form"]'); + $this->assertEqual($result[0]->getAttribute('href'), $node->url('edit-form')); + } + + /** + * Tests the Link header. + */ + public function testLinkHeader() { + $node = $this->drupalCreateNode(); + + $expected = [ + '<' . Html::escape($node->url('canonical')) . '>; rel="canonical"', + '<' . Html::escape($node->url('canonical'), ['alias' => TRUE]) . '>; rel="shortlink"', + '<' . Html::escape($node->url('revision')) . '>; rel="revision"', + ]; + + $this->drupalGet($node->urlInfo()); + + $links = $this->drupalGetHeaders()['Link']; + $this->assertEqual($links, $expected); + } + + /** + * Tests that we store and retrieve multi-byte UTF-8 characters correctly. + */ + public function testMultiByteUtf8() { + $title = '🐝'; + $this->assertTrue(mb_strlen($title, 'utf-8') < strlen($title), 'Title has multi-byte characters.'); + $node = $this->drupalCreateNode(['title' => $title]); + $this->drupalGet($node->urlInfo()); + $result = $this->xpath('//span[contains(@class, "field--name-title")]'); + $this->assertEqual($result[0]->getText(), $title, 'The passed title was returned.'); + } + +}