def setUp(self): self.cryptor = Cryptor()
class CryptorTest(unittest.TestCase): def setUp(self): self.cryptor = Cryptor() def test_encrypt_and_decrypt_should_be_reversible(self): # setup value = "Roses are red\nViolets are blue" # test encrypted_value = self.cryptor.encrypt(TEST_KEY, value) decrypted_value = self.cryptor.decrypt(TEST_KEY, encrypted_value) # assert self.assertTrue(encrypted_value) self.assertTrue(decrypted_value) self.assertEqual(value, decrypted_value) def test_encrypt_verified_and_decrypt_verified_should_be_reversible(self): # setup value = "Roses are red\nViolets are blue" # test encrypted_value = self.cryptor.encrypt(TEST_KEY, value, verify=True) decrypted_value = self.cryptor.decrypt(TEST_KEY, encrypted_value, verify=True) # assert self.assertTrue(encrypted_value) self.assertTrue(decrypted_value) self.assertEqual(value, decrypted_value) def test_decrypt_should_raise_value_error_if_bad_key(self): # setup encrypted_value = self.cryptor.encrypt(TEST_KEY, "You are my sunshine...", verify=True) # test with self.assertRaises(ValueError): self.cryptor.decrypt("bad key!", encrypted_value, verify=True) def test_decrypt_unverified_should_not_raise_value_error_if_bad_key(self): # setup encrypted_value = self.cryptor.encrypt(TEST_KEY, "You are my sunshine...") # test should not raise value error self.cryptor.decrypt("bad key!", encrypted_value) def test_verify_should_return_true_if_key_and_msg_are_valid(self): # setup digest_size = hmac.new("foo", digestmod=self.cryptor.digestmod).digest_size encrypted_value = self.cryptor.encrypt(TEST_KEY, "You are my sunshine...", verify=True) # test result = self.cryptor.verify(TEST_KEY, encrypted_value) # assert self.assertEqual(result, True) def test_verify_should_return_false_if_key_is_invalid(self): # setup encrypted_value = self.cryptor.encrypt(TEST_KEY, "You are my sunshine...", verify=True) # test result = self.cryptor.verify("bad key!", encrypted_value) # assert self.assertFalse(result) def test_digest_and_salt_should_be_unique_for_duplicate_encryptions(self): # setup test encrypted_value1 = self.cryptor.encrypt(TEST_KEY, "You are my sunshine...", verify=True) encrypted_value2 = self.cryptor.encrypt(TEST_KEY, "You are my sunshine...", verify=True) parsed1 = self.cryptor._parse(encrypted_value1, verified=True) parsed2 = self.cryptor._parse(encrypted_value2, verified=True) # assert self.assertNotEqual(parsed1['digest'], parsed2['digest']) self.assertNotEqual(parsed1['salt'], parsed2['salt'])