function RulesTestCase::testRuleComponentAccess

Same name in other branches
  1. 8.x-3.x d7-tests/rules_test_case.test \RulesTestCase::testRuleComponentAccess()

Tests custom access for using component actions/conditions.

File

tests/rules.test, line 380

Class

RulesTestCase
Rules test cases.

Code

public function testRuleComponentAccess() {
    // Create a normal user.
    $normal_user = $this->drupalCreateUser();
    // Create a role for granting access to the rule component.
    $this->normal_role = $this->drupalCreateRole(array(), 'test_role');
    $normal_user->roles[$this->normal_role] = 'test_role';
    user_save($normal_user, array(
        'roles' => $normal_user->roles,
    ));
    // Create an 'action set' rule component making use of a permission.
    $action_set = rules_action_set(array(
        'node' => array(
            'type' => 'node',
        ),
    ));
    $action_set->access_exposed = TRUE;
    $action_set->save('rules_test_roles');
    // Set the global user to be the current one as access is checked for the
    // global user.
    global $user;
    $user = user_load($normal_user->uid);
    $this->assertFalse(rules_action('component_rules_test_roles')->access(), 'Authenticated user without the correct role can\'t use the rule component.');
    // Assign the role that will have permissions for the rule component.
    user_role_change_permissions($this->normal_role, array(
        'use Rules component rules_test_roles' => TRUE,
    ));
    $this->assertTrue(rules_action('component_rules_test_roles')->access(), 'Authenticated user with the correct role can use the rule component.');
    // Reset global user to anonymous.
    $user = user_load(0);
    $this->assertFalse(rules_action('component_rules_test_roles')->access(), 'Anonymous user can\'t use the rule component.');
}