file_encrypt-8.x-1.x-dev/tests/src/Kernel/FileEncryptTestBase.php
tests/src/Kernel/FileEncryptTestBase.php
<?php namespace Drupal\Tests\file_encrypt\Kernel; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\Site\Settings; use Drupal\encrypt\Entity\EncryptionProfile; use Drupal\file_encrypt\EncryptStreamWrapper; use Drupal\KernelTests\KernelTestBase; use Drupal\key\Entity\Key; /** * Base test class for all kind of file encrypt tests. * * @requires module encrypt */ abstract class FileEncryptTestBase extends KernelTestBase { /** * {@inheritdoc} */ protected static $modules = ['file_encrypt', 'encrypt', 'key', 'encrypt_test']; /** * A list of testkeys. * * @var \Drupal\key\Entity\Key[] */ protected $testKeys; /** * A list of test encryption profiles. * * @var \Drupal\encrypt\Entity\EncryptionProfile[] */ protected $encryptionProfiles; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $this->createTestKeys(); $this->createTestEncryptionProfiles(); mkdir('vfs://root/encrypt_test'); $settings = Settings::getInstance() ? Settings::getAll() : []; $settings['encrypted_file_path'] = 'vfs://root/encrypt_test'; new Settings($settings); } /** * {@inheritdoc} */ public function register(ContainerBuilder $container) { parent::register($container); $container->register('stream_wrapper.' . EncryptStreamWrapper::SCHEME, EncryptStreamWrapper::class) ->addTag('stream_wrapper', ['scheme' => EncryptStreamWrapper::SCHEME]); } /** * Creates test keys for usage in tests. */ protected function createTestKeys() { // Create a 128bit testkey. $key_128 = Key::create([ 'id' => 'testing_key_128', 'label' => 'Testing Key 128 bit', 'key_type' => "encryption", 'key_type_settings' => ['key_size' => '128'], 'key_provider' => 'config', 'key_provider_settings' => ['key_value' => 'mustbesixteenbit'], ]); $key_128->save(); $this->testKeys['testing_key_128'] = $key_128; // Create a 256bit testkey. $key_256 = Key::create([ 'id' => 'testing_key_256', 'label' => 'Testing Key 256 bit', 'key_type' => "encryption", 'key_type_settings' => ['key_size' => '256'], 'key_provider' => 'config', 'key_provider_settings' => ['key_value' => 'mustbesixteenbitmustbesixteenbit'], ]); $key_256->save(); $this->testKeys['testing_key_256'] = $key_256; } /** * Creates test encryption profiles for usage in tests. */ protected function createTestEncryptionProfiles() { // Create test encryption profiles. $encryption_profile_1 = EncryptionProfile::create([ 'id' => 'encryption_profile_1', 'label' => 'Encryption profile 1', 'encryption_method' => 'test_encryption_method', 'encryption_key' => $this->testKeys['testing_key_128']->id(), ]); $encryption_profile_1->save(); $this->encryptionProfiles['encryption_profile_1'] = $encryption_profile_1; $encryption_profile_2 = EncryptionProfile::create([ 'id' => 'encryption_profile_2', 'label' => 'Encryption profile 2', 'encryption_method' => 'config_test_encryption_method', 'encryption_method_configuration' => ['mode' => 'CFB'], 'encryption_key' => $this->testKeys['testing_key_256']->id(), ]); $encryption_profile_2->save(); $this->encryptionProfiles['encryption_profile_2'] = $encryption_profile_2; } }