/** * Tests the encrypt & decrypt method. * * @covers ::__construct * @covers ::encrypt * @covers ::decrypt * @covers ::validate * * @dataProvider encryptionDataProvider */ public function testEncryptDecrypt($key, $valid_key) { // Set up expectations for Key. $this->key->expects($this->any())->method('getKeyValue')->will($this->returnValue($key)); if ($valid_key) { // Set up expectations for encryption method. $this->encryptionMethod->expects($this->once())->method('encrypt')->will($this->returnValue("encrypted_text")); $this->encryptionMethod->expects($this->once())->method('decrypt')->will($this->returnValue("decrypted_text")); // Set up expectations for encryption profile. $this->encryptionProfile->expects($this->any())->method('getEncryptionKey')->will($this->returnValue($this->key)); $this->encryptionProfile->expects($this->any())->method('getEncryptionMethod')->will($this->returnValue($this->encryptionMethod)); $this->encryptionProfile->expects($this->any())->method('validate')->will($this->returnValue(array())); } else { // Set up expectations for encryption profile. $this->encryptionProfile->expects($this->never())->method('getEncryptionKey'); $this->encryptionProfile->expects($this->never())->method('getEncryptionMethod'); $this->encryptionProfile->expects($this->any())->method('validate')->will($this->returnValue(array("Validation error"))); $this->setExpectedException('\\Drupal\\encrypt\\Exception\\EncryptException'); } $service = new EncryptService($this->encryptManager, $this->keyRepository); $encrypted_text = $service->encrypt("text_to_encrypt", $this->encryptionProfile); $decrypted_text = $service->decrypt("text_to_decrypt", $this->encryptionProfile); if ($valid_key) { $this->assertEquals("encrypted_text", $encrypted_text); $this->assertEquals("decrypted_text", $decrypted_text); } }
/** * Tests the getEncryptionKeyValue() method. * * @covers ::getEncryptionKeyValue * * @dataProvider encryptionKeyValueDataProvider */ public function testGetEncryptionKeyValue($key, $valid_key) { // Set up expectations for the encryption manager. $this->encryptManager->expects($this->any())->method('createInstance')->with($this->equalTo('test_encryption_method'))->will($this->returnValue($this->encryptionMethod)); // Set up a mock for the EncryptService class to mock some methods. $encrypt_service = $this->getMockBuilder('\\Drupal\\encrypt\\EncryptService')->setMethods(['getEncryptionMethod', 'loadEncryptionProfileKey'])->setConstructorArgs(array($this->encryptManager, $this->keyRepository))->getMock(); // Set up expectations for encryption method. if ($valid_key) { $this->encryptionMethod->expects($this->once())->method('encrypt')->will($this->returnValue("encrypted_text")); $this->encryptionMethod->expects($this->once())->method('checkDependencies')->will($this->returnValue(array())); $encrypt_service->expects($this->once())->method('getEncryptionMethod')->will($this->returnValue($this->encryptionMethod)); } else { $this->encryptionMethod->expects($this->never())->method('encrypt'); $this->encryptionMethod->expects($this->once())->method('checkDependencies')->will($this->returnValue(array("Dependency error"))); $this->setExpectedException('\\Drupal\\encrypt\\Exception\\EncryptException'); $encrypt_service->expects($this->never())->method('getEncryptionMethod'); } // Set up expectation for handling of encryption profile by // the getEncryptionKeyValue() method. $this->encryptionProfile->expects($this->once())->method('getEncryptionMethod')->will($this->returnValue("test_encryption_method")); $encrypt_service->expects($this->once())->method('loadEncryptionProfileKey')->with($this->encryptionProfile)->will($this->returnValue($key)); // Call getEncryptionKeyValue() through the public encrypt() method. $encrypted_text = $encrypt_service->encrypt("text_to_encrypt", $this->encryptionProfile); if ($valid_key) { $this->assertEquals("encrypted_text", $encrypted_text); } }