You are here

user_limit.test in User Limit 7

Tests for user_limit.module.

File

user_limit.test
View source
<?php

/**
 * @file
 * Tests for user_limit.module.
 */

/**
 * Test the functionality of the Honeypot module for an admin user.
 */
class UserLimitUserTestCase extends DrupalWebTestCase {
  protected $node;
  public static function getInfo() {
    return array(
      'name' => 'User limit',
      'description' => 'Test User Limit module functionality.',
      'group' => 'User',
    );
  }
  public function setUp() {

    // Enable modules required for this test.
    parent::setUp(array(
      'user_limit',
    ));
  }

  /**
   * Test user registration (anonymous users) and message on register page.
   */
  public function testProtectRegisterUserNormal() {
    $edit = array();

    // Set up required variables.
    variable_set('user_limit', 2);

    // Only allow two users (uid 1 + one extra).
    variable_set('user_limit_uid1', 1);

    // Count uid 1 towards limit.
    variable_set('user_limit_active', 1);

    // Count only active users towards limit.
    // Allow anonymous users to register without email verification.
    variable_set('user_register', USER_REGISTER_VISITORS);
    variable_set('user_email_verification', FALSE);

    // Make sure message doesn't appear on registration page (default).
    $this
      ->drupalGet('user/register');
    $this
      ->assertNoText('User limit (active/allowed)', 'User limit message hidden.');

    // Enable message and make sure message appears.
    variable_set('user_limit_show_counts', 1);
    $this
      ->drupalGet('user/register');
    $this
      ->assertText('User limit (active/allowed): 1 / 2', 'User limit message displayed.');

    // Set up user/register form and submit it.
    $edit = array();
    $edit['name'] = $name = $this
      ->randomName();
    $edit['mail'] = $mail = $edit['name'] . '@example.com';
    $edit['pass[pass1]'] = $pass = '999999';
    $edit['pass[pass2]'] = $pass;
    $this
      ->drupalPost('user/register', $edit, t('Create new account'));
    $accounts = user_load_multiple(array(), array(
      'name' => $name,
      'mail' => $mail,
    ));
    $new_user = reset($accounts);
    $this
      ->assertText(t('Registration successful. You are now logged in.'), 'User registered successfully.');
    $this
      ->drupalLogout();

    // Visit 'user/register' page again, make sure error message appears.
    $this
      ->drupalGet('user/register');
    $this
      ->assertText(USER_LIMIT_DEFAULT_MESSAGE, 'User limit enforced on registration form.');
    $this
      ->assertNoField('name', '', 'Registration form not displayed when over limit.');

    // De-activate user 2.
    $account = user_load(2);
    $account->status = 0;
    user_save($account);

    // Try registering another user, and make sure it works.
    $edit = array();
    $edit['name'] = $name = $this
      ->randomName();
    $edit['mail'] = $mail = $edit['name'] . '@example.com';
    $edit['pass[pass1]'] = $pass = '999999';
    $edit['pass[pass2]'] = $pass;
    $this
      ->drupalPost('user/register', $edit, t('Create new account'));
    $accounts = user_load_multiple(array(), array(
      'name' => $name,
      'mail' => $mail,
    ));
    $new_user = reset($accounts);
    $this
      ->assertText(t('Registration successful. You are now logged in.'), 'User registered successfully with one deactivated user.');
    $this
      ->drupalLogout();

    // Count all users (active and not) towards limit.
    variable_set('user_limit_active', 0);

    // Make sure current count is now 3 (two active, one not).
    $this
      ->assertTrue(user_limit_count_users() == 3, 'Active user limit works properly.');

    // Visit 'user/register' page again, make sure error message appears.
    $this
      ->drupalGet('user/register');
    $this
      ->assertText(USER_LIMIT_DEFAULT_MESSAGE, 'User limit enforced on registration form.');
  }

}

Classes

Namesort descending Description
UserLimitUserTestCase Test the functionality of the Honeypot module for an admin user.