Add few tests to improve some code coverage

master
Desai, Kartikey H 2019-09-11 14:21:41 -04:00
parent 9c7128d074
commit 8447c9fcd9
4 changed files with 56 additions and 21 deletions

View File

@ -450,6 +450,14 @@
"mem.source.filters.add([f1,f2])" "mem.source.filters.add([f1,f2])"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Note: The `defanged` property is now always included (implicitly) for STIX 2.1 Cyber Observable Objects (SCOs)\n",
"This is important to remember if you are writing a filter that involves checking the `objects` property of a STIX 2.1 `ObservedData` object. If any of the objects associated with the `objects` property are STIX 2.1 SCOs, then your filter must include the `defanged` property. For an example, refer to `filters[14]` & `filters[15]` in stix2/test/v21/test_datastore_filters.py "
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
@ -726,21 +734,21 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "cti-python-stix2", "display_name": "Python 3",
"language": "python", "language": "python",
"name": "cti-python-stix2" "name": "python3"
}, },
"language_info": { "language_info": {
"codemirror_mode": { "codemirror_mode": {
"name": "ipython", "name": "ipython",
"version": 2 "version": 3
}, },
"file_extension": ".py", "file_extension": ".py",
"mimetype": "text/x-python", "mimetype": "text/x-python",
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython2", "pygments_lexer": "ipython3",
"version": "2.7.12" "version": "3.6.7"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -465,21 +465,21 @@ def test_parse_email_message_not_multipart(data):
"type": "file", "type": "file",
"id": "file--65f2873d-38c2-56b4-bfa5-e3ef21e8a3c3", "id": "file--65f2873d-38c2-56b4-bfa5-e3ef21e8a3c3",
"hashes": { "hashes": {
"SHA-256": "19c549ec2628b989382f6b280cbd7bb836a0b461332c0fe53511ce7d584b89d3" "SHA-1": "6e71b3cac15d32fe2d36c270887df9479c25c640"
} }
}, },
"2": { "2": {
"type": "file", "type": "file",
"id": "file--ef2d6dca-ec7d-5ab7-8dd9-ec9c0dee0eac", "id": "file--ef2d6dca-ec7d-5ab7-8dd9-ec9c0dee0eac",
"hashes": { "hashes": {
"SHA-256": "0969de02ecf8a5f003e3f6d063d848c8a193aada092623f8ce408c15bcb5f038" "SHA-512": "b7e98c78c24fb4c2c7b175e90474b21eae0ccf1b5ea4708b4e0f2d2940004419edc7161c18a1e71b2565df099ba017bcaa67a248e2989b6268ce078b88f2e210"
} }
}, },
"3": { "3": {
"type": "file", "type": "file",
"name": "foo.zip", "name": "foo.zip",
"hashes": { "hashes": {
"SHA-256": "35a01331e9ad96f751278b891b6ea09699806faedfa237d40513d92ad1b7100f" "SHA3-256": "35a01331e9ad96f751278b891b6ea09699806faedfa237d40513d92ad1b7100f"
}, },
"mime_type": "application/zip", "mime_type": "application/zip",
"extensions": { "extensions": {
@ -1490,3 +1490,39 @@ def test_deterministic_id_no_contributing_props():
uuid_obj_2 = uuid.UUID(email_msg_2.id[-36:]) uuid_obj_2 = uuid.UUID(email_msg_2.id[-36:])
assert uuid_obj_2.variant == uuid.RFC_4122 assert uuid_obj_2.variant == uuid.RFC_4122
assert uuid_obj_2.version == 4 assert uuid_obj_2.version == 4
def test_ipv4_resolves_to_refs_deprecation():
with pytest.warns(stix2.exceptions.STIXDeprecationWarning):
stix2.v21.IPv4Address(
value="26.09.19.70",
resolves_to_refs=["mac-addr--08900593-0265-52fc-93c0-5b4a942f5887"],
)
def test_ipv4_belongs_to_refs_deprecation():
with pytest.warns(stix2.exceptions.STIXDeprecationWarning):
stix2.v21.IPv4Address(
value="21.12.19.64",
belongs_to_refs=["autonomous-system--52e0a49d-d683-5801-a7b8-145765a1e116"],
)
def test_ipv6_resolves_to_refs_deprecation():
with pytest.warns(stix2.exceptions.STIXDeprecationWarning):
stix2.v21.IPv6Address(
value="2001:0db8:85a3:0000:0000:8a2e:0370:7334",
resolves_to_refs=["mac-addr--08900593-0265-52fc-93c0-5b4a942f5887"],
)
def test_ipv6_belongs_to_refs_deprecation():
with pytest.warns(stix2.exceptions.STIXDeprecationWarning):
stix2.v21.IPv6Address(
value="2001:0db8:85a3:0000:0000:8a2e:0370:7334",
belongs_to_refs=["autonomous-system--52e0a49d-d683-5801-a7b8-145765a1e116"],
)

View File

@ -385,7 +385,7 @@ class File(_Observable):
('mtime', TimestampProperty()), ('mtime', TimestampProperty()),
('atime', TimestampProperty()), ('atime', TimestampProperty()),
('parent_directory_ref', ReferenceProperty(valid_types='directory', spec_version='2.1')), ('parent_directory_ref', ReferenceProperty(valid_types='directory', spec_version='2.1')),
('contains_refs', ListProperty(ReferenceProperty(invalid_types=[""], spec_version='2.1'))), ('contains_refs', ListProperty(ReferenceProperty(invalid_types="", spec_version='2.1'))),
('content_ref', ReferenceProperty(valid_types='artifact', spec_version='2.1')), ('content_ref', ReferenceProperty(valid_types='artifact', spec_version='2.1')),
('extensions', ExtensionsProperty(spec_version='2.1', enclosing_type=_type)), ('extensions', ExtensionsProperty(spec_version='2.1', enclosing_type=_type)),
('spec_version', StringProperty(fixed='2.1')), ('spec_version', StringProperty(fixed='2.1')),

View File

@ -6,11 +6,9 @@ import warnings
from six.moves.urllib.parse import quote_plus from six.moves.urllib.parse import quote_plus
from ..core import STIX2_OBJ_MAPS, STIXDomainObject from ..core import STIXDomainObject
from ..custom import _custom_object_builder from ..custom import _custom_object_builder
from ..exceptions import ( from ..exceptions import PropertyPresenceError, STIXDeprecationWarning
InvalidValueError, PropertyPresenceError, STIXDeprecationWarning,
)
from ..properties import ( from ..properties import (
BinaryProperty, BooleanProperty, EmbeddedObjectProperty, EnumProperty, BinaryProperty, BooleanProperty, EmbeddedObjectProperty, EnumProperty,
FloatProperty, IDProperty, IntegerProperty, ListProperty, FloatProperty, IDProperty, IntegerProperty, ListProperty,
@ -597,16 +595,9 @@ class ObservedData(STIXDomainObject):
self._check_mutually_exclusive_properties( self._check_mutually_exclusive_properties(
["objects", "object_refs"], ["objects", "object_refs"],
at_least_one=False,
) )
if self.get('object_refs'):
for identifier in self.get('object_refs'):
identifier_prefix = identifier[:identifier.index('--')]
if identifier_prefix in STIX2_OBJ_MAPS['v21']['observables'].keys():
break
else:
raise InvalidValueError(self.__class__, 'object_refs', "At least one identifier must be of a SCO type if this property specified")
class Opinion(STIXDomainObject): class Opinion(STIXDomainObject):
# TODO: Add link # TODO: Add link