turbinia
turbinia copied to clipboard
Enforcing REQUIRED_ATTRIBUTES on __init__ for Evidence classes breaks unit tests
Assumption: We may want to start enforcing REQUIRED_ATTRIBUTES by calling Evidence.validate()
in the __init__()
method to ensure the required attributes are passed to the constructors.
Expected result: Creating objects that have REQUIRED_ATTRIBUTES means the attributes must passed to the constructor. Adjusting unit tests for that should be straightforward.
What actually happens:
If we enforce REQUIRED_ATTRIBUTES by calling validate() in the __init__
method of Evidence objects , this breaks turbinia/workers/workers_tests.py and other unit tests that depend on TestTurbiniaTaskBase
. It happens because the setUp()
method of TestTurbiniaTaskBase
creates a generic evidence object with no arguments, so the required attributes are not set.
Example
======================================================================
ERROR: Test volatility task run with no output.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/workspaces/turbinia/turbinia/workers/volatility_test.py", line 31, in setUp
super(VolatilityTaskTest, self).setUp(
File "/workspaces/turbinia/turbinia/workers/workers_test.py", line 70, in setUp
self.evidence = self.evidence_class(source_path=test_disk_path)
File "/workspaces/turbinia/turbinia/evidence.py", line 964, in __init__
super(RawMemory, self).__init__(*args, **kwargs)
File "/workspaces/turbinia/turbinia/evidence.py", line 269, in __init__
self.validate()
File "/workspaces/turbinia/turbinia/evidence.py", line 513, in validate
raise TurbiniaException(message)
turbinia.TurbiniaException: Evidence validation failed: Required attribute module_list for class RawMemory is not set. Please check original request.
======================================================================
======================================================================
ERROR: Tests Bulk Extractor report generation.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/workspaces/turbinia/turbinia/workers/bulk_extractor_test.py", line 37, in setUp
super(BulkExtractorTaskTest, self).setUp(
File "/workspaces/turbinia/turbinia/workers/workers_test.py", line 70, in setUp
self.evidence = self.evidence_class(source_path=test_disk_path)
File "/workspaces/turbinia/turbinia/evidence.py", line 562, in __init__
super(CompressedDirectory, self).__init__(*args, **kwargs)
File "/workspaces/turbinia/turbinia/evidence.py", line 269, in __init__
self.validate()
File "/workspaces/turbinia/turbinia/evidence.py", line 513, in validate
raise TurbiniaException(message)
turbinia.TurbiniaException: Evidence validation failed: Required attribute compressed_directory for class BulkExtractorOutput is not set. Please check original request.
======================================================================