Merge "Cleanup data created in the functional tests"

This commit is contained in:
Jenkins 2015-09-16 14:05:34 +00:00 committed by Gerrit Code Review
commit 2d247d0cc7
8 changed files with 384 additions and 151 deletions

@ -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

@ -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)