cti-python-stix2 icon indicating copy to clipboard operation
cti-python-stix2 copied to clipboard

Skip unallowed common properties provided by ObjectFactory

Open SYNchroACK opened this issue 4 months ago • 0 comments

Problem: the existing ObjectFactory when initialized with the default values like created_by_ref, does not handle properly the creation of SCOs, which does not have these default properties (created, created_by_ref, external_references) accordingly to the standard.

image

Test snippet.py:

from stix2.environment import ObjectFactory
from stix2.v21 import DomainName, Identity, Malware

identity = Identity(name="Test", description="Test")

factory = ObjectFactory(created_by_ref=identity.id)

malware = factory.create(Malware, name="dridex", is_family=True)
domain = factory.create(DomainName, value="test.com")

print("Malware: ", malware.name)
print("Domain: ", domain.value)

Without the changes proposed in this pull request:

$ python snippet.py 
Traceback (most recent call last):
  File "/openstix-python/src/stix2/snippet.py", line 9, in <module>
    domain = factory.create(DomainName, value="test.com")
  File "/openstix-python/src/stix2/stix2/environment.py", line 104, in create
    return cls(**properties)
  File "/openstix-python/src/stix2/stix2/v21/base.py", line 15, in __init__
    super(_Observable, self).__init__(**kwargs)
  File "/openstix-python/src/stix2/stix2/base.py", line 381, in __init__
    super(_Observable, self).__init__(**kwargs)
  File "/openstix-python/src/stix2/stix2/base.py", line 157, in __init__
    raise ExtraPropertiesError(cls, custom_kwargs)
stix2.exceptions.ExtraPropertiesError: Unexpected properties for DomainName: (created_by_ref).

With the changes proposed in this pull request:

$ python snippet.py 
Malware:  dridex
Domain:  test.com

SYNchroACK avatar Oct 13 '24 11:10 SYNchroACK