Add some new unit tests corresponding to ListProperty revamp.
							parent
							
								
									bc51cd47bd
								
							
						
					
					
						commit
						bf5176f370
					
				|  | @ -3,8 +3,10 @@ import uuid | |||
| import pytest | ||||
| 
 | ||||
| import stix2 | ||||
| import stix2.base | ||||
| from stix2.exceptions import ( | ||||
|     AtLeastOnePropertyError, CustomContentError, DictionaryKeyError, | ||||
|     ExtraPropertiesError, | ||||
| ) | ||||
| from stix2.properties import ( | ||||
|     BinaryProperty, BooleanProperty, DictionaryProperty, | ||||
|  | @ -66,7 +68,7 @@ def test_fixed_property(): | |||
|     assert p.clean(p.default()) | ||||
| 
 | ||||
| 
 | ||||
| def test_list_property(): | ||||
| def test_list_property_property_type(): | ||||
|     p = ListProperty(StringProperty) | ||||
| 
 | ||||
|     assert p.clean(['abc', 'xyz']) | ||||
|  | @ -74,6 +76,88 @@ def test_list_property(): | |||
|         p.clean([]) | ||||
| 
 | ||||
| 
 | ||||
| def test_list_property_property_type_custom(): | ||||
|     class TestObj(stix2.base._STIXBase): | ||||
|         _type = "test" | ||||
|         _properties = { | ||||
|             "foo": StringProperty(), | ||||
|         } | ||||
|     p = ListProperty(EmbeddedObjectProperty(type=TestObj)) | ||||
| 
 | ||||
|     objs_custom = [ | ||||
|         TestObj(foo="abc", bar=123, allow_custom=True), | ||||
|         TestObj(foo="xyz"), | ||||
|     ] | ||||
| 
 | ||||
|     assert p.clean(objs_custom) | ||||
| 
 | ||||
|     dicts_custom = [ | ||||
|         {"foo": "abc", "bar": 123}, | ||||
|         {"foo": "xyz"}, | ||||
|     ] | ||||
| 
 | ||||
|     # no opportunity to set allow_custom=True when using dicts | ||||
|     with pytest.raises(ExtraPropertiesError): | ||||
|         p.clean(dicts_custom) | ||||
| 
 | ||||
| 
 | ||||
| def test_list_property_object_type(): | ||||
|     class TestObj(stix2.base._STIXBase): | ||||
|         _type = "test" | ||||
|         _properties = { | ||||
|             "foo": StringProperty(), | ||||
|         } | ||||
|     p = ListProperty(TestObj) | ||||
| 
 | ||||
|     objs = [TestObj(foo="abc"), TestObj(foo="xyz")] | ||||
|     assert p.clean(objs) | ||||
| 
 | ||||
|     dicts = [{"foo": "abc"}, {"foo": "xyz"}] | ||||
|     assert p.clean(dicts) | ||||
| 
 | ||||
| 
 | ||||
| def test_list_property_object_type_custom(): | ||||
|     class TestObj(stix2.base._STIXBase): | ||||
|         _type = "test" | ||||
|         _properties = { | ||||
|             "foo": StringProperty(), | ||||
|         } | ||||
|     p = ListProperty(TestObj) | ||||
| 
 | ||||
|     objs_custom = [ | ||||
|         TestObj(foo="abc", bar=123, allow_custom=True), | ||||
|         TestObj(foo="xyz"), | ||||
|     ] | ||||
| 
 | ||||
|     assert p.clean(objs_custom) | ||||
| 
 | ||||
|     dicts_custom = [ | ||||
|         {"foo": "abc", "bar": 123}, | ||||
|         {"foo": "xyz"}, | ||||
|     ] | ||||
| 
 | ||||
|     # no opportunity to set allow_custom=True when using dicts | ||||
|     with pytest.raises(ExtraPropertiesError): | ||||
|         p.clean(dicts_custom) | ||||
| 
 | ||||
| 
 | ||||
| def test_list_property_bad_element_type(): | ||||
|     with pytest.raises(TypeError): | ||||
|         ListProperty(1) | ||||
| 
 | ||||
| 
 | ||||
| def test_list_property_bad_value_type(): | ||||
|     class TestObj(stix2.base._STIXBase): | ||||
|         _type = "test" | ||||
|         _properties = { | ||||
|             "foo": StringProperty(), | ||||
|         } | ||||
| 
 | ||||
|     list_prop = ListProperty(TestObj) | ||||
|     with pytest.raises(ValueError): | ||||
|         list_prop.clean([1]) | ||||
| 
 | ||||
| 
 | ||||
| def test_string_property(): | ||||
|     prop = StringProperty() | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Chisholm
						Michael Chisholm