Migrate the "unauthed" tests

This migrates the tests that check for a 401 if a token is not provided
in the request headers.

Change-Id: I9752685afccee5dcd009f76b5242fd6f12f0fc37
This commit is contained in:
Paul Glass 2016-06-13 21:03:33 +00:00
parent 24df485be7
commit d56330ab97
3 changed files with 245 additions and 34 deletions

View File

@ -13,6 +13,7 @@
# under the License.
from tempest import clients
from tempest import config
from tempest.lib.auth import KeystoneV2AuthProvider
from designate_tempest_plugin.services.dns.v1.json.domains_client import \
DomainsClient
@ -49,58 +50,93 @@ CONF = config.CONF
class ManagerV1(clients.Manager):
def __init__(self, credentials=None, service=None):
super(ManagerV1, self).__init__(credentials, service)
self._init_clients(self._get_params())
params = {
def _init_clients(self, params):
self.domains_client = DomainsClient(**params)
self.records_client = RecordsClient(**params)
self.servers_client = ServersClient(**params)
def _get_params(self):
params = dict(self.default_params)
params.update({
'auth_provider': self.auth_provider,
'service': CONF.dns.catalog_type,
'region': CONF.identity.region,
'endpoint_type': CONF.dns.endpoint_type,
'build_interval': CONF.dns.build_interval,
'build_timeout': CONF.dns.build_timeout
}
params.update(self.default_params)
self.domains_client = DomainsClient(self.auth_provider, **params)
self.records_client = RecordsClient(self.auth_provider, **params)
self.servers_client = ServersClient(self.auth_provider, **params)
})
return params
class ManagerV2(clients.Manager):
def __init__(self, credentials=None, service=None):
super(ManagerV2, self).__init__(credentials, service)
self._init_clients(self._get_params())
params = {
'service': CONF.dns.catalog_type,
'region': CONF.identity.region,
'endpoint_type': CONF.dns.endpoint_type,
'build_interval': CONF.dns.build_interval,
'build_timeout': CONF.dns.build_timeout
}
params.update(self.default_params)
def _init_clients(self, params):
self.zones_client = ZonesClient(**params)
self.zone_imports_client = ZoneImportsClient(**params)
self.blacklists_client = BlacklistsClient(**params)
self.quotas_client = QuotasClient(**params)
self.zone_exports_client = ZoneExportsClient(**params)
self.recordset_client = RecordsetClient(**params)
self.pool_client = PoolClient(**params)
self.tld_client = TldClient(**params)
self.transfer_request_client = TransferRequestClient(**params)
self.transfer_accept_client = TransferAcceptClient(**params)
self.tsigkey_client = TsigkeyClient(**params)
self.zones_client = ZonesClient(self.auth_provider, **params)
self.zone_imports_client = ZoneImportsClient(self.auth_provider,
**params)
self.blacklists_client = BlacklistsClient(self.auth_provider, **params)
self.quotas_client = QuotasClient(self.auth_provider, **params)
self.zone_exports_client = ZoneExportsClient(self.auth_provider,
**params)
self.recordset_client = RecordsetClient(self.auth_provider,
**params)
self.pool_client = PoolClient(self.auth_provider,
**params)
self.tld_client = TldClient(self.auth_provider,
**params)
self.query_client = QueryClient(
nameservers=CONF.dns.nameservers,
query_timeout=CONF.dns.query_timeout,
build_interval=CONF.dns.build_interval,
build_timeout=CONF.dns.build_timeout,
)
self.transfer_request_client = TransferRequestClient(
self.auth_provider, **params)
self.transfer_accept_client = TransferAcceptClient(
self.auth_provider, **params)
self.tsigkey_client = TsigkeyClient(
self.auth_provider, **params)
def _get_params(self):
params = dict(self.default_params)
params.update({
'auth_provider': self.auth_provider,
'service': CONF.dns.catalog_type,
'region': CONF.identity.region,
'endpoint_type': CONF.dns.endpoint_type,
'build_interval': CONF.dns.build_interval,
'build_timeout': CONF.dns.build_timeout
})
return params
class ManagerV2Unauthed(ManagerV2):
def __init__(self, credentials=None, service=None):
super(ManagerV2Unauthed, self).__init__(credentials, service)
self.auth_provider = KeystoneV2UnauthedProvider(
credentials=self.auth_provider.credentials,
auth_url=self.auth_provider.auth_client.auth_url,
disable_ssl_certificate_validation=self.auth_provider.dscv,
ca_certs=self.auth_provider.ca_certs,
trace_requests=self.auth_provider.trace_requests,
)
self._init_clients(self._get_params())
class KeystoneV2UnauthedProvider(KeystoneV2AuthProvider):
"""This auth provider will ensure requests are made without a token"""
def _decorate_request(self, filters, method, url, headers=None, body=None,
auth_data=None):
result = super(KeystoneV2UnauthedProvider, self)._decorate_request(
filters, method, url, headers=headers, body=body,
auth_data=auth_data)
url, headers, body = result
try:
del headers['X-Auth-Token']
except KeyError:
pass
return url, headers, body

View File

@ -0,0 +1,48 @@
# Copyright 2016 Rackspace
#
# 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 oslo_log import log as logging
from tempest import test
from tempest.lib import decorators
from tempest.lib import exceptions as lib_exc
import ddt
from designate_tempest_plugin.tests import base
from designate_tempest_plugin.clients import ManagerV2Unauthed
LOG = logging.getLogger(__name__)
@ddt.ddt
class TestDnsUnauthed(base.BaseDnsV2Test):
client_manager = ManagerV2Unauthed
credentials = ["primary"]
@classmethod
def setup_clients(cls):
super(TestDnsUnauthed, cls).setup_clients()
cls.zones_client = cls.os.zones_client
cls.recordset_client = cls.os.recordset_client
cls.tld_client = cls.os.tld_client
cls.pool_client = cls.os.pool_client
cls.blacklists_client = cls.os.blacklists_client
@test.attr(type='smoke')
@decorators.idempotent_id('0f7a6d20-f6f3-4937-8fe6-7a9851227d98')
@ddt.file_data('unauthed_data.json')
def test_unauthed(self, client, method, args=None):
client = getattr(self, client)
method = getattr(client, method)
args = args or []
self.assertRaises(lib_exc.Unauthorized, method, *args)

View File

@ -0,0 +1,127 @@
{
"list_zones": {
"client": "zones_client",
"method": "list_zones"
},
"show_zone": {
"client": "zones_client",
"method": "show_zone",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"create_zone": {
"client": "zones_client",
"method": "create_zone",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"update_zone": {
"client": "zones_client",
"method": "update_zone",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"delete_zone": {
"client": "zones_client",
"method": "delete_zone",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"list_recordsets": {
"client": "recordset_client",
"method": "list_recordset",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"show_recordset": {
"client": "recordset_client",
"method": "show_recordset",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90", "6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"create_recordset": {
"client": "recordset_client",
"method": "create_recordset",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90", "6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"update_recordset": {
"client": "recordset_client",
"method": "update_recordset",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90", "6ef3b7f2-df39-43ef-9f37-ce2bc424ab90", {}]
},
"delete_recordset": {
"client": "recordset_client",
"method": "delete_recordset",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90", "6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"list_tlds": {
"client": "tld_client",
"method": "list_tlds"
},
"show_tld": {
"client": "tld_client",
"method": "show_tld",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"create_tld": {
"client": "tld_client",
"method": "create_tld",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"update_tld": {
"client": "tld_client",
"method": "update_tld",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"delete_tld": {
"client": "tld_client",
"method": "delete_tld",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"list_blacklists": {
"client": "blacklists_client",
"method": "list_blacklists"
},
"show_blacklist": {
"client": "blacklists_client",
"method": "show_blacklist",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"create_blacklist": {
"client": "blacklists_client",
"method": "create_blacklist",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"update_blacklist": {
"client": "blacklists_client",
"method": "update_blacklist",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"delete_blacklist": {
"client": "blacklists_client",
"method": "delete_blacklist",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"list_pools": {
"client": "pool_client",
"method": "list_pools"
},
"show_pool": {
"client": "pool_client",
"method": "show_pool",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"create_pool": {
"client": "pool_client",
"method": "create_pool",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"update_pool": {
"client": "pool_client",
"method": "update_pool",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
},
"delete_pool": {
"client": "pool_client",
"method": "delete_pool",
"args": ["6ef3b7f2-df39-43ef-9f37-ce2bc424ab90"]
}
}