barbican/barbican/tests/common/test_utils.py

136 lines
5.0 KiB
Python

# Copyright (c) 2013-2014 Rackspace, Inc.
#
# 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.
import mock
from barbican.common import utils
from barbican.tests import utils as test_utils
class WhenTestingHostnameForRefsGetter(test_utils.BaseTestCase):
def setUp(self):
super(WhenTestingHostnameForRefsGetter, self).setUp()
self.host = 'host'
self.version = 'version'
self.keystone_id = 'keystone_id'
self.resource = 'resource'
self._old_host = utils.CONF.host_href
self._old_version = utils.API_VERSION
utils.CONF.host_href = self.host
utils.API_VERSION = self.version
def tearDown(self):
super(WhenTestingHostnameForRefsGetter, self).tearDown()
utils.CONF.host_href = self._old_host
utils.API_VERSION = self._old_version
def test_hostname_for_refs(self):
uri = utils.hostname_for_refs(resource=self.resource)
self.assertEqual(uri, "{0}/{1}/{2}".format(self.host,
self.version,
self.resource))
def test_hostname_for_refs_no_resource(self):
uri = utils.hostname_for_refs()
self.assertEqual(uri, "{0}/{1}".format(self.host,
self.version))
class WhenTestingAcceptEncodingGetter(test_utils.BaseTestCase):
def setUp(self):
super(WhenTestingAcceptEncodingGetter, self).setUp()
self.req = mock.Mock()
def test_parses_accept_encoding_header(self):
self.req.get_header.return_value = '*'
ae = utils.get_accepted_encodings(self.req)
self.req.get_header.assert_called_once_with('Accept-Encoding')
self.assertEqual(ae, ['*'])
def test_returns_none_for_empty_encoding(self):
self.req.get_header.return_value = None
ae = utils.get_accepted_encodings(self.req)
self.assertIsNone(ae)
def test_parses_single_accept_with_quality_value(self):
self.req.get_header.return_value = 'base64;q=0.7'
ae = utils.get_accepted_encodings(self.req)
self.assertEqual(ae, ['base64'])
def test_parses_more_than_one_encoding(self):
self.req.get_header.return_value = 'base64, gzip'
ae = utils.get_accepted_encodings(self.req)
self.assertEqual(ae, ['base64', 'gzip'])
def test_can_sort_by_quality_value(self):
self.req.get_header.return_value = 'base64;q=0.5, gzip;q=0.6, compress'
ae = utils.get_accepted_encodings(self.req)
self.assertEqual(ae, ['compress', 'gzip', 'base64'])
def test_returns_none_on_invalid_quality_type(self):
self.req.get_header.return_value = 'base64;q=three'
ae = utils.get_accepted_encodings(self.req)
self.assertIsNone(ae)
def test_returns_none_on_quality_too_large(self):
self.req.get_header.return_value = 'base64;q=1.1'
ae = utils.get_accepted_encodings(self.req)
self.assertIsNone(ae)
def test_returns_none_on_quality_too_small(self):
self.req.get_header.return_value = 'base64;q=-0.1'
ae = utils.get_accepted_encodings(self.req)
self.assertIsNone(ae)
def test_ignores_encoding_with_zero_quality_value(self):
self.req.get_header.return_value = 'base64;q=0.5, gzip;q=0.0, compress'
ae = utils.get_accepted_encodings(self.req)
self.assertEqual(ae, ['compress', 'base64'])
def test_get_correct_fullname_for_class(self):
test_class = self.req
fullname = utils.generate_fullname_for(test_class)
self.assertEqual("mock.Mock", fullname)
class WhenTestingGenerateFullClassnameForInstance(test_utils.BaseTestCase):
def setUp(self):
super(WhenTestingGenerateFullClassnameForInstance, self).setUp()
self.instance = mock.Mock()
def test_get_fullname_for_null_instance_raises_exception(self):
self.assertRaises(ValueError, utils.generate_fullname_for, None)
def test_get_fullname_for_string_doesnt_include_module(self):
test_string = "foo"
fullname = utils.generate_fullname_for(test_string)
self.assertEqual(0, fullname.count("."))
self.assertNotIn("__builtin__", fullname)
def test_returns_class_name_on_null_module(self):
self.instance.__class__.__module__ = None
name = utils.generate_fullname_for(self.instance)
self.assertEqual('Mock', name)
def test_returns_qualified_name(self):
name = utils.generate_fullname_for(self.instance)
self.assertEqual('mock.Mock', name)