function AccessTest::testDynamicAccessPlugin

Tests dynamic access plugin.

See also

Drupal\views_test\Plugin\views\access\DyamicTest

File

drupal/core/modules/views/lib/Drupal/views/Tests/Plugin/AccessTest.php, line 99
Definition of Drupal\views\Tests\Plugin\AccessTest

Class

AccessTest
Basic test for pluggable access.

Namespace

Drupal\views\Tests\Plugin

Code

function testDynamicAccessPlugin() {
  $view = views_get_view('test_access_dynamic');
  $view
    ->setDisplay();
  $argument1 = $this
    ->randomName();
  $argument2 = $this
    ->randomName();
  state()
    ->set('test_dynamic_access_argument1', $argument1);
  state()
    ->set('test_dynamic_access_argument2', $argument2);
  $access_plugin = $view->display_handler
    ->getPlugin('access');
  $this
    ->assertFalse($access_plugin
    ->access($this->normal_user));
  $access_plugin->options['access'] = TRUE;
  $this
    ->assertFalse($access_plugin
    ->access($this->normal_user));
  $view
    ->setArguments(array(
    $argument1,
    $argument2,
  ));
  $this
    ->assertTrue($access_plugin
    ->access($this->normal_user));

  // FALSE comes from hook_menu caching.
  $expected_hook_menu = array(
    'views_test_data_test_dynamic_access_callback',
    array(
      FALSE,
      1,
      2,
    ),
  );
  $hook_menu = $view
    ->executeHookMenu('page_1');
  $this
    ->assertEqual($expected_hook_menu, $hook_menu['test_access_dynamic']['access arguments'][0]);
  $expected_hook_menu = array(
    'views_test_data_test_dynamic_access_callback',
    array(
      TRUE,
      1,
      2,
    ),
  );
  $this
    ->assertTrue(views_access($expected_hook_menu, $argument1, $argument2));
}