public function NodeAccessLanguageAwareCombinationTest::setUp

Sets up a Drupal site for running functional and integration tests.

Generates a random database prefix and installs Drupal with the specified installation profile in Drupal\simpletest\WebTestBase::$profile into the prefixed database. Afterwards, installs any additional modules specified by the test.

After installation all caches are flushed and several configuration values are reset to the values of the parent site executing the test, since the default values may be incompatible with the environment in which tests are being executed.

Parameters

...: List of modules to enable for the duration of the test. This can be either a single array or a variable number of string arguments.

Overrides NodeTestBase::setUp

See also

Drupal\simpletest\WebTestBase::prepareDatabasePrefix()

Drupal\simpletest\WebTestBase::changeDatabasePrefix()

Drupal\simpletest\WebTestBase::prepareEnvironment()

File

drupal/core/modules/node/lib/Drupal/node/Tests/NodeAccessLanguageAwareCombinationTest.php, line 46
Contains \Drupal\node\Tests\NodeAccessLanguageAwareCombinationTest.

Class

NodeAccessLanguageAwareCombinationTest
Tests node access with multiple languages and access control modules.

Namespace

Drupal\node\Tests

Code

public function setUp() {
  parent::setUp();

  // After enabling a node access module, the access table has to be rebuild.
  node_access_rebuild();

  // Add Hungarian and Catalan.
  $language = new Language(array(
    'langcode' => 'hu',
  ));
  language_save($language);
  $language = new Language(array(
    'langcode' => 'ca',
  ));
  language_save($language);

  // Create a normal authenticated user.
  $this->web_user = $this
    ->drupalCreateUser(array(
    'access content',
  ));

  // Load the user 1 user for later use as an admin user with permission to
  // see everything.
  $this->admin_user = user_load(1);

  // The node_access_test_language module allows individual translations of a
  // node to be marked private (not viewable by normal users), and the
  // node_access_test module allows whole nodes to be marked private. (In a
  // real-world implementation, hook_node_access_records_alter() might be
  // implemented by one or both modules to enforce that private nodes or
  // translations are always private, but we want to test the default,
  // additive behavior of node access).
  // Create six Hungarian nodes with Catalan translations:
  // 1. One public with neither language marked as private.
  // 2. One private with neither language marked as private.
  // 3. One public with only the Hungarian translation private.
  // 4. One public with only the Catalan translation private.
  // 5. One public with both the Hungarian and Catalan translations private.
  // 6. One private with both the Hungarian and Catalan translations private.
  $this->nodes['public_both_public'] = $node = $this
    ->drupalCreateNode(array(
    'body' => array(
      array(),
    ),
    'langcode' => 'hu',
    'field_private' => array(
      array(
        'value' => 0,
      ),
    ),
    'private' => FALSE,
  ));
  $translation = $node
    ->getTranslation('ca');
  $translation->field_private[0]->value = 0;
  $node
    ->save();
  $this->nodes['private_both_public'] = $node = $this
    ->drupalCreateNode(array(
    'body' => array(
      array(),
    ),
    'langcode' => 'hu',
    'field_private' => array(
      array(
        'value' => 0,
      ),
    ),
    'private' => TRUE,
  ));
  $translation = $node
    ->getTranslation('ca');
  $translation->field_private[0]->value = 0;
  $node
    ->save();
  $this->nodes['public_hu_private'] = $node = $this
    ->drupalCreateNode(array(
    'body' => array(
      array(),
    ),
    'langcode' => 'hu',
    'field_private' => array(
      array(
        'value' => 1,
      ),
    ),
    'private' => FALSE,
  ));
  $translation = $node
    ->getTranslation('ca');
  $translation->field_private[0]->value = 0;
  $node
    ->save();
  $this->nodes['public_ca_private'] = $node = $this
    ->drupalCreateNode(array(
    'body' => array(
      array(),
    ),
    'langcode' => 'hu',
    'field_private' => array(
      array(
        'value' => 0,
      ),
    ),
    'private' => FALSE,
  ));
  $translation = $node
    ->getTranslation('ca');
  $translation->field_private[0]->value = 1;
  $node
    ->save();
  $this->nodes['public_both_private'] = $node = $this
    ->drupalCreateNode(array(
    'body' => array(
      array(),
    ),
    'langcode' => 'hu',
    'field_private' => array(
      array(
        'value' => 1,
      ),
    ),
    'private' => FALSE,
  ));
  $translation = $node
    ->getTranslation('ca');
  $translation->field_private[0]->value = 1;
  $node
    ->save();
  $this->nodes['private_both_private'] = $node = $this
    ->drupalCreateNode(array(
    'body' => array(
      array(),
    ),
    'langcode' => 'hu',
    'field_private' => array(
      array(
        'value' => 1,
      ),
    ),
    'private' => TRUE,
  ));
  $translation = $node
    ->getTranslation('ca');
  $translation->field_private[0]->value = 1;
  $node
    ->save();
  $this->nodes['public_no_language_private'] = $this
    ->drupalCreateNode(array(
    'field_private' => array(
      array(
        'value' => 1,
      ),
    ),
    'private' => FALSE,
  ));
  $this->nodes['public_no_language_public'] = $this
    ->drupalCreateNode(array(
    'field_private' => array(
      array(
        'value' => 0,
      ),
    ),
    'private' => FALSE,
  ));
  $this->nodes['private_no_language_private'] = $this
    ->drupalCreateNode(array(
    'field_private' => array(
      array(
        'value' => 1,
      ),
    ),
    'private' => TRUE,
  ));
  $this->nodes['private_no_language_public'] = $this
    ->drupalCreateNode(array(
    'field_private' => array(
      array(
        'value' => 1,
      ),
    ),
    'private' => TRUE,
  ));
}