removing taxii 503 error test as not reproducible in Travis environment
parent
2392912533
commit
0d3f80f2fe
|
@ -9,6 +9,13 @@ from stix2.datastore import DataSink, DataSource, DataStoreMixin
|
||||||
from stix2.datastore.filters import Filter, FilterSet, apply_common_filters
|
from stix2.datastore.filters import Filter, FilterSet, apply_common_filters
|
||||||
from stix2.utils import deduplicate
|
from stix2.utils import deduplicate
|
||||||
|
|
||||||
|
try:
|
||||||
|
from taxii2client import ValidationError
|
||||||
|
_taxii2_client = True
|
||||||
|
except ImportError:
|
||||||
|
_taxii2_client = False
|
||||||
|
|
||||||
|
|
||||||
TAXII_FILTERS = ['added_after', 'id', 'type', 'version']
|
TAXII_FILTERS = ['added_after', 'id', 'type', 'version']
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,27 +58,22 @@ class TAXIICollectionSink(DataSink):
|
||||||
"""
|
"""
|
||||||
def __init__(self, collection, allow_custom=False):
|
def __init__(self, collection, allow_custom=False):
|
||||||
super(TAXIICollectionSink, self).__init__()
|
super(TAXIICollectionSink, self).__init__()
|
||||||
try:
|
if not _taxii2_client:
|
||||||
# we have to execute .can_write first in isolation because the
|
raise ImportError("taxii2client library is required for usage of TAXIICollectionSink")
|
||||||
# attribute access could trigger a taxii2client.ValidationError which
|
|
||||||
# we catch here as a ValueError (its parent class). Later, we need to
|
|
||||||
# have the ability to also raise a different ValueError based on the
|
|
||||||
# value of .can_write
|
|
||||||
writeable = collection.can_write
|
|
||||||
|
|
||||||
except (HTTPError, ValueError) as e:
|
try:
|
||||||
|
if collection.can_write:
|
||||||
|
self.collection = collection
|
||||||
|
else:
|
||||||
|
raise ValueError("The TAXII Collection object provided does not have write access"
|
||||||
|
" to the underlying linked Collection resource")
|
||||||
|
|
||||||
|
except (HTTPError, ValidationError) as e:
|
||||||
e.message = ("The underlying TAXII Collection resource defined in the supplied TAXII"
|
e.message = ("The underlying TAXII Collection resource defined in the supplied TAXII"
|
||||||
" Collection object provided could not be reached. TAXII Collection Error: "
|
" Collection object provided could not be reached. TAXII Collection Error: "
|
||||||
+ e.message)
|
+ e.message)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if writeable:
|
|
||||||
# now past taxii2client possible exceptions, check value for local exceptions
|
|
||||||
self.collection = collection
|
|
||||||
else:
|
|
||||||
raise ValueError("The TAXII Collection object provided does not have write access"
|
|
||||||
" to the underlying linked Collection resource")
|
|
||||||
|
|
||||||
self.allow_custom = allow_custom
|
self.allow_custom = allow_custom
|
||||||
|
|
||||||
def add(self, stix_data, version=None):
|
def add(self, stix_data, version=None):
|
||||||
|
@ -131,27 +133,22 @@ class TAXIICollectionSource(DataSource):
|
||||||
"""
|
"""
|
||||||
def __init__(self, collection, allow_custom=True):
|
def __init__(self, collection, allow_custom=True):
|
||||||
super(TAXIICollectionSource, self).__init__()
|
super(TAXIICollectionSource, self).__init__()
|
||||||
try:
|
if not _taxii2_client:
|
||||||
# we have to execute .can_read first in isolation because the
|
raise ImportError("taxii2client library is required for usage of TAXIICollectionSource")
|
||||||
# attribute access could trigger a taxii2client.ValidationError which
|
|
||||||
# we catch here as a ValueError (its parent class). Later, we need to
|
|
||||||
# have the ability to also raise a different ValueError based on the
|
|
||||||
# value of .can_read
|
|
||||||
writeable = collection.can_read
|
|
||||||
|
|
||||||
except (HTTPError, ValueError) as e:
|
try:
|
||||||
|
if collection.can_read:
|
||||||
|
self.collection = collection
|
||||||
|
else:
|
||||||
|
raise ValueError("The TAXII Collection object provided does not have read access"
|
||||||
|
" to the underlying linked Collection resource")
|
||||||
|
|
||||||
|
except (HTTPError, ValidationError) as e:
|
||||||
e.message = ("The underlying TAXII Collection resource defined in the supplied TAXII"
|
e.message = ("The underlying TAXII Collection resource defined in the supplied TAXII"
|
||||||
" Collection object provided could not be reached. TAXII Collection Error: "
|
" Collection object provided could not be reached. TAXII Collection Error: "
|
||||||
+ e.message)
|
+ e.message)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if writeable:
|
|
||||||
# now past taxii2client possible exceptions, check value for local exceptions
|
|
||||||
self.collection = collection
|
|
||||||
else:
|
|
||||||
raise ValueError("The TAXII Collection object provided does not have read access"
|
|
||||||
" to the underlying linked Collection resource")
|
|
||||||
|
|
||||||
self.allow_custom = allow_custom
|
self.allow_custom = allow_custom
|
||||||
|
|
||||||
def get(self, stix_id, version=None, _composite_filters=None):
|
def get(self, stix_id, version=None, _composite_filters=None):
|
||||||
|
|
|
@ -339,15 +339,6 @@ def test_can_write_error(collection_no_rw_access):
|
||||||
assert "Collection object provided does not have write access" in str(excinfo.value)
|
assert "Collection object provided does not have write access" in str(excinfo.value)
|
||||||
|
|
||||||
|
|
||||||
def test_bad_collection():
|
|
||||||
"""this triggers a real connectivity issue (HTTPError: 503 ServerError) """
|
|
||||||
with pytest.raises(HTTPError) as excinfo:
|
|
||||||
mock = MockTAXIICollectionEndpoint("http://doenstexist118482.org", verify=False)
|
|
||||||
TAXIICollectionStore(mock)
|
|
||||||
assert "Collection object provided could not be reached. TAXII Collection Error:" in str(excinfo.value.message)
|
|
||||||
assert "HTTPError" in str(excinfo.type)
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_404(collection):
|
def test_get_404(collection):
|
||||||
"""a TAXIICollectionSource.get() call that receives an HTTP 404 response
|
"""a TAXIICollectionSource.get() call that receives an HTTP 404 response
|
||||||
code from the taxii2client should be be returned as None.
|
code from the taxii2client should be be returned as None.
|
||||||
|
|
Loading…
Reference in New Issue