removing taxii 503 error test as not reproducible in Travis environment

stix2.0
= 2018-05-15 15:41:46 -04:00
parent 2392912533
commit 0d3f80f2fe
2 changed files with 27 additions and 39 deletions

View File

@ -9,6 +9,13 @@ from stix2.datastore import DataSink, DataSource, DataStoreMixin
from stix2.datastore.filters import Filter, FilterSet, apply_common_filters
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']
@ -51,27 +58,22 @@ class TAXIICollectionSink(DataSink):
"""
def __init__(self, collection, allow_custom=False):
super(TAXIICollectionSink, self).__init__()
if not _taxii2_client:
raise ImportError("taxii2client library is required for usage of TAXIICollectionSink")
try:
# we have to execute .can_write first in isolation because the
# 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:
e.message = ("The underlying TAXII Collection resource defined in the supplied TAXII"
" Collection object provided could not be reached. TAXII Collection Error: "
+ e.message)
raise
if writeable:
# now past taxii2client possible exceptions, check value for local exceptions
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"
" Collection object provided could not be reached. TAXII Collection Error: "
+ e.message)
raise
self.allow_custom = allow_custom
def add(self, stix_data, version=None):
@ -131,27 +133,22 @@ class TAXIICollectionSource(DataSource):
"""
def __init__(self, collection, allow_custom=True):
super(TAXIICollectionSource, self).__init__()
if not _taxii2_client:
raise ImportError("taxii2client library is required for usage of TAXIICollectionSource")
try:
# we have to execute .can_read first in isolation because the
# 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:
e.message = ("The underlying TAXII Collection resource defined in the supplied TAXII"
" Collection object provided could not be reached. TAXII Collection Error: "
+ e.message)
raise
if writeable:
# now past taxii2client possible exceptions, check value for local exceptions
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"
" Collection object provided could not be reached. TAXII Collection Error: "
+ e.message)
raise
self.allow_custom = allow_custom
def get(self, stix_id, version=None, _composite_filters=None):

View File

@ -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)
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):
"""a TAXIICollectionSource.get() call that receives an HTTP 404 response
code from the taxii2client should be be returned as None.