You are here

public function FeedsMapperFormatConfig::testWithLimitedPrivileges in Feeds 7.2

Tests the filter formats a user has access to.

File

tests/feeds_mapper_format_config.test, line 123
Contains FeedsMapperFormatConfig.

Class

FeedsMapperFormatConfig
Class for testing "Text format" mapping configuration on text fields.

Code

public function testWithLimitedPrivileges() {

  // Create content type with a field that uses a text format.
  $typename = $this
    ->createContentType(array(), array(
    'alpha' => array(
      'type' => 'text',
      'instance_settings' => array(
        'instance[settings][text_processing]' => 1,
      ),
    ),
  ));

  // Create a new user with limited privileges.
  $account = $this
    ->drupalCreateUser(array(
    'administer feeds',
  ));

  // Create filter format the user may use.
  $format1 = drupal_strtolower($this
    ->randomName());
  $edit1 = array(
    'format' => $format1,
    'name' => $this
      ->randomName(),
    // Authenticated users.
    'roles[2]' => TRUE,
  );
  $this
    ->drupalPost('admin/config/content/formats/add', $edit1, t('Save configuration'));

  // Create filter format the user may NOT use.
  $rid = $this
    ->drupalCreateRole(array());
  $format2 = drupal_strtolower($this
    ->randomName());
  $edit2 = array(
    'format' => $format2,
    'name' => $this
      ->randomName(),
    'roles[' . $rid . ']' => TRUE,
  );
  $this
    ->drupalPost('admin/config/content/formats/add', $edit2, t('Save configuration'));

  // Login as the user that may only use certain formats.
  $this
    ->drupalLogin($account);

  // Create importer and ensure the user can use the first format.
  $this
    ->createImporterConfiguration();
  $this
    ->setSettings('syndication', NULL, array(
    'content_type' => '',
    'import_period' => FEEDS_SCHEDULE_NEVER,
  ));
  $this
    ->setPlugin('syndication', 'FeedsFileFetcher');
  $this
    ->setPlugin('syndication', 'FeedsCSVParser');
  $this
    ->setSettings('syndication', 'FeedsNodeProcessor', array(
    'bundle' => $typename,
  ));
  $this
    ->addMappings('syndication', array(
    0 => array(
      'source' => 'alpha',
      'target' => 'field_alpha',
      'format' => $format1,
    ),
  ));

  // Check user can choose first, but not second format as an option.
  $this
    ->drupalPostAJAX(NULL, array(), 'mapping_settings_edit_0');
  $xpath = $this
    ->constructFieldXpath('name', 'config[0][settings][format]');
  $fields = $this
    ->xpath($xpath);
  $field = reset($fields);
  $format_options = $this
    ->getAllOptions($field);
  $format1_found = FALSE;
  $format2_found = FALSE;
  foreach ($format_options as $option) {
    if ($option['value'] == $format1) {
      $format1_found = TRUE;
    }
    if ($option['value'] == $format2) {
      $format2_found = TRUE;
    }
  }

  // Assert first format can be chosen.
  $this
    ->assertTrue($format1_found, format_string('Text format %format can be chosen.', array(
    '%format' => $format1,
  )));

  // Assert second format can NOT be chosen.
  $this
    ->assertFalse($format2_found, format_string('Text format %format can NOT be chosen.', array(
    '%format' => $format2,
  )));
}