Add object markings to object factory
parent
0c47936ee0
commit
659ad3df89
|
@ -1,8 +1,9 @@
|
|||
|
||||
class ObjectFactory(object):
|
||||
|
||||
def __init__(self, created_by=None):
|
||||
def __init__(self, created_by=None, markings=None):
|
||||
self.created_by = created_by
|
||||
self.markings = markings
|
||||
|
||||
def create(self, cls=None, **kwargs):
|
||||
if cls is None:
|
||||
|
@ -10,5 +11,7 @@ class ObjectFactory(object):
|
|||
|
||||
if self.created_by is not None:
|
||||
kwargs['created_by_ref'] = self.created_by
|
||||
if self.markings is not None:
|
||||
kwargs['object_marking_refs'] = self.markings
|
||||
|
||||
return cls(**kwargs)
|
||||
|
|
|
@ -69,7 +69,7 @@ class MarkingProperty(Property):
|
|||
class MarkingDefinition(_STIXBase):
|
||||
_type = 'marking-definition'
|
||||
_properties = {
|
||||
'created': TimestampProperty(default=lambda: NOW, required=True),
|
||||
'created': TimestampProperty(default=lambda: NOW),
|
||||
'external_references': ListProperty(ExternalReference),
|
||||
'created_by_ref': ReferenceProperty(type="identity"),
|
||||
'object_marking_refs': ListProperty(ReferenceProperty(type="marking-definition")),
|
||||
|
|
|
@ -102,7 +102,7 @@ class ListProperty(Property):
|
|||
except TypeError:
|
||||
raise ValueError("must be an iterable.")
|
||||
try:
|
||||
if isinstance(value, basestring):
|
||||
if isinstance(value, _STIXBase) or isinstance(value, basestring):
|
||||
value = [value]
|
||||
except NameError:
|
||||
if isinstance(value, str):
|
||||
|
|
|
@ -14,3 +14,17 @@ def test_object_factory_created_by_ref_obj():
|
|||
factory = stix2.ObjectFactory(created_by=id_obj)
|
||||
ind = factory.create(stix2.Indicator, **INDICATOR_KWARGS)
|
||||
assert ind.created_by_ref == IDENTITY_ID
|
||||
|
||||
|
||||
def test_object_factory_obj_markings():
|
||||
stmt_marking = stix2.StatementMarking("Copyright 2016, Example Corp")
|
||||
mark_def = stix2.MarkingDefinition(definition_type="statement",
|
||||
definition=stmt_marking)
|
||||
factory = stix2.ObjectFactory(markings=[mark_def, stix2.TLP_AMBER])
|
||||
ind = factory.create(stix2.Indicator, **INDICATOR_KWARGS)
|
||||
assert mark_def.id in ind.object_marking_refs
|
||||
assert stix2.TLP_AMBER.id in ind.object_marking_refs
|
||||
|
||||
factory = stix2.ObjectFactory(markings=stix2.TLP_RED)
|
||||
ind = factory.create(stix2.Indicator, **INDICATOR_KWARGS)
|
||||
assert stix2.TLP_RED.id in ind.object_marking_refs
|
||||
|
|
|
@ -29,6 +29,19 @@ EXPECTED_STATEMENT_MARKING_DEFINITION = """{
|
|||
"type": "marking-definition"
|
||||
}"""
|
||||
|
||||
EXPECTED_CAMPAIGN_WITH_OBJECT_MARKING = """{
|
||||
"created": "2016-04-06T20:03:00.000Z",
|
||||
"created_by_ref": "identity--f431f809-377b-45e0-aa1c-6a4751cae5ff",
|
||||
"description": "Campaign by Green Group against a series of targets in the financial services sector.",
|
||||
"id": "campaign--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f",
|
||||
"modified": "2016-04-06T20:03:00.000Z",
|
||||
"name": "Green Group Attacks Against Finance",
|
||||
"object_marking_refs": [
|
||||
"marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9"
|
||||
],
|
||||
"type": "campaign"
|
||||
}"""
|
||||
|
||||
EXPECTED_GRANULAR_MARKING = """{
|
||||
"marking_ref": "marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9",
|
||||
"selectors": [
|
||||
|
@ -84,6 +97,29 @@ def test_marking_def_example_with_positional_statement():
|
|||
assert str(marking_definition) == EXPECTED_STATEMENT_MARKING_DEFINITION
|
||||
|
||||
|
||||
def test_marking_def_invalid_type():
|
||||
with pytest.raises(ValueError):
|
||||
stix2.MarkingDefinition(
|
||||
id="marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9",
|
||||
created="2017-01-20T00:00:00.000Z",
|
||||
definition_type="my-definiition-type",
|
||||
definition=stix2.StatementMarking("Copyright 2016, Example Corp")
|
||||
)
|
||||
|
||||
|
||||
def test_campaign_with_markings_example():
|
||||
campaign = stix2.Campaign(
|
||||
id="campaign--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f",
|
||||
created_by_ref="identity--f431f809-377b-45e0-aa1c-6a4751cae5ff",
|
||||
created="2016-04-06T20:03:00Z",
|
||||
modified="2016-04-06T20:03:00Z",
|
||||
name="Green Group Attacks Against Finance",
|
||||
description="Campaign by Green Group against a series of targets in the financial services sector.",
|
||||
object_marking_refs=TLP_WHITE
|
||||
)
|
||||
assert str(campaign) == EXPECTED_CAMPAIGN_WITH_OBJECT_MARKING
|
||||
|
||||
|
||||
def test_granular_example():
|
||||
granular_marking = stix2.GranularMarking(
|
||||
marking_ref="marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9",
|
||||
|
@ -119,7 +155,6 @@ def test_campaign_with_granular_markings_example():
|
|||
marking_ref="marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9",
|
||||
selectors=["description"])
|
||||
])
|
||||
print(str(campaign))
|
||||
assert str(campaign) == EXPECTED_CAMPAIGN_WITH_GRANULAR_MARKINGS
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue