public function ConfigurableFieldTest::testEncryptFieldRevision in Field Encryption 3.0.x
Test encrypting fields with revisions.
This test also covers deletion of an encrypted field with existing data.
File
- tests/
src/ Functional/ ConfigurableFieldTest.php, line 120
Class
- ConfigurableFieldTest
- Tests field encryption.
Namespace
Drupal\Tests\field_encrypt\FunctionalCode
public function testEncryptFieldRevision() {
$this
->setFieldStorageSettings(TRUE);
// Save test entity.
$this
->createTestNode();
// Create a new revision for the entity.
$old_revision_id = $this->testNode
->getRevisionId();
$this->testNode
->setNewRevision(TRUE);
$this->testNode->field_test_single->value = "Lorem ipsum dolor sit amet revision.";
$this->testNode->field_test_single->summary = "Lorem ipsum revision.";
$multi_field = $this->testNode
->get('field_test_multi');
$multi_field_value = $multi_field
->getValue();
$multi_field_value[0]['value'] = "four";
$multi_field_value[1]['value'] = "five";
$multi_field_value[2]['value'] = "six";
$multi_field
->setValue($multi_field_value);
$this->testNode
->save();
// Ensure that the node revision has been created.
$this->entityTypeManager
->getStorage('node')
->resetCache([
$this->testNode
->id(),
]);
$this
->assertNotSame($this->testNode
->getRevisionId(), $old_revision_id, 'A new revision has been created.');
// Check if revision text is displayed unencrypted.
$this
->drupalGet('node/' . $this->testNode
->id());
$this
->assertSession()
->pageTextContains("Lorem ipsum dolor sit amet revision.");
$this
->assertSession()
->pageTextContains("four");
$this
->assertSession()
->pageTextContains("five");
$this
->assertSession()
->pageTextContains("six");
// Check if original text is displayed unencrypted.
$this
->drupalGet('node/' . $this->testNode
->id() . '/revisions/' . $old_revision_id . '/view');
$this
->assertSession()
->pageTextContains("Lorem ipsum dolor sit amet.");
$this
->assertSession()
->pageTextContains("one");
$this
->assertSession()
->pageTextContains("two");
$this
->assertSession()
->pageTextContains("three");
// Check values saved in the database.
$result = \Drupal::database()
->query("SELECT field_test_single_value FROM {node_revision__field_test_single} WHERE entity_id = :entity_id", [
':entity_id' => $this->testNode
->id(),
])
->fetchField();
$this
->assertEquals(ProcessEntities::ENCRYPTED_VALUE, $result);
$result = \Drupal::database()
->query("SELECT field_test_multi_value FROM {node_revision__field_test_multi} WHERE entity_id = :entity_id", [
':entity_id' => $this->testNode
->id(),
])
->fetchAll();
foreach ($result as $record) {
$this
->assertEquals(ProcessEntities::ENCRYPTED_VALUE, $record->field_test_multi_value);
}
$this
->drupalGet('admin/structure/types/manage/page/fields/node.page.field_test_multi/delete');
$this
->submitForm([], 'Delete');
}