Commit f899797d174ce9709d51c80e3142b2e382c55beb

Authored by Christian Herdtweck
1 parent 410baa02

tests: fix & extend olevba crypto test

VBA stomping warning might occur here
Showing 1 changed file with 17 additions and 6 deletions
tests/olevba/test_crypto.py
@@ -40,7 +40,9 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase): @@ -40,7 +40,9 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase):
40 exclude_stderr=True) 40 exclude_stderr=True)
41 data = json.loads(output, object_pairs_hook=OrderedDict) 41 data = json.loads(output, object_pairs_hook=OrderedDict)
42 # debug: json.dump(data, sys.stdout, indent=4) 42 # debug: json.dump(data, sys.stdout, indent=4)
43 - self.assertEqual(len(data), 3) 43 + self.assertIn(len(data), (3, 4))
  44 +
  45 + # first 2 parts: general info about script and file
44 self.assertIn('script_name', data[0]) 46 self.assertIn('script_name', data[0])
45 self.assertIn('version', data[0]) 47 self.assertIn('version', data[0])
46 self.assertEqual(data[0]['type'], 'MetaInformation') 48 self.assertEqual(data[0]['type'], 'MetaInformation')
@@ -49,15 +51,24 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase): @@ -49,15 +51,24 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase):
49 self.assertEqual(data[1]['analysis'], None) 51 self.assertEqual(data[1]['analysis'], None)
50 self.assertEqual(data[1]['macros'], []) 52 self.assertEqual(data[1]['macros'], [])
51 self.assertEqual(data[1]['type'], 'OLE') 53 self.assertEqual(data[1]['type'], 'OLE')
52 - self.assertEqual(data[2]['container'], example_file)  
53 - self.assertNotEqual(data[2]['file'], example_file)  
54 - self.assertEqual(data[2]['type'], "OpenXML")  
55 - analysis = data[2]['analysis'] 54 + self.assertTrue(data[1]['json_conversion_successful'])
  55 +
  56 + # possible VBA stomping warning
  57 + if len(data) == 4:
  58 + self.assertEqual(data[2]['type'], 'msg')
  59 + self.assertIn('VBA stomping', data[2]['msg'])
  60 +
  61 + # last part is the actual result
  62 + self.assertEqual(data[-1]['container'], example_file)
  63 + self.assertNotEqual(data[-1]['file'], example_file)
  64 + self.assertEqual(data[-1]['type'], "OpenXML")
  65 + analysis = data[-1]['analysis']
56 self.assertEqual(analysis[0]['type'], 'AutoExec') 66 self.assertEqual(analysis[0]['type'], 'AutoExec')
57 self.assertEqual(analysis[0]['keyword'], 'Auto_Open') 67 self.assertEqual(analysis[0]['keyword'], 'Auto_Open')
58 - macros = data[2]['macros'] 68 + macros = data[-1]['macros']
59 self.assertEqual(macros[0]['vba_filename'], 'Modul1.bas') 69 self.assertEqual(macros[0]['vba_filename'], 'Modul1.bas')
60 self.assertIn('Sub Auto_Open()', macros[0]['code']) 70 self.assertIn('Sub Auto_Open()', macros[0]['code'])
  71 + self.assertTrue(data[-1]['json_conversion_successful'])
61 72
62 73
63 if __name__ == '__main__': 74 if __name__ == '__main__':