baidu_tongji-8.x-1.x-dev/src/BaiduAnalyticsPermissionsTest.php

src/BaiduAnalyticsPermissionsTest.php
<?php
namespace Drupal\baidu_analytics;

/**
 * Test Baidu Analytics permissisons.
 */
class BaiduAnalyticsPermissionsTest extends BaiduAnalyticsTestCase {

  /**
   * Implements DrupalWebTestCase::getInfo().
   */
  public static function getInfo() {
    return array(
      'name' => 'Baidu Analytics permissions tests',
      'description' => 'Test the permissions added by the module: <em>administer baidu analytics</em>, <em>opt-in or out of tracking</em>, <em>use PHP for tracking visibility</em>.<br/>Test the <em>Web Property ID</em> field validation: required and validate exactly 32 lower case hexadecimal characters.<br/>Test <em>opt-in or out of tracking</em> setting for users in the edit account page.',
      'group' => 'Baidu Analytics',
    );
  }

  /**
   * Enable modules and create user with specific permissions.
   */
  public function setUp() {
    // Include the PHP Filter module for this test case.
    parent::setUp('php');

    // Create and authenticate test user with all permissions.
    $permissions = array(
      'access administration pages',
      'opt-in or out of tracking',
      'administer baidu analytics',
      'use PHP for tracking visibility',
    );
    $this->privilegedUser = $this->drupalCreateUser($permissions);
    $this->drupalLogin($this->privilegedUser);
  }

  /**
   * Test Baidu Analytics permissions and settings form validation.
   */
  public function testBaiduAnalyticsPemissions() {
    // Browse to the Baidu Analytics settings form page.
    $this->drupalGet('admin/config/system/baidu_analytics');
    // Check if expected Web Property ID field is displayed.
    $this->assertFieldByName('baidu_analytics_account', '', '[testBaiduAnalyticsPemissions]: Settings page displayed and the <em>Web Property ID</em> field is displayed correctly.');
    // Check if expected PHP Filter option is displayed.
    $this->assertRaw('Pages on which this PHP code returns <code>TRUE</code> (experts only)', '[testBaiduAnalyticsPemissions]: <em>PHP code visibility</em> setting is allowed and displayed correctly.');

    // Check required Web Property ID field.
    $edit['baidu_analytics_account'] = '';
    $this->drupalPost('admin/config/system/baidu_analytics', $edit, t('Save configuration'));
    $this->assertRaw(t('Web Property ID field is required.'), '[testBaiduAnalyticsPemissions]: <em>Web Property ID</em> field is required.');

    // Check Web Property ID field validation.
    $edit['baidu_analytics_account'] = $this->randomName(2);
    $this->drupalPost('admin/config/system/baidu_analytics', $edit, t('Save configuration'));
    $this->assertRaw(t('A valid Baidu Analytics Web Property ID should have exactly 32 lower case hexadecimal characters (only allowed: 0 to 9 and a to f).'), format_string('[testBaiduAnalyticsPemissions]: Invalid <em>Web Property ID</em> field value, provided string is <strong>too short</strong>: @code.', array('@code' => $edit['baidu_analytics_account'])));
    // Test a string of 32 characters but with uppercase letters.
    $edit['baidu_analytics_account'] = 'F0123456789abcdef0123456789abcde';
    $this->drupalPost('admin/config/system/baidu_analytics', $edit, t('Save configuration'));
    $this->assertRaw(t('A valid Baidu Analytics Web Property ID should have exactly 32 lower case hexadecimal characters (only allowed: 0 to 9 and a to f).'), format_string('[testBaiduAnalyticsPemissions]: Invalid <em>Web Property ID</em> containing <strong>uppercase</strong> characters: @code.', array('@code' => $edit['baidu_analytics_account'])));

    // Test: use PHP for tracking visibility.
    // Logout and login with another user with fewer permissions.
    $this->drupalLogout();
    $permissions = array(
      'access administration pages',
      'opt-in or out of tracking',
      'administer baidu analytics',
    );
    $this->privilegedUser = $this->drupalCreateUser($permissions);
    $this->drupalLogin($this->privilegedUser);

    // Enough permissions to get to the settings form page.
    $this->drupalGet('admin/config/system/baidu_analytics');
    // Check if expected Web Property ID field is displayed.
    $this->assertFieldByName('baidu_analytics_account', '', '[testBaiduAnalyticsPemissions]: Settings page displayed and theWeb Property ID field is displayed correctly.');
    // No more permissions to use PHP code for page visibility settings.
    $this->assertNoRaw('Pages on which this PHP code returns <code>TRUE</code> (experts only)', '[testBaiduAnalyticsPemissions]: <em>PHP code visibility</em> setting is <strong>not</strong> allowed and <strong>not</strong> displayed. User does not have the permission: <em>use PHP for tracking visibility</em>.');

    // Test: administer baidu analytics.
    // Logout and login with another user with fewer permissions.
    $this->drupalLogout();
    $permissions = array(
      'access administration pages',
      'opt-in or out of tracking',
    );
    $this->privilegedUser = $this->drupalCreateUser($permissions);
    $this->drupalLogin($this->privilegedUser);

    // Not enough permissions to get to the settings form page.
    $this->drupalGet('admin/config/system/baidu_analytics');
    // Check if expected Web Property ID field is displayed.
    $this->assertNoFieldByName('baidu_analytics_account', '', '[testBaiduAnalyticsPemissions]: Settings page is <strong>not</strong> displayed and access to the page is denied. User does not have the permission: <em>administer baidu analytics</em>.');
    $this->assertResponse(403, '[testBaiduAnalyticsPemissions]: Received a <strong>403</strong> response code for the Baidu Analytics settings form: <strong>Access denied</strong>.');

    // Test: opt-in or out of tracking.
    // Tracking on by default, users with permission can opt out.
    variable_set('baidu_analytics_custom', 1);
    $this->drupalGet("user/{$this->privilegedUser->uid}/edit");
    $this->assertFieldByName('baidu_analytics[custom]', TRUE, '[testBaiduAnalyticsPemissions]: <em>Enable user tracking</em> (opt-in or out) setting is displayed correctly in user edit account page and <strong>enabled</strong> by default.');

    // Check tracking off by default, users with permission can opt in.
    variable_set('baidu_analytics_custom', 2);
    $this->drupalGet("user/{$this->privilegedUser->uid}/edit");
    $this->assertFieldByName('baidu_analytics[custom]', FALSE, '[testBaiduAnalyticsPemissions]: <em>Enable user tracking</em> (opt-in or out) setting is displayed correctly in user edit account page and <strong>disabled</strong> by default.');

    // Logout and login with another user with fewer permissions.
    $this->drupalLogout();
    $permissions = array(
      'access administration pages',
    );
    $this->privilegedUser = $this->drupalCreateUser($permissions);
    $this->drupalLogin($this->privilegedUser);

    // Not enough permissions to opt-in or out of tracking.
    $this->drupalGet("user/{$this->privilegedUser->uid}/edit");
    $this->assertNoFieldByName('baidu_analytics[custom]', TRUE, '[testBaiduAnalyticsPemissions]: <em>Enable user tracking</em> (opt-in or out) setting is <strong>not</strong> displayed in user edit account page. User does not have the permission: <em>opt-in or out of tracking</em>.');
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc