diff --git a/core/tests/Drupal/Tests/Component/Utility/CryptTest.php b/core/tests/Drupal/Tests/Component/Utility/CryptTest.php index 7eb10ce..9bde39f 100644 --- a/core/tests/Drupal/Tests/Component/Utility/CryptTest.php +++ b/core/tests/Drupal/Tests/Component/Utility/CryptTest.php @@ -14,6 +14,9 @@ * Tests random bytes generation. * * @see \Drupal\Component\Utility\Crypt + * + * @group Drupal + * @group Crypt */ class CryptTest extends UnitTestCase { @@ -37,4 +40,69 @@ public function testRandomBytes() { } } + /** + * Tests \Drupal\Component\Utility\Crypt::hashBase64(). + * + * @param string $data + * Data to hash. + * @param string $expected_hash + * Expected result from hashing $data. + * + * @dataProvider providerTestHashBase64 + */ + public function testHashBase64($data, $expected_hash) { + $hash = Crypt::hashBase64($data); + $this->assertEquals($expected_hash, $hash, 'The correct hash was not calculated.'); + } + + /** + * Tests \Drupal\Component\Utility\Crypt::hmacBase64(). + * + * @param string $data + * Data to hash. + * @param string $key + * Key to use in hashing process. + * @param string $expected_hmac + * Expected result from hashing $data using $key. + * + * @dataProvider providerTestHmacBase64 + */ + public function testHmacBase64($data, $key, $expected_hmac) { + $hmac = Crypt::hmacBase64($data, $key); + $this->assertEquals($expected_hmac, $hmac, 'The correct hmac was not calculated.'); + } + + /** + * Provides data for self::testHashBase64(). + * + * @return array Test data. + */ + public function providerTestHashBase64() { + return array( + array( + 'data' => 'The SHA (Secure Hash Algorithm) is one of a number of cryptographic hash functions. A cryptographic hash is like a signature for a text or a data file. SHA-256 algorithm generates an almost-unique, fixed size 256-bit (32-byte) hash. Hash is a one way function – it cannot be decrypted back. This makes it suitable for password validation, challenge hash authentication, anti-tamper, digital signatures.', + 'expectedHash' => '034rT6smZAVRxpq8O98cFFNLIVx_Ph1EwLZQKcmRR_s', + ), + array( + 'data' => 'SHA-256 is one of the successor hash functions to SHA-1, and is one of the strongest hash functions available.', + 'expected_hash' => 'yuqkDDYqprL71k4xIb6K6D7n76xldO4jseRhEkEE6SI', + ), + ); + } + + /** + * Provides data for self::testHmacBase64(). + * + * @return array Test data. + */ + public function providerTestHmacBase64() { + return array( + array( + 'data' => 'Calculates a base-64 encoded, URL-safe sha-256 hmac.', + 'key' => 'secret-key', + 'expected_hmac' => '2AaH63zwjhekWZlEpAiufyfhAHIzbQhl9Hd9oCi3_c8', + ), + ); + } + }