trove/reddwarf/tests/api/header.py

43 lines
1.5 KiB
Python

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