You are here

public function EncryptEncryptDecryptTest::testMcryptEncryptDecrypt in Encrypt 7.2

Same name and namespace in other branches
  1. 7.3 encrypt.test \EncryptEncryptDecryptTest::testMCryptEncryptDecrypt()
  2. 7 encrypt.test \EncryptEncryptDecryptTest::testMCryptEncryptDecrypt()

Test encryption and decryption with the "Mcrypt AES (CBC Mode)" method.

Pretty much the same as the "None" tests. See that method for more detailed comments.

File

./encrypt.test, line 60
Tests for the project Encrypt.

Class

EncryptEncryptDecryptTest
Test basic encryption and decryption.

Code

public function testMcryptEncryptDecrypt() {
  if (function_exists('mcrypt_encrypt')) {
    $random = $this
      ->randomName(10);
    $encrypted = encrypt($random, array(), 'mcrypt_aes_cbc');

    // Test that the original value does not equal the encrypted
    // value (i.e. that the data is actually being encrypted).
    $this
      ->assertTrue(strpos($encrypted, 'a:') === 0, t('Mcrypt AES (CBC Mode): The encrypted value is a serialized array.'));
    $encryptedArray = unserialize($encrypted);
    $this
      ->assertNotEqual($random, $encryptedArray['text'], t('Mcrypt AES (CBC Mode): A value, encrypted, does not equal itself.'));
    $this
      ->assertEqual($encryptedArray['method'], 'mcrypt_aes_cbc', t('Mcrypt AES (CBC Mode): Encryption method stored correctly.'));
    $decrypted = decrypt($encrypted);
    $this
      ->assertEqual($random, $decrypted, t('Mcrypt AES (CBC Mode): A value, decrypted, equals itself.'));
  }
  else {
    debug('Mcrypt extension not present. Skipping tests.');
  }
}