diff --git a/reddwarf/tests/api/header.py b/reddwarf/tests/api/header.py new file mode 100644 index 0000000000..9fef1b1297 --- /dev/null +++ b/reddwarf/tests/api/header.py @@ -0,0 +1,42 @@ +from proboscis import test +from proboscis.asserts import * +from proboscis import SkipTest +from functools import wraps + +from reddwarfclient.client import ReddwarfHTTPClient +from reddwarf.tests.api.versions import Versions +from reddwarfclient import exceptions + + +@test(groups=['dbaas.api.headers']) +def must_work_with_blank_accept_headers(): + """Test to make sure that reddwarf works without the headers""" + versions = Versions() + versions.setUp() + client = versions.client + + if type(client.client).morph_request != ReddwarfHTTPClient.morph_request: + raise SkipTest("Not using the JSON client so can't execute this test.") + + original_morph_request = client.client.morph_request + + def morph_content_type_to(content_type): + @wraps(original_morph_request) + def _morph_request(kwargs): + original_morph_request(kwargs) + kwargs['headers']['Accept'] = content_type + kwargs['headers']['Content-Type'] = content_type + + client.client.morph_request = _morph_request + + try: + morph_content_type_to('') + # run versions to make sure the API still returns JSON even though the + # header type is blank + versions.test_list_versions_index() + # now change headers to XML to make sure the test fails + morph_content_type_to('application/xml') + assert_raises(exceptions.ResponseFormatError, + versions.test_list_versions_index) + finally: + client.client.morph_request = original_morph_request diff --git a/run_tests.py b/run_tests.py index 7e7fdbe7e6..70ecd04667 100644 --- a/run_tests.py +++ b/run_tests.py @@ -2,6 +2,7 @@ import gettext import os import urllib import sys +import traceback from reddwarf.common import cfg from reddwarf.openstack.common import log as logging @@ -111,6 +112,7 @@ if __name__ == "__main__": # Initialize the test configuration. CONFIG.load_from_file('etc/tests/localhost.test.conf') + from reddwarf.tests.api import header from reddwarf.tests.api import limits from reddwarf.tests.api import flavors from reddwarf.tests.api import versions @@ -128,7 +130,9 @@ if __name__ == "__main__": from reddwarf.tests.api.mgmt import instances from reddwarf.tests.api.mgmt import instances_actions from reddwarf.tests.api.mgmt import storage - except Exception, e: - print "Run tests failed %s" % e.msg + except Exception as e: + print("Run tests failed: %s" % e) + traceback.print_exc() + raise proboscis.TestProgram().run_and_exit()