9f8c6022181c30a4eb5d664085251c08f2d83fa4
[yaffs-website] / web / core / modules / views / tests / src / Functional / ViewAjaxTest.php
1 <?php
2
3 namespace Drupal\Tests\views\Functional;
4
5 use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
6
7 /**
8  * Tests the ajax view functionality.
9  *
10  * @group views
11  */
12 class ViewAjaxTest extends ViewTestBase {
13
14   /**
15    * Views used by this test.
16    *
17    * @var array
18    */
19   public static $testViews = ['test_ajax_view', 'test_view'];
20
21   protected function setUp($import_test_views = TRUE) {
22     parent::setUp($import_test_views);
23
24     $this->enableViewsTestModule();
25   }
26
27   /**
28    * Tests an ajax view.
29    */
30   public function testAjaxView() {
31     $this->drupalGet('test_ajax_view');
32
33     $drupal_settings = $this->getDrupalSettings();
34     $this->assertTrue(isset($drupal_settings['views']['ajax_path']), 'The Ajax callback path is set in drupalSettings.');
35     $this->assertEqual(count($drupal_settings['views']['ajaxViews']), 1);
36     $view_entry = array_keys($drupal_settings['views']['ajaxViews'])[0];
37     $this->assertEqual($drupal_settings['views']['ajaxViews'][$view_entry]['view_name'], 'test_ajax_view', 'The view\'s ajaxViews array entry has the correct \'view_name\' key.');
38     $this->assertEqual($drupal_settings['views']['ajaxViews'][$view_entry]['view_display_id'], 'page_1', 'The view\'s ajaxViews array entry has the correct \'view_display_id\' key.');
39   }
40
41   /**
42    * Ensures that non-ajax view cannot be accessed via an ajax HTTP request.
43    */
44   public function testNonAjaxViewViaAjax() {
45     $client = $this->getHttpClient();
46     $response = $client->request('POST', $this->buildUrl('views/ajax'), [
47       'form_params' => ['view_name' => 'test_ajax_view', 'view_display_id' => 'default'],
48       'query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax'],
49     ]);
50     $this->assertEquals(200, $response->getStatusCode());
51     $response = $client->request('POST', $this->buildUrl('views/ajax'), [
52       'form_params' => ['view_name' => 'test_view', 'view_display_id' => 'default'],
53       'query' => [MainContentViewSubscriber::WRAPPER_FORMAT => 'drupal_ajax'],
54       'http_errors' => FALSE,
55     ]);
56     $this->assertEquals(403, $response->getStatusCode());
57   }
58
59 }