write some tests to check new MarkingDefinition constraints
parent
b696f14560
commit
367b485fcd
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from stix2 import exceptions
|
from stix2 import exceptions, parse
|
||||||
from stix2.v21 import (
|
from stix2.v21 import (
|
||||||
TLP_AMBER, TLP_GREEN, TLP_RED, TLP_WHITE, MarkingDefinition, TLPMarking,
|
TLP_AMBER, TLP_GREEN, TLP_RED, TLP_WHITE, MarkingDefinition, TLPMarking,
|
||||||
)
|
)
|
||||||
|
@ -143,3 +143,29 @@ def test_unknown_tlp_marking():
|
||||||
definition_type='tlp',
|
definition_type='tlp',
|
||||||
definition=TLPMarking(tlp='gray'),
|
definition=TLPMarking(tlp='gray'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_marking_definition_missing_definition():
|
||||||
|
my_favorite_marking = {
|
||||||
|
'type': 'marking-definition',
|
||||||
|
'spec_version': '2.1',
|
||||||
|
'id': 'marking-definition--f9dbe89c-0030-4a9d-8b78-0dcd0a0de874',
|
||||||
|
'name': 'This is the name of my favorite Marking',
|
||||||
|
'definition_type': 'foobar'
|
||||||
|
}
|
||||||
|
with pytest.raises(exceptions.PropertyPresenceError):
|
||||||
|
parse(my_favorite_marking)
|
||||||
|
|
||||||
|
|
||||||
|
def test_marking_definition_missing_definition_type():
|
||||||
|
my_favorite_marking = {
|
||||||
|
'type': 'marking-definition',
|
||||||
|
'spec_version': '2.1',
|
||||||
|
'id': 'marking-definition--f9dbe89c-0030-4a9d-8b78-0dcd0a0de874',
|
||||||
|
'name': 'This is the name of my favorite Marking',
|
||||||
|
'definition': {
|
||||||
|
'some_type': 'foobar'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
with pytest.raises(exceptions.InvalidValueError):
|
||||||
|
parse(my_favorite_marking)
|
||||||
|
|
|
@ -226,16 +226,11 @@ class MarkingDefinition(_STIXBase21, _MarkingsMixin):
|
||||||
definition = self.get("definition")
|
definition = self.get("definition")
|
||||||
definition_type = self.get("definition_type")
|
definition_type = self.get("definition_type")
|
||||||
extensions = self.get("extensions")
|
extensions = self.get("extensions")
|
||||||
if not extensions and not definition:
|
|
||||||
|
if not (definition_type and definition) and not extensions:
|
||||||
raise PropertyPresenceError(
|
raise PropertyPresenceError(
|
||||||
"MarkingDefinition objects must have the property 'definition' "
|
"MarkingDefinition objects must have the properties "
|
||||||
"if 'extensions' is not present",
|
"'definition_type' and 'definition' if 'extensions' is not present",
|
||||||
MarkingDefinition,
|
|
||||||
)
|
|
||||||
if not extensions and not definition_type:
|
|
||||||
raise PropertyPresenceError(
|
|
||||||
"MarkingDefinition objects must have the property 'definition_type' "
|
|
||||||
"if 'extensions' is not present",
|
|
||||||
MarkingDefinition,
|
MarkingDefinition,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue