function TriggerOtherTestCase::testActionsUser

7.x trigger.test TriggerOtherTestCase::testActionsUser()

Tests triggering on user create and user login.

File

drupal-7.x/modules/trigger/trigger.test, line 566
Tests for trigger.module.

Class

TriggerOtherTestCase
Tests other triggers.

Code

function testActionsUser() {
  // Assign an action to the create user trigger.
  $test_user = $this->drupalCreateUser(array('administer actions'));
  $this->drupalLogin($test_user);
  $action_id = 'trigger_test_generic_action';
  $hash = drupal_hash_base64($action_id);
  $edit = array('aid' => $hash);
  $this->drupalPost('admin/structure/trigger/user', $edit, t('Assign'), array(), array(), 'trigger-user-insert-assign-form');

  // Set action variable to FALSE.
  variable_set($action_id, FALSE);

  // Create an unblocked user
  $web_user = $this->drupalCreateUser(array('administer users'));
  $this->drupalLogin($web_user);
  $name = $this->randomName();
  $pass = user_password();
  $edit = array();
  $edit['name'] = $name;
  $edit['mail'] = $name . '@example.com';
  $edit['pass[pass1]'] = $pass;
  $edit['pass[pass2]'] = $pass;
  $edit['status'] = 1;
  $this->drupalPost('admin/people/create', $edit, t('Create new account'));

  // Verify that the action variable has been set.
  $this->assertTrue(variable_get($action_id, FALSE), 'Check that creating a user triggered the test action.');

  // Reset the action variable.
  variable_set($action_id, FALSE);

  $this->drupalLogin($test_user);
  // Assign a configurable action 'System message' to the user_login trigger.
  $action_edit = array(
    'actions_label' => $this->randomName(16),
    'message' => t("You have logged in:") . $this->randomName(16),
  );

  // Configure an advanced action that we can assign.
  $aid = $this->configureAdvancedAction('system_message_action', $action_edit);
  $edit = array('aid' => drupal_hash_base64($aid));
  $this->drupalPost('admin/structure/trigger/user', $edit, t('Assign'), array(), array(), 'trigger-user-login-assign-form');

  // Verify that the action has been assigned to the correct hook.
  $actions = trigger_get_assigned_actions('user_login');
  $this->assertEqual(1, count($actions), 'One Action assigned to the hook');
  $this->assertEqual($actions[$aid]['label'], $action_edit['actions_label'], 'Correct action label found.');

  // User should get the configured message at login.
  $contact_user = $this->drupalCreateUser(array('access site-wide contact form'));
  $this->drupalLogin($contact_user);
  $this->assertText($action_edit['message']);
}