Add unit tests for self-enabling extensions support, and for

compliance checking on toplevel extension property names.
pull/1/head
Michael Chisholm 2021-07-09 20:28:32 -04:00
parent 945e3375aa
commit f0779d7802
1 changed files with 58 additions and 0 deletions

View File

@ -1917,6 +1917,64 @@ def test_toplevel_ext_prop_meta():
)
def test_toplevel_extension_includes_extensions():
"""
Test whether the library allows an extension to enable extension support
itself. :) I.e. a toplevel property extension which adds the "extensions"
property.
"""
class ExtensionsExtension:
extension_type = "toplevel-property-extension"
ext_props = {
"extensions": stix2.properties.ExtensionsProperty(spec_version="2.1")
}
with _register_extension(ExtensionsExtension, ext_props) as ext_id:
# extension-definition is not defined with an "extensions" property.
obj_dict = {
"type": "extension-definition",
"spec_version": "2.1",
"created_by_ref": "identity--8a1fd5dd-4586-4ded-bd39-04bda62f8415",
"name": "my extension",
"version": "1.2.3",
"schema": "add extension support to an object!",
"extension_types": ["toplevel-property-extension"],
"extensions": {
ext_id: {
"extension_type": "toplevel-property-extension"
}
}
}
stix2.parse(obj_dict)
def test_invalid_extension_prop_name():
with pytest.raises(ValueError):
@stix2.v21.common.CustomExtension(
"extension-definition--0530fdbd-0fa3-42ab-90cf-660e0abad370",
[
("7foo", stix2.properties.StringProperty())
]
)
class CustomExt:
extension_type = "property-extension"
with pytest.raises(ValueError):
@stix2.v21.common.CustomExtension(
"extension-definition--0530fdbd-0fa3-42ab-90cf-660e0abad370",
[
("7foo", stix2.properties.StringProperty())
]
)
class CustomExt:
extension_type = "toplevel-property-extension"
def test_allow_custom_propagation():
obj_dict = {
"type": "bundle",