Merge "Cleanup data created in the functional tests"
This commit is contained in:
commit
2d247d0cc7
@ -78,4 +78,7 @@ class TransferRequestClient(ClientMixin):
|
||||
def delete_transfer_request(self, transfer_request_id, **kwargs):
|
||||
resp, body = self.client.delete(
|
||||
self.transfer_request_uri(transfer_request_id), **kwargs)
|
||||
return self.deserialize(resp, body, TransferRequestsModel)
|
||||
# the body is empty on a successful delete
|
||||
if body:
|
||||
return self.deserialize(resp, body, TransferRequestsModel)
|
||||
return resp, body
|
||||
|
235
functionaltests/api/v2/fixtures.py
Normal file
235
functionaltests/api/v2/fixtures.py
Normal file
@ -0,0 +1,235 @@
|
||||
"""
|
||||
Copyright 2015 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 __future__ import absolute_import
|
||||
|
||||
import fixtures
|
||||
from tempest_lib.exceptions import NotFound
|
||||
|
||||
from functionaltests.api.v2.clients.blacklist_client import BlacklistClient
|
||||
from functionaltests.api.v2.clients.pool_client import PoolClient
|
||||
from functionaltests.api.v2.clients.recordset_client import RecordsetClient
|
||||
from functionaltests.api.v2.clients.zone_client import ZoneClient
|
||||
from functionaltests.api.v2.clients.zone_import_client import ZoneImportClient
|
||||
from functionaltests.api.v2.clients.zone_export_client import ZoneExportClient
|
||||
from functionaltests.api.v2.clients.transfer_requests_client import \
|
||||
TransferRequestClient
|
||||
from functionaltests.common import datagen
|
||||
|
||||
|
||||
class ZoneFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, post_model=None, user='default'):
|
||||
super(ZoneFixture, self).__init__()
|
||||
self.post_model = post_model or datagen.random_zone_data()
|
||||
self.user = user
|
||||
|
||||
def _setUp(self):
|
||||
super(ZoneFixture, self)._setUp()
|
||||
self._create_zone()
|
||||
|
||||
def _create_zone(self):
|
||||
client = ZoneClient.as_user(self.user)
|
||||
self.post_resp, self.created_zone = client.post_zone(self.post_model)
|
||||
assert self.post_resp.status == 202
|
||||
self.addCleanup(self.cleanup_zone, client, self.created_zone.id)
|
||||
client.wait_for_zone(self.created_zone.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_zone(cls, client, zone_id):
|
||||
try:
|
||||
client.delete_zone(zone_id)
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
|
||||
class ZoneImportFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, post_model=None, user='default'):
|
||||
super(ZoneImportFixture, self).__init__()
|
||||
self.post_model = post_model or datagen.random_zonefile_data()
|
||||
self.user = user
|
||||
|
||||
def _setUp(self):
|
||||
super(ZoneImportFixture, self)._setUp()
|
||||
self._import_zone()
|
||||
|
||||
def _import_zone(self):
|
||||
client = ZoneImportClient.as_user(self.user)
|
||||
self.post_resp, self.zone_import = client.post_zone_import(
|
||||
self.post_model)
|
||||
assert self.post_resp.status == 202
|
||||
self.addCleanup(self.cleanup_zone_import, client, self.zone_import.id)
|
||||
client.wait_for_zone_import(self.zone_import.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_zone_import(cls, client, import_id):
|
||||
try:
|
||||
client.delete_zone_import(import_id)
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
|
||||
class ZoneExportFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, zone_id, user='default'):
|
||||
super(ZoneExportFixture, self).__init__()
|
||||
self.zone_id = zone_id
|
||||
self.user = user
|
||||
|
||||
def _setUp(self):
|
||||
super(ZoneExportFixture, self)._setUp()
|
||||
self._export_zone()
|
||||
|
||||
def _export_zone(self):
|
||||
client = ZoneExportClient.as_user(self.user)
|
||||
self.post_resp, self.zone_export = client.post_zone_export(
|
||||
self.zone_id)
|
||||
assert self.post_resp.status == 202
|
||||
self.addCleanup(self.cleanup_zone_export, client, self.zone_export.id)
|
||||
client.wait_for_zone_export(self.zone_export.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_zone_export(cls, client, export_id):
|
||||
try:
|
||||
client.delete_zone_export(export_id)
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
|
||||
class RecordsetFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, zone_id, post_model, user='default'):
|
||||
super(RecordsetFixture, self).__init__()
|
||||
self.zone_id = zone_id
|
||||
self.post_model = post_model
|
||||
self.user = user
|
||||
|
||||
def _setUp(self):
|
||||
super(RecordsetFixture, self)._setUp()
|
||||
self._create_recordset()
|
||||
|
||||
def _create_recordset(self):
|
||||
client = RecordsetClient.as_user(self.user)
|
||||
self.post_resp, self.created_recordset = client.post_recordset(
|
||||
self.zone_id, self.post_model)
|
||||
assert self.post_resp.status == 202
|
||||
self.addCleanup(self.cleanup_recordset, client, self.zone_id,
|
||||
self.created_recordset.id)
|
||||
|
||||
assert self.created_recordset.status == "PENDING"
|
||||
assert self.created_recordset.name == self.post_model.name
|
||||
assert self.created_recordset.ttl == self.post_model.ttl
|
||||
assert self.created_recordset.records == self.post_model.records
|
||||
|
||||
RecordsetClient.as_user('default').wait_for_recordset(
|
||||
self.zone_id, self.created_recordset.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_recordset(cls, client, zone_id, recordset_id):
|
||||
try:
|
||||
client.delete_recordset(zone_id, recordset_id)
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
|
||||
class PoolFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, post_model=None, user='admin'):
|
||||
super(PoolFixture, self).__init__()
|
||||
self.post_model = post_model or datagen.random_pool_data()
|
||||
self.user = user
|
||||
|
||||
def _setUp(self):
|
||||
super(PoolFixture, self)._setUp()
|
||||
self._create_pool()
|
||||
|
||||
def _create_pool(self):
|
||||
client = PoolClient.as_user(self.user)
|
||||
self.post_resp, self.created_pool = client.post_pool(self.post_model)
|
||||
assert self.post_resp.status == 201
|
||||
self.addCleanup(self.cleanup_pool, client, self.created_pool.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_pool(cls, client, pool_id):
|
||||
try:
|
||||
client.delete_pool(pool_id)
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
|
||||
class TransferRequestFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, zone, post_model=None, user='default',
|
||||
target_user='alt'):
|
||||
"""Assuming the zone is being transferred between the two users, this
|
||||
fixture will ensure that zone is deleted by trying to delete the zone
|
||||
as each user.
|
||||
"""
|
||||
self.zone = zone
|
||||
self.post_model = post_model or datagen.random_transfer_request_data()
|
||||
self.user = user
|
||||
self.target_user = target_user
|
||||
|
||||
def _setUp(self):
|
||||
super(TransferRequestFixture, self)._setUp()
|
||||
self._create_transfer_request()
|
||||
|
||||
def _create_transfer_request(self):
|
||||
client = TransferRequestClient.as_user(self.user)
|
||||
self.post_resp, self.transfer_request = client \
|
||||
.post_transfer_request(self.zone.id, self.post_model)
|
||||
assert self.post_resp.status == 201
|
||||
self.addCleanup(self.cleanup_transfer_request, client,
|
||||
self.transfer_request.id)
|
||||
self.addCleanup(ZoneFixture.cleanup_zone,
|
||||
ZoneClient.as_user(self.user), self.zone.id)
|
||||
self.addCleanup(ZoneFixture.cleanup_zone,
|
||||
ZoneClient.as_user(self.target_user), self.zone.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_transfer_request(self, client, transfer_id):
|
||||
try:
|
||||
client.delete_transfer_request(transfer_id)
|
||||
except NotFound:
|
||||
pass
|
||||
|
||||
|
||||
class BlacklistFixture(fixtures.Fixture):
|
||||
|
||||
def __init__(self, post_model=None, user='admin'):
|
||||
super(BlacklistFixture, self).__init__()
|
||||
self.post_model = post_model or datagen.random_blacklist_data()
|
||||
self.user = user
|
||||
|
||||
def _setUp(self):
|
||||
super(BlacklistFixture, self)._setUp()
|
||||
self._create_blacklist()
|
||||
|
||||
def _create_blacklist(self):
|
||||
client = BlacklistClient.as_user(self.user)
|
||||
self.post_resp, self.created_blacklist = client.post_blacklist(
|
||||
self.post_model)
|
||||
assert self.post_resp.status == 201
|
||||
self.addCleanup(self.cleanup_blacklist, client,
|
||||
self.created_blacklist.id)
|
||||
|
||||
@classmethod
|
||||
def cleanup_blacklist(cls, client, blacklist_id):
|
||||
try:
|
||||
client.delete_blacklist(blacklist_id)
|
||||
except NotFound:
|
||||
pass
|
@ -21,27 +21,24 @@ from tempest_lib import exceptions
|
||||
from functionaltests.common import datagen
|
||||
from functionaltests.api.v2.base import DesignateV2Test
|
||||
from functionaltests.api.v2.clients.blacklist_client import BlacklistClient
|
||||
from functionaltests.api.v2.fixtures import BlacklistFixture
|
||||
|
||||
|
||||
class BlacklistTest(DesignateV2Test):
|
||||
def _create_blacklist(self, blacklist_model, user='admin'):
|
||||
resp, model = BlacklistClient.as_user(user).post_blacklist(
|
||||
blacklist_model)
|
||||
self.assertEqual(resp.status, 201)
|
||||
return resp, model
|
||||
|
||||
def test_list_blacklists(self):
|
||||
self._create_blacklist(datagen.random_blacklist_data())
|
||||
self.useFixture(BlacklistFixture())
|
||||
resp, model = BlacklistClient.as_user('admin').list_blacklists()
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertGreater(len(model.blacklists), 0)
|
||||
|
||||
def test_create_blacklist(self):
|
||||
self._create_blacklist(datagen.random_blacklist_data(), user='admin')
|
||||
fixture = self.useFixture(BlacklistFixture())
|
||||
self.assertEqual(fixture.post_model.pattern,
|
||||
fixture.created_blacklist.pattern)
|
||||
|
||||
def test_update_blacklist(self):
|
||||
post_model = datagen.random_blacklist_data()
|
||||
resp, old_model = self._create_blacklist(post_model)
|
||||
old_model = self.useFixture(BlacklistFixture()).created_blacklist
|
||||
|
||||
patch_model = datagen.random_blacklist_data()
|
||||
resp, new_model = BlacklistClient.as_user('admin').patch_blacklist(
|
||||
@ -55,9 +52,9 @@ class BlacklistTest(DesignateV2Test):
|
||||
self.assertEqual(new_model.pattern, model.pattern)
|
||||
|
||||
def test_delete_blacklist(self):
|
||||
resp, model = self._create_blacklist(datagen.random_blacklist_data())
|
||||
fixture = self.useFixture(BlacklistFixture())
|
||||
resp, model = BlacklistClient.as_user('admin').delete_blacklist(
|
||||
model.id)
|
||||
fixture.created_blacklist.id)
|
||||
self.assertEqual(resp.status, 204)
|
||||
|
||||
def test_get_blacklist_404(self):
|
||||
|
@ -21,26 +21,27 @@ from tempest_lib import exceptions
|
||||
from functionaltests.common import datagen
|
||||
from functionaltests.api.v2.base import DesignateV2Test
|
||||
from functionaltests.api.v2.clients.pool_client import PoolClient
|
||||
from functionaltests.api.v2.fixtures import PoolFixture
|
||||
|
||||
|
||||
class PoolTest(DesignateV2Test):
|
||||
def _create_pool(self, pool_model, user='admin'):
|
||||
resp, model = PoolClient.as_user(user).post_pool(pool_model)
|
||||
self.assertEqual(resp.status, 201)
|
||||
return resp, model
|
||||
|
||||
def test_list_pools(self):
|
||||
self._create_pool(datagen.random_pool_data())
|
||||
self.useFixture(PoolFixture())
|
||||
resp, model = PoolClient.as_user('admin').list_pools()
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertGreater(len(model.pools), 0)
|
||||
|
||||
def test_create_pool(self):
|
||||
self._create_pool(datagen.random_pool_data(), user='admin')
|
||||
fixture = self.useFixture(PoolFixture())
|
||||
post_model = fixture.post_model
|
||||
created_pool = fixture.created_pool
|
||||
|
||||
self.assertEqual(post_model.name, created_pool.name)
|
||||
self.assertEqual(post_model.ns_records, created_pool.ns_records)
|
||||
|
||||
def test_update_pool(self):
|
||||
post_model = datagen.random_pool_data()
|
||||
resp, old_model = self._create_pool(post_model)
|
||||
old_model = self.useFixture(PoolFixture()).created_pool
|
||||
|
||||
patch_model = datagen.random_pool_data()
|
||||
resp, new_model = PoolClient.as_user('admin').patch_pool(
|
||||
@ -53,8 +54,8 @@ class PoolTest(DesignateV2Test):
|
||||
self.assertEqual(new_model.name, patch_model.name)
|
||||
|
||||
def test_delete_pool(self):
|
||||
resp, model = self._create_pool(datagen.random_pool_data())
|
||||
resp, model = PoolClient.as_user('admin').delete_pool(model.id)
|
||||
pool = self.useFixture(PoolFixture()).created_pool
|
||||
resp, model = PoolClient.as_user('admin').delete_pool(pool.id)
|
||||
self.assertEqual(resp.status, 204)
|
||||
|
||||
def test_get_pool_404(self):
|
||||
|
@ -21,7 +21,8 @@ from functionaltests.common import dnsclient
|
||||
from functionaltests.common import utils
|
||||
from functionaltests.api.v2.base import DesignateV2Test
|
||||
from functionaltests.api.v2.clients.recordset_client import RecordsetClient
|
||||
from functionaltests.api.v2.clients.zone_client import ZoneClient
|
||||
from functionaltests.api.v2.fixtures import ZoneFixture
|
||||
from functionaltests.api.v2.fixtures import RecordsetFixture
|
||||
|
||||
|
||||
RECORDSETS_DATASET = {
|
||||
@ -74,14 +75,15 @@ class RecordsetTest(DesignateV2Test):
|
||||
def setUp(self):
|
||||
super(RecordsetTest, self).setUp()
|
||||
self.increase_quotas(user='default')
|
||||
resp, self.zone = ZoneClient.as_user('default').post_zone(
|
||||
datagen.random_zone_data())
|
||||
ZoneClient.as_user('default').wait_for_zone(self.zone.id)
|
||||
self.zone = self.useFixture(ZoneFixture()).created_zone
|
||||
|
||||
def test_list_recordsets(self):
|
||||
post_model = datagen.random_a_recordset(self.zone.name)
|
||||
self.useFixture(RecordsetFixture(self.zone.id, post_model))
|
||||
resp, model = RecordsetClient.as_user('default') \
|
||||
.list_recordsets(self.zone.id)
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertGreater(len(model.recordsets), 0)
|
||||
|
||||
def assert_dns(self, model):
|
||||
results = dnsclient.query_servers(model.name, model.type)
|
||||
@ -109,20 +111,10 @@ class RecordsetTest(DesignateV2Test):
|
||||
@utils.parameterized(RECORDSETS_DATASET)
|
||||
def test_crud_recordset(self, make_recordset):
|
||||
post_model = make_recordset(self.zone)
|
||||
fixture = self.useFixture(RecordsetFixture(self.zone.id, post_model))
|
||||
recordset_id = fixture.created_recordset.id
|
||||
|
||||
resp, post_resp_model = RecordsetClient.as_user('default') \
|
||||
.post_recordset(self.zone.id, post_model)
|
||||
self.assertEqual(resp.status, 202, "on post response")
|
||||
self.assertEqual(post_resp_model.status, "PENDING")
|
||||
self.assertEqual(post_resp_model.name, post_model.name)
|
||||
self.assertEqual(post_resp_model.records, post_model.records)
|
||||
self.assertEqual(post_resp_model.ttl, post_model.ttl)
|
||||
|
||||
recordset_id = post_resp_model.id
|
||||
RecordsetClient.as_user('default').wait_for_recordset(
|
||||
self.zone.id, recordset_id)
|
||||
|
||||
self.assert_dns(post_model)
|
||||
self.assert_dns(fixture.post_model)
|
||||
|
||||
put_model = make_recordset(self.zone)
|
||||
del put_model.name # don't try to update the name
|
||||
@ -164,16 +156,10 @@ class RecordsetTest(DesignateV2Test):
|
||||
data = data or ["b0rk"]
|
||||
|
||||
post_model = make_recordset(self.zone)
|
||||
fixture = self.useFixture(RecordsetFixture(self.zone.id, post_model))
|
||||
recordset_id = fixture.created_recordset.id
|
||||
|
||||
client = RecordsetClient.as_user('default')
|
||||
resp, post_resp_model = client.post_recordset(
|
||||
self.zone.id, post_model)
|
||||
|
||||
recordset_id = post_resp_model.id
|
||||
|
||||
client.wait_for_recordset(
|
||||
self.zone.id, recordset_id)
|
||||
|
||||
for i in data:
|
||||
model = make_recordset(self.zone)
|
||||
model.data = i
|
||||
@ -183,14 +169,8 @@ class RecordsetTest(DesignateV2Test):
|
||||
|
||||
@utils.parameterized(WILDCARD_RECORDSETS_DATASET)
|
||||
def test_can_create_and_query_wildcard_recordset(self, make_recordset):
|
||||
client = RecordsetClient.as_user('default')
|
||||
post_model = make_recordset(self.zone)
|
||||
|
||||
resp, post_resp_model = client.post_recordset(self.zone.id, post_model)
|
||||
self.assertEqual(resp.status, 202)
|
||||
|
||||
recordset_id = post_resp_model.id
|
||||
client.wait_for_recordset(self.zone.id, recordset_id)
|
||||
self.useFixture(RecordsetFixture(self.zone.id, post_model))
|
||||
|
||||
verify_models = [
|
||||
post_model.from_dict(post_model.to_dict()) for x in range(3)
|
||||
@ -211,8 +191,7 @@ class RecordsetOwnershipTest(DesignateV2Test):
|
||||
self.increase_quotas(user='alt')
|
||||
|
||||
def test_no_create_recordset_by_alt_tenant(self):
|
||||
resp, zone = ZoneClient.as_user('default').post_zone(
|
||||
datagen.random_zone_data())
|
||||
zone = self.useFixture(ZoneFixture(user='default')).created_zone
|
||||
|
||||
# try with name=A123456.zone.com.
|
||||
recordset = datagen.random_a_recordset(zone_name=zone.name)
|
||||
@ -234,16 +213,14 @@ class RecordsetOwnershipTest(DesignateV2Test):
|
||||
recordset.name = 'b.c.' + zone_data.name
|
||||
zone_data.name = 'a.b.c.' + zone_data.name
|
||||
|
||||
resp, zone = ZoneClient.as_user('default').post_zone(zone_data)
|
||||
fixture = self.useFixture(ZoneFixture(zone_data, user='default'))
|
||||
self.assertRaises(exceptions.RestClientException,
|
||||
lambda: RecordsetClient.as_user('alt')
|
||||
.post_recordset(zone.id, recordset))
|
||||
.post_recordset(fixture.created_zone.id, recordset))
|
||||
|
||||
def test_no_create_recordset_via_alt_domain(self):
|
||||
resp, zone = ZoneClient.as_user('default').post_zone(
|
||||
datagen.random_zone_data())
|
||||
resp, alt_zone = ZoneClient.as_user('alt').post_zone(
|
||||
datagen.random_zone_data())
|
||||
zone = self.useFixture(ZoneFixture(user='default')).created_zone
|
||||
alt_zone = self.useFixture(ZoneFixture(user='alt')).created_zone
|
||||
|
||||
# alt attempts to create record with name A12345.{zone}
|
||||
recordset = datagen.random_a_recordset(zone_name=zone.name)
|
||||
|
@ -23,6 +23,9 @@ from functionaltests.api.v2.base import DesignateV2Test
|
||||
from functionaltests.api.v2.clients.zone_client import ZoneClient
|
||||
from functionaltests.api.v2.clients.zone_import_client import ZoneImportClient
|
||||
from functionaltests.api.v2.clients.zone_export_client import ZoneExportClient
|
||||
from functionaltests.api.v2.fixtures import ZoneFixture
|
||||
from functionaltests.api.v2.fixtures import ZoneImportFixture
|
||||
from functionaltests.api.v2.fixtures import ZoneExportFixture
|
||||
|
||||
|
||||
class ZoneTest(DesignateV2Test):
|
||||
@ -30,25 +33,18 @@ class ZoneTest(DesignateV2Test):
|
||||
def setUp(self):
|
||||
super(ZoneTest, self).setUp()
|
||||
self.increase_quotas(user='default')
|
||||
|
||||
def _create_zone(self, zone_model, user='default'):
|
||||
resp, model = ZoneClient.as_user(user).post_zone(zone_model)
|
||||
self.assertEqual(resp.status, 202)
|
||||
ZoneClient.as_user(user).wait_for_zone(model.id)
|
||||
return resp, model
|
||||
self.fixture = self.useFixture(ZoneFixture(user='default'))
|
||||
|
||||
def test_list_zones(self):
|
||||
self._create_zone(datagen.random_zone_data())
|
||||
resp, model = ZoneClient.as_user('default').list_zones()
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertGreater(len(model.zones), 0)
|
||||
|
||||
def test_create_zone(self):
|
||||
self._create_zone(datagen.random_zone_data(), user='default')
|
||||
self.assertEqual(self.fixture.post_resp.status, 202)
|
||||
|
||||
def test_update_zone(self):
|
||||
post_model = datagen.random_zone_data()
|
||||
resp, old_model = self._create_zone(post_model)
|
||||
old_model = self.fixture.created_zone
|
||||
|
||||
patch_model = datagen.random_zone_data()
|
||||
del patch_model.name # don't try to override the zone name
|
||||
@ -65,10 +61,10 @@ class ZoneTest(DesignateV2Test):
|
||||
self.assertEqual(new_model.email, patch_model.email)
|
||||
|
||||
def test_delete_zone(self):
|
||||
resp, model = self._create_zone(datagen.random_zone_data())
|
||||
resp, model = ZoneClient.as_user('default').delete_zone(model.id)
|
||||
client = ZoneClient.as_user('default')
|
||||
resp, model = client.delete_zone(self.fixture.created_zone.id)
|
||||
self.assertEqual(resp.status, 202)
|
||||
ZoneClient.as_user('default').wait_for_zone_404(model.id)
|
||||
client.wait_for_zone_404(model.id)
|
||||
|
||||
|
||||
class ZoneOwnershipTest(DesignateV2Test):
|
||||
@ -78,60 +74,48 @@ class ZoneOwnershipTest(DesignateV2Test):
|
||||
self.increase_quotas(user='default')
|
||||
self.increase_quotas(user='alt')
|
||||
|
||||
def _create_zone(self, zone_model, user):
|
||||
resp, model = ZoneClient.as_user(user).post_zone(zone_model)
|
||||
self.assertEqual(resp.status, 202)
|
||||
ZoneClient.as_user(user).wait_for_zone(model.id)
|
||||
return resp, model
|
||||
|
||||
def test_no_create_duplicate_domain(self):
|
||||
zone = datagen.random_zone_data()
|
||||
self._create_zone(zone, user='default')
|
||||
post_model = self.useFixture(ZoneFixture(user='default')).post_model
|
||||
self.assertRaises(Conflict,
|
||||
lambda: self._create_zone(zone, user='default'))
|
||||
lambda: ZoneClient.as_user('default').post_zone(post_model))
|
||||
self.assertRaises(Conflict,
|
||||
lambda: self._create_zone(zone, user='alt'))
|
||||
lambda: ZoneClient.as_user('alt').post_zone(post_model))
|
||||
|
||||
def test_no_create_subdomain_by_alt_user(self):
|
||||
zone = datagen.random_zone_data()
|
||||
zone = self.useFixture(ZoneFixture(user='default')).post_model
|
||||
subzone = datagen.random_zone_data(name='sub.' + zone.name)
|
||||
subsubzone = datagen.random_zone_data(name='sub.sub.' + zone.name)
|
||||
self._create_zone(zone, user='default')
|
||||
self.assertRaises(Forbidden,
|
||||
lambda: self._create_zone(subzone, user='alt'))
|
||||
lambda: ZoneClient.as_user('alt').post_zone(subzone))
|
||||
self.assertRaises(Forbidden,
|
||||
lambda: self._create_zone(subsubzone, user='alt'))
|
||||
lambda: ZoneClient.as_user('alt').post_zone(subsubzone))
|
||||
|
||||
def test_no_create_superdomain_by_alt_user(self):
|
||||
superzone = datagen.random_zone_data()
|
||||
zone = datagen.random_zone_data(name="a.b." + superzone.name)
|
||||
self._create_zone(zone, user='default')
|
||||
self.useFixture(ZoneFixture(zone, user='default'))
|
||||
self.assertRaises(Forbidden,
|
||||
lambda: self._create_zone(superzone, user='alt'))
|
||||
lambda: ZoneClient.as_user('alt').post_zone(superzone))
|
||||
|
||||
|
||||
class ZoneImportTest(DesignateV2Test):
|
||||
|
||||
def setUp(self):
|
||||
super(ZoneImportTest, self).setUp()
|
||||
self.increase_quotas(user='default')
|
||||
|
||||
def test_import_domain(self):
|
||||
user = 'default'
|
||||
import_client = ZoneImportClient.as_user(user)
|
||||
zone_client = ZoneClient.as_user(user)
|
||||
|
||||
zonefile = datagen.random_zonefile_data()
|
||||
resp, model = import_client.post_zone_import(
|
||||
zonefile)
|
||||
import_id = model.id
|
||||
self.assertEqual(resp.status, 202)
|
||||
self.assertEqual(model.status, 'PENDING')
|
||||
import_client.wait_for_zone_import(import_id)
|
||||
fixture = self.useFixture(ZoneImportFixture(user=user))
|
||||
import_id = fixture.zone_import.id
|
||||
|
||||
resp, model = import_client.get_zone_import(
|
||||
model.id)
|
||||
resp, model = import_client.get_zone_import(import_id)
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertEqual(model.status, 'COMPLETE')
|
||||
self.addCleanup(ZoneFixture.cleanup_zone, zone_client, model.zone_id)
|
||||
|
||||
# Wait for the zone to become 'ACTIVE'
|
||||
zone_client.wait_for_zone(model.zone_id)
|
||||
@ -147,22 +131,18 @@ class ZoneExportTest(DesignateV2Test):
|
||||
|
||||
def setUp(self):
|
||||
super(ZoneExportTest, self).setUp()
|
||||
self.increase_quotas(user='default')
|
||||
|
||||
def test_import_domain(self):
|
||||
def test_export_domain(self):
|
||||
user = 'default'
|
||||
resp, zone = ZoneClient.as_user(user).post_zone(
|
||||
datagen.random_zone_data())
|
||||
ZoneClient.as_user(user).wait_for_zone(zone.id)
|
||||
zone_fixture = self.useFixture(ZoneFixture(user=user))
|
||||
zone = zone_fixture.created_zone
|
||||
|
||||
export_fixture = self.useFixture(ZoneExportFixture(zone.id, user=user))
|
||||
export_id = export_fixture.zone_export.id
|
||||
|
||||
export_client = ZoneExportClient.as_user(user)
|
||||
|
||||
resp, model = export_client.post_zone_export(zone.id)
|
||||
|
||||
export_id = model.id
|
||||
self.assertEqual(resp.status, 202)
|
||||
self.assertEqual(model.status, 'PENDING')
|
||||
export_client.wait_for_zone_export(export_id)
|
||||
|
||||
resp, model = export_client.get_zone_export(export_id)
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertEqual(model.status, 'COMPLETE')
|
||||
|
@ -23,6 +23,8 @@ from functionaltests.api.v2.clients.transfer_requests_client import \
|
||||
from functionaltests.api.v2.clients.transfer_accepts_client import \
|
||||
TransferAcceptClient
|
||||
from functionaltests.api.v2.clients.zone_client import ZoneClient
|
||||
from functionaltests.api.v2.fixtures import ZoneFixture
|
||||
from functionaltests.api.v2.fixtures import TransferRequestFixture
|
||||
|
||||
|
||||
@utils.parameterized_class
|
||||
@ -32,58 +34,89 @@ class TransferZoneOwnerShipTest(DesignateV2Test):
|
||||
super(TransferZoneOwnerShipTest, self).setUp()
|
||||
self.increase_quotas(user='default')
|
||||
self.increase_quotas(user='alt')
|
||||
resp, self.zone = ZoneClient.as_user('default').post_zone(
|
||||
datagen.random_zone_data())
|
||||
ZoneClient.as_user('default').wait_for_zone(self.zone.id)
|
||||
self.zone = self.useFixture(ZoneFixture()).created_zone
|
||||
|
||||
def test_list_transfer_requests(self):
|
||||
self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=datagen.random_transfer_request_data(),
|
||||
))
|
||||
resp, model = TransferRequestClient.as_user('default') \
|
||||
.list_transfer_requests()
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertGreater(len(model.transfer_requests), 0)
|
||||
|
||||
def test_create_zone_transfer_request(self):
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
.post_transfer_request(self.zone.id,
|
||||
datagen.random_transfer_request_data())
|
||||
self.assertEqual(resp.status, 201)
|
||||
fixture = self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=datagen.random_transfer_request_data(),
|
||||
))
|
||||
self.assertEqual(fixture.post_resp.status, 201)
|
||||
self.assertEqual(fixture.transfer_request.zone_id, self.zone.id)
|
||||
# todo: this fails. the zone_name is null in the POST's response, but
|
||||
# it's filled in on a subsequent get
|
||||
# self.assertEqual(fixture.transfer_request.zone_name, self.zone.name)
|
||||
self.assertEqual(fixture.transfer_request.project_id,
|
||||
TransferRequestClient.as_user(fixture.user).tenant_id)
|
||||
self.assertEqual(fixture.transfer_request.target_project_id, None)
|
||||
|
||||
# check that the zone_name is filled in
|
||||
resp, transfer_request = TransferRequestClient.as_user(fixture.user) \
|
||||
.get_transfer_request(fixture.transfer_request.id)
|
||||
self.assertEqual(transfer_request.zone_name, self.zone.name)
|
||||
|
||||
def test_view_zone_transfer_request(self):
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
.post_transfer_request(self.zone.id,
|
||||
datagen.random_transfer_request_data())
|
||||
self.assertEqual(resp.status, 201)
|
||||
fixture = self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=datagen.random_transfer_request_data(),
|
||||
))
|
||||
|
||||
resp, transfer_request = TransferRequestClient.as_user('alt')\
|
||||
.get_transfer_request(transfer_request.id)
|
||||
.get_transfer_request(fixture.transfer_request.id)
|
||||
|
||||
self.assertEqual(resp.status, 200)
|
||||
self.assertEqual(getattr(transfer_request, 'key', None), None)
|
||||
|
||||
def test_create_zone_transfer_request_scoped(self):
|
||||
|
||||
target_project_id = TransferRequestClient.as_user('alt').tenant_id
|
||||
post_model = datagen.random_transfer_request_data(
|
||||
target_project_id=target_project_id)
|
||||
fixture = self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=post_model,
|
||||
user='default',
|
||||
target_user='alt',
|
||||
))
|
||||
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
.post_transfer_request(self.zone.id,
|
||||
datagen.random_transfer_request_data(
|
||||
target_project_id=target_project_id))
|
||||
self.assertEqual(resp.status, 201)
|
||||
self.assertEqual(transfer_request.target_project_id, target_project_id)
|
||||
self.assertEqual(fixture.post_resp.status, 201)
|
||||
self.assertEqual(fixture.transfer_request.zone_id, self.zone.id)
|
||||
# todo: the zone_name is null initially, but shows up on later gets
|
||||
# self.assertEqual(fixture.transfer_request.zone_name, self.zone.name)
|
||||
self.assertEqual(fixture.transfer_request.project_id,
|
||||
TransferRequestClient.as_user(fixture.user).tenant_id)
|
||||
self.assertEqual(fixture.transfer_request.target_project_id,
|
||||
target_project_id)
|
||||
|
||||
resp, transfer_request = TransferRequestClient.as_user('alt')\
|
||||
.get_transfer_request(transfer_request.id)
|
||||
.get_transfer_request(fixture.transfer_request.id)
|
||||
|
||||
self.assertEqual(resp.status, 200)
|
||||
|
||||
def test_view_zone_transfer_request_scoped(self):
|
||||
target_project_id = TransferRequestClient.as_user('admin').tenant_id
|
||||
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
.post_transfer_request(self.zone.id,
|
||||
datagen.random_transfer_request_data(
|
||||
target_project_id=target_project_id))
|
||||
self.assertEqual(resp.status, 201)
|
||||
self.assertEqual(transfer_request.target_project_id, target_project_id)
|
||||
post_model = datagen.random_transfer_request_data(
|
||||
target_project_id=target_project_id)
|
||||
fixture = self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=post_model,
|
||||
user='default',
|
||||
target_user='admin',
|
||||
))
|
||||
transfer_request = fixture.transfer_request
|
||||
|
||||
self.assertEqual(transfer_request.target_project_id,
|
||||
target_project_id)
|
||||
|
||||
self._assert_exception(
|
||||
exceptions.NotFound, 'zone_transfer_request_not_found', 404,
|
||||
@ -96,15 +129,21 @@ class TransferZoneOwnerShipTest(DesignateV2Test):
|
||||
self.assertEqual(resp.status, 200)
|
||||
|
||||
def test_create_zone_transfer_request_no_body(self):
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
client = TransferRequestClient.as_user('default')
|
||||
resp, transfer_request = client \
|
||||
.post_transfer_request_empty_body(self.zone.id)
|
||||
self.assertEqual(resp.status, 201)
|
||||
self.addCleanup(TransferRequestFixture.cleanup_transfer_request,
|
||||
client, transfer_request.id)
|
||||
|
||||
def test_do_zone_transfer(self):
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
.post_transfer_request(self.zone.id,
|
||||
datagen.random_transfer_request_data())
|
||||
self.assertEqual(resp.status, 201)
|
||||
fixture = self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=datagen.random_transfer_request_data(),
|
||||
user='default',
|
||||
target_user='alt',
|
||||
))
|
||||
transfer_request = fixture.transfer_request
|
||||
|
||||
resp, transfer_accept = TransferAcceptClient.as_user('alt')\
|
||||
.post_transfer_accept(
|
||||
@ -115,15 +154,16 @@ class TransferZoneOwnerShipTest(DesignateV2Test):
|
||||
self.assertEqual(resp.status, 201)
|
||||
|
||||
def test_do_zone_transfer_scoped(self):
|
||||
|
||||
target_project_id = TransferRequestClient.as_user('alt').tenant_id
|
||||
|
||||
resp, transfer_request = TransferRequestClient.as_user('default')\
|
||||
.post_transfer_request(self.zone.id,
|
||||
datagen.random_transfer_request_data(
|
||||
target_project_id=target_project_id))
|
||||
|
||||
self.assertEqual(resp.status, 201)
|
||||
post_model = datagen.random_transfer_request_data(
|
||||
target_project_id=target_project_id)
|
||||
fixture = self.useFixture(TransferRequestFixture(
|
||||
zone=self.zone,
|
||||
post_model=post_model,
|
||||
user='default',
|
||||
target_user='alt',
|
||||
))
|
||||
transfer_request = fixture.transfer_request
|
||||
|
||||
resp, retrived_transfer_request = TransferRequestClient.\
|
||||
as_user('alt').get_transfer_request(transfer_request.id)
|
||||
|
@ -78,7 +78,7 @@ class CollectionModel(BaseModel):
|
||||
collection.append(cls.MODEL_TYPE.from_dict(d))
|
||||
setattr(model, cls.COLLECTION_NAME, collection)
|
||||
|
||||
# deserialize data['
|
||||
# deserialize data['links'], data['metadata'], etc
|
||||
for key, model_type in cls.SUB_MODELS.items():
|
||||
if hasattr(model, key):
|
||||
val = getattr(model, key)
|
||||
|
Loading…
x
Reference in New Issue
Block a user