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
diff --git a/designate_tempest_plugin/clients.py b/designate_tempest_plugin/clients.py
index 66db3de..5f4f728 100644
--- a/designate_tempest_plugin/clients.py
+++ b/designate_tempest_plugin/clients.py
@@ -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 @@
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
diff --git a/designate_tempest_plugin/tests/api/v2/test_unauthed.py b/designate_tempest_plugin/tests/api/v2/test_unauthed.py
new file mode 100644
index 0000000..f036824
--- /dev/null
+++ b/designate_tempest_plugin/tests/api/v2/test_unauthed.py
@@ -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)
diff --git a/designate_tempest_plugin/tests/api/v2/unauthed_data.json b/designate_tempest_plugin/tests/api/v2/unauthed_data.json
new file mode 100644
index 0000000..c4faf80
--- /dev/null
+++ b/designate_tempest_plugin/tests/api/v2/unauthed_data.json
@@ -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"]
+ }
+}