def main(): collection = Collection( "http://127.0.0.1:5000/trustgroup1/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/", user="******", password="******", ) # instantiate TAXII data source taxii = stix2.TAXIICollectionSource(collection) # get (url watch indicator) indicator_fw = taxii.get("indicator--6770298f-0fd8-471a-ab8c-1c658a46574e") print("\n\n-------Queried for Indicator - got:") print(indicator_fw.serialize(indent=4)) # all versions (url watch indicator - currently two) indicator_fw_versions = taxii.all_versions( "indicator--6770298f-0fd8-471a-ab8c-1c658a46574e") print("\n\n------Queried for indicator (all_versions()) - got:") for indicator in indicator_fw_versions: print(indicator.serialize(indent=4)) # add TAXII filter (ie filter should be passed to TAXII) query_filter = stix2.Filter("type", "in", "malware") # query() - but with filter attached. There are no malware objects in this collection malwares = taxii.query(query=query_filter) print( "\n\n\n--------Queried for Malware string (with above filter attached) - got:" ) for malware in malwares: print(malware.serialize(indent=4)) if not malwares: print(malwares)
def test_collection_missing_can_write_property(collection_dict): with pytest.raises(ValidationError) as excinfo: collection_dict.pop("can_write") Collection("https://example.com/api1/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/", user="******", password="******", verify=False, collection_info=collection_dict) assert "No 'can_write' in Collection for request 'https://example.com/api1/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/'" == str(excinfo.value)
def test_collection_missing_trailing_slash(): set_collection_response() collection = Collection(COLLECTION_URL[:-1]) responses.add(responses.GET, GET_OBJECT_URL, GET_OBJECT_RESPONSE, status=200, content_type="%s; charset=utf-8" % MEDIA_TYPE_TAXII_V21) response = collection.get_object("indicator--252c7c11-daf2-42bd-843b-be65edca9f61") indicator = response["objects"][0] assert indicator["id"] == "indicator--252c7c11-daf2-42bd-843b-be65edca9f61"
def test_collection_unexpected_kwarg(): with pytest.raises(TypeError): Collection(url="", conn=None, foo="bar")
def bad_writable_collection(): """Collection with 'can_write=true', but the COLLECTION_URL is different from the one in the response""" set_collection_response(response=WRITABLE_COLLECTION) return Collection(COLLECTION_URL)
def writable_collection(): """Collection with 'can_write' set to 'true'.""" set_collection_response(WRITABLE_COLLECTION_URL, WRITABLE_COLLECTION) return Collection(WRITABLE_COLLECTION_URL)
def collection(): """Default Collection object""" # The collection response is needed to get information about the collection set_collection_response() return Collection(COLLECTION_URL)
def test_collection_with_custom_properties(collection_dict): collection_dict["type"] = "domain" col_obj = Collection(url=WRITABLE_COLLECTION_URL, collection_info=collection_dict) assert len(col_obj.custom_properties) == 1 assert col_obj.custom_properties["type"] == "domain"