Mercurial > hg > isophonics-drupal-site
comparison core/modules/system/src/Tests/Common/NoJavaScriptAnonymousTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\system\Tests\Common; | |
4 | |
5 use Drupal\simpletest\WebTestBase; | |
6 use Drupal\node\NodeInterface; | |
7 | |
8 /** | |
9 * Tests that anonymous users are not served any JavaScript in the Standard | |
10 * installation profile. | |
11 * | |
12 * @group Common | |
13 */ | |
14 class NoJavaScriptAnonymousTest extends WebTestBase { | |
15 | |
16 protected $profile = 'standard'; | |
17 | |
18 protected function setUp() { | |
19 parent::setUp(); | |
20 | |
21 // Grant the anonymous user the permission to look at user profiles. | |
22 user_role_grant_permissions('anonymous', ['access user profiles']); | |
23 } | |
24 | |
25 /** | |
26 * Tests that anonymous users are not served any JavaScript. | |
27 */ | |
28 public function testNoJavaScript() { | |
29 // Create a node that is listed on the frontpage. | |
30 $this->drupalCreateNode([ | |
31 'promote' => NodeInterface::PROMOTED, | |
32 ]); | |
33 $user = $this->drupalCreateUser(); | |
34 | |
35 // Test frontpage. | |
36 $this->drupalGet(''); | |
37 $this->assertNoJavaScriptExceptHtml5Shiv(); | |
38 | |
39 // Test node page. | |
40 $this->drupalGet('node/1'); | |
41 $this->assertNoJavaScriptExceptHtml5Shiv(); | |
42 | |
43 // Test user profile page. | |
44 $this->drupalGet('user/' . $user->id()); | |
45 $this->assertNoJavaScriptExceptHtml5Shiv(); | |
46 } | |
47 | |
48 /** | |
49 * Passes if no JavaScript is found on the page except the HTML5 shiv. | |
50 * | |
51 * The HTML5 shiv is necessary for e.g. the <article> tag which Drupal 8 uses | |
52 * to work in older browsers like Internet Explorer 8. | |
53 */ | |
54 protected function assertNoJavaScriptExceptHtml5Shiv() { | |
55 // Ensure drupalSettings is not set. | |
56 $settings = $this->getDrupalSettings(); | |
57 $this->assertTrue(empty($settings), 'drupalSettings is not set.'); | |
58 | |
59 // Ensure the HTML5 shiv exists. | |
60 $this->assertRaw('html5shiv/html5shiv.min.js', 'HTML5 shiv JavaScript exists.'); | |
61 | |
62 // Ensure no other JavaScript file exists on the page, while ignoring the | |
63 // HTML5 shiv. | |
64 $this->assertNoPattern('/(?<!html5shiv\.min)\.js/', "No other JavaScript exists."); | |
65 } | |
66 | |
67 } |