turbinia icon indicating copy to clipboard operation
turbinia copied to clipboard

Enforcing REQUIRED_ATTRIBUTES on __init__ for Evidence classes breaks unit tests

Open jleaniz opened this issue 2 years ago • 0 comments

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.

======================================================================

jleaniz avatar Sep 02 '22 02:09 jleaniz