function ViewsAccessTest::testDynamicAccessPlugin

Tests dynamic access plugin.

File

tests/views_access.test, line 139

Class

ViewsAccessTest
Basic test for pluggable access.

Code

public function testDynamicAccessPlugin() {
    $view = $this->view_access_dynamic();
    $argument1 = $this->randomName();
    $argument2 = $this->randomName();
    variable_set('test_dynamic_access_argument1', $argument1);
    variable_set('test_dynamic_access_argument2', $argument2);
    $view->set_display('default');
    $access_plugin = $view->display_handler
        ->get_plugin('access');
    $this->assertFalse($access_plugin->access($this->normal_user));
    $access_plugin->options['access'] = TRUE;
    $this->assertFalse($access_plugin->access($this->normal_user));
    $view->set_arguments(array(
        $argument1,
        $argument2,
    ));
    $this->assertTrue($access_plugin->access($this->normal_user));
    // FALSE comes from hook_menu caching.
    $expected_hook_menu = array(
        'views_test_test_dynamic_access_callback',
        array(
            FALSE,
            1,
            2,
        ),
    );
    $hook_menu = $view->execute_hook_menu('page_1');
    $this->assertEqual($expected_hook_menu, $hook_menu['test_access_dynamic']['access arguments'][0]);
    $expected_hook_menu = array(
        'views_test_test_dynamic_access_callback',
        array(
            TRUE,
            1,
            2,
        ),
    );
    $this->assertTrue(views_access($expected_hook_menu, $argument1, $argument2));
}