Change unit tests to check for expected exception
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 27 Jan 2020 15:04:16 +0000 (16:04 +0100)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 27 Jan 2020 17:23:24 +0000 (18:23 +0100)
It would be an error if the expected exception is not thrown
f.e. for re-use of IVs.

testing/test_crypto.py
testing/test_deltatar.py

index 8ed4748..a038aa0 100644 (file)
@@ -94,39 +94,31 @@ class AESGCMTest (CryptoLayerTest):
         """
         Either key (+nacl) or password must be supplied, not both.
         """
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # neither key nor pw
             encryptor = crypto.Encrypt (TEST_VERSION,
                                         TEST_PARAMVERSION,
                                         nacl=TEST_STATIC_NACL)
-        except crypto.InvalidParameter: # neither key nor pw
-            pass
 
         password = str (os.urandom (42))
         key      =      os.urandom (16)  # scrypt sized
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # both key and pw
             encryptor = crypto.Encrypt (TEST_VERSION,
                                         TEST_PARAMVERSION,
                                         password=password,
                                         key=key,
                                         nacl=TEST_STATIC_NACL)
-        except crypto.InvalidParameter: # both key and pw
-            pass
 
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # key, but salt missing
             encryptor = crypto.Encrypt (TEST_VERSION,
                                         TEST_PARAMVERSION,
                                         key=key,
                                         nacl=None)
-        except crypto.InvalidParameter: # key, but salt missing
-            pass
 
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # empty pw
             encryptor = crypto.Encrypt (TEST_VERSION,
                                         TEST_PARAMVERSION,
                                         password=b"",
                                         nacl=TEST_STATIC_NACL)
-        except crypto.InvalidParameter: # empty pw
-            pass
 
 
     def test_crypto_aes_gcm_enc_header_size (self):
@@ -167,20 +159,14 @@ class AESGCMTest (CryptoLayerTest):
         decryptor = crypto.Decrypt (password=password)
         decryptor = crypto.Decrypt (key=key)
 
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # both password and key
             decryptor = crypto.Decrypt (password=password, key=key)
-        except crypto.InvalidParameter: # both password and key
-            pass
 
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # neither password nor key
             decryptor = crypto.Decrypt (password=None, key=None)
-        except crypto.InvalidParameter: # neither password nor key
-            pass
 
-        try:
+        with self.assertRaises (crypto.InvalidParameter):       # # empty password
             decryptor = crypto.Decrypt (password="")
-        except crypto.InvalidParameter: # empty password
-            pass
 
 
     def test_crypto_aes_gcm_dec_simple (self):
@@ -225,10 +211,8 @@ class AESGCMTest (CryptoLayerTest):
         decryptor      = crypto.Decrypt (password=password, fixedparts=fixed)
         decryptor.next (header)
         plaintext      = decryptor.process (ciphertext)
-        try:
+        with self.assertRaises (crypto.InvalidGCMTag):
             _ = decryptor.done ()
-        except crypto.InvalidGCMTag:
-            pass
 
 
     def test_crypto_aes_gcm_enc_multicnk (self):
@@ -551,10 +535,8 @@ class AESGCMTest (CryptoLayerTest):
             pt += cnk
             off += cnksiz
 
-        try:
+        with self.assertRaises (crypto.InvalidGCMTag):
             _ = decryptor.done ()
-        except crypto.InvalidGCMTag:
-            pass
 
 
     def test_crypto_aes_gcm_dec_iv_reuse (self):
@@ -613,10 +595,8 @@ class AESGCMTest (CryptoLayerTest):
 
         decr_pt_1 = dec (hdr_1, ct_1)
         decr_pt_2 = dec (hdr_2, ct_2) # good header, different IV
-        try:
+        with self.assertRaises (crypto.DuplicateIV):        # bad header, reuse detected
             decr_pt_2 = dec (hdr_2_mod, ct_2)
-        except crypto.DuplicateIV: # bad header, reuse detected
-            pass
 
 
 class HeaderTest (CryptoLayerTest):
@@ -654,10 +634,8 @@ class HeaderTest (CryptoLayerTest):
         assert ok is True
         assert hdr is not None
         hdr += b"-junk"
-        try:
+        with self.assertRaises (crypto.InvalidHeader):
             _ = crypto.hdr_read (hdr)
-        except crypto.InvalidHeader:
-            pass
 
 
     def test_crypto_fmt_hdr_read_leading_garbage (self):
@@ -667,10 +645,8 @@ class HeaderTest (CryptoLayerTest):
         assert ok is True
         assert hdr is not None
         hdr = b"junk-" + hdr
-        try:
+        with self.assertRaises (crypto.InvalidHeader):
             _ = crypto.hdr_read (hdr)
-        except crypto.InvalidHeader:
-            pass
 
 
     def test_crypto_fmt_hdr_inner_garbage (self):
@@ -678,8 +654,6 @@ class HeaderTest (CryptoLayerTest):
         ok, hdr = crypto.hdr_make (meta)
         assert ok
         data = hdr[:len(hdr)//2] + b"junk-" + hdr[len(hdr)//2:]
-        try:
+        with self.assertRaises (crypto.InvalidHeader):
             _ = crypto.hdr_read (data)
-        except crypto.InvalidHeader:
-            pass
 
index a7b3d92..9ae02a7 100644 (file)
@@ -248,11 +248,9 @@ class DeltaTarTest(BaseTest):
             f = "source_dir2/dummy_%rd" % i
             self.hash [f] = self.create_file (f, i)
 
-        try:
+        with self.assertRaises (crypto.InvalidFileCounter):
             deltatar.create_full_backup \
                     (source_path="source_dir2", backup_path="backup_dir")
-        except crypto.InvalidFileCounter:
-            pass
         shutil.rmtree ("source_dir2")