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 40 exclude_stderr=True)
41 41 data = json.loads(output, object_pairs_hook=OrderedDict)
42 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 46 self.assertIn('script_name', data[0])
45 47 self.assertIn('version', data[0])
46 48 self.assertEqual(data[0]['type'], 'MetaInformation')
... ... @@ -49,15 +51,24 @@ class OlevbaCryptoWriteProtectTest(unittest.TestCase):
49 51 self.assertEqual(data[1]['analysis'], None)
50 52 self.assertEqual(data[1]['macros'], [])
51 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 66 self.assertEqual(analysis[0]['type'], 'AutoExec')
57 67 self.assertEqual(analysis[0]['keyword'], 'Auto_Open')
58   - macros = data[2]['macros']
  68 + macros = data[-1]['macros']
59 69 self.assertEqual(macros[0]['vba_filename'], 'Modul1.bas')
60 70 self.assertIn('Sub Auto_Open()', macros[0]['code'])
  71 + self.assertTrue(data[-1]['json_conversion_successful'])
61 72  
62 73  
63 74 if __name__ == '__main__':
... ...