Files
deb-tempest/tempest/api/object_storage/test_crossdomain.py
Matthew Treinish 2034538bf5 Add a discoverable_apis option for swift
This commit adds a new list option for the object-storage-feature-enabled
config group, discoverable_apis, which lists out which Swift discoverable
optional apis are expected to be enabled on the swift server. It also
converts the pre-existing single boolean options for these types of
features to use the new list option. This option is used in the same
manner as the extensions list options for the other services. However,
since swift doesn't have the same concept of extensions as some of the
other OpenStack projects optional discoverable apis (which are often
but not always tied with middleware) were used instead. If an optional
api being enabled isn't discoverable from an external api call then
that should have a separate config option in the
object-storage-feature-enabled config group.

Partially implements bp config-cleanup

Change-Id: I846860804050ec44491ce05d6b72e1cc639609b1
2014-01-09 16:39:48 +00:00

83 lines
3.0 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
#
# Author: Joe H. Rahme <joe.hakim.rahme@enovance.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from tempest.api.object_storage import base
from tempest import clients
from tempest.common import custom_matchers
from tempest import test
class CrossdomainTest(base.BaseObjectTest):
@classmethod
def setUpClass(cls):
super(CrossdomainTest, cls).setUpClass()
# creates a test user. The test user will set its base_url to the Swift
# endpoint and test the healthcheck feature.
cls.data.setup_test_user()
cls.os_test_user = clients.Manager(
cls.data.test_user,
cls.data.test_password,
cls.data.test_tenant)
cls.xml_start = '<?xml version="1.0"?>\n' \
'<!DOCTYPE cross-domain-policy SYSTEM ' \
'"http://www.adobe.com/xml/dtds/cross-domain-policy.' \
'dtd" >\n<cross-domain-policy>\n'
cls.xml_end = "</cross-domain-policy>"
@classmethod
def tearDownClass(cls):
cls.data.teardown_all()
super(CrossdomainTest, cls).tearDownClass()
def setUp(self):
super(CrossdomainTest, self).setUp()
client = self.os_test_user.account_client
client._set_auth()
# Turning http://.../v1/foobar into http://.../
client.base_url = "/".join(client.base_url.split("/")[:-2])
def tearDown(self):
# clear the base_url for subsequent requests
self.os_test_user.account_client.base_url = None
super(CrossdomainTest, self).tearDown()
@test.attr('gate')
@test.requires_ext(extension='crossdomain', service='object')
def test_get_crossdomain_policy(self):
resp, body = self.os_test_user.account_client.get("crossdomain.xml",
{})
self.assertIn(int(resp['status']), test.HTTP_SUCCESS)
self.assertTrue(body.startswith(self.xml_start) and
body.endswith(self.xml_end))
# The target of the request is not any Swift resource. Therefore, the
# existence of response header is checked without a custom matcher.
self.assertIn('content-length', resp)
self.assertIn('content-type', resp)
self.assertIn('x-trans-id', resp)
self.assertIn('date', resp)
# Check only the format of common headers with custom matcher
self.assertThat(resp, custom_matchers.AreAllWellFormatted())