Add more test coverage for Ranger services
Change-Id: Id517254464e50e36d95a26d49ddd1288819e5032
This commit is contained in:
parent
c9dd2c3adb
commit
3aee34ac5f
@ -28,56 +28,11 @@ CONF = config.CONF
|
||||
class RmsClient(base_client.RangerClientBase):
|
||||
|
||||
rms_url = CONF.ranger.ranger_rms_base_url
|
||||
identity_url = CONF.identity.uri_v3 or ""
|
||||
identity_url = identity_url.strip('/v3')
|
||||
version = "v2"
|
||||
|
||||
def create_region(self, region_id, **kwargs):
|
||||
def create_region(self, **kwargs):
|
||||
uri = '%s/%s/orm/regions' % (self.rms_url, self.version)
|
||||
post_body = {
|
||||
'status': 'functional',
|
||||
'name': region_id,
|
||||
'id': region_id,
|
||||
'description': region_id,
|
||||
'designType': 'compact',
|
||||
'locationType': 'testlocation',
|
||||
'vlcpName': 'testvlcp',
|
||||
'address': {
|
||||
'country': 'usa',
|
||||
'state': 'tx',
|
||||
'city': 'austin',
|
||||
'street': '12 main',
|
||||
'zip': '12345'
|
||||
},
|
||||
'metadata': {
|
||||
'key': ["value"]
|
||||
},
|
||||
'endpoints': [
|
||||
{
|
||||
'publicURL':
|
||||
'https://dashboard-ranger.%s.com' % region_id,
|
||||
'type': 'dashboard'
|
||||
},
|
||||
{
|
||||
'publicURL': self.identity_url,
|
||||
'type': 'identity'
|
||||
},
|
||||
{
|
||||
'publicURL':
|
||||
'https://ranger-agent.%s.com:9010' % region_id,
|
||||
'type': 'ord'
|
||||
},
|
||||
|
||||
],
|
||||
'rangerAgentVersion': '3.6',
|
||||
'OSVersion': 'kilo',
|
||||
'CLLI': 'testclli'
|
||||
}
|
||||
if kwargs is not None:
|
||||
for key in kwargs:
|
||||
post_body[key] = kwargs[key]
|
||||
|
||||
post_body = json.dumps(post_body)
|
||||
post_body = json.dumps(kwargs)
|
||||
return self.post_request(uri, post_body, schema.create_region)
|
||||
|
||||
def update_region(self, region_id, **kwargs):
|
||||
|
@ -162,11 +162,11 @@ class ImsBaseOrmTest(base.BaseOrmTest):
|
||||
_, body = cls.client.get_image(image_id)
|
||||
image = body["image"]
|
||||
|
||||
regions_on_image = [region for region in image["regions"]]
|
||||
if regions_on_image:
|
||||
region_id = regions_on_image[0]["name"]
|
||||
regions_on_image = [region["name"] for region in image["regions"]]
|
||||
for region in regions_on_image:
|
||||
cls._delete_region_from_image_and_validate_deletion(
|
||||
image_id, region_id)
|
||||
image_id, region)
|
||||
cls._wait_for_image_status_on_dcp(image_id, "no regions")
|
||||
|
||||
cls.client.delete_image(image_id)
|
||||
cls._validate_image_deletion_on_lcp(image_id)
|
||||
@ -175,7 +175,22 @@ class ImsBaseOrmTest(base.BaseOrmTest):
|
||||
def _delete_region_from_image_and_validate_deletion(cls, image_id,
|
||||
region_id):
|
||||
cls.client.delete_region_from_image(image_id, region_id)
|
||||
cls._wait_for_image_status_on_dcp(image_id, "no regions")
|
||||
start = int(time.time())
|
||||
while True:
|
||||
time.sleep(cls.build_interval)
|
||||
if int(time.time()) - start >= cls.build_timeout:
|
||||
message = ('Image %s failed to be deleted'
|
||||
' within the required time (%s s)'
|
||||
% (image_id, cls.build_timeout))
|
||||
raise exceptions.TimeoutException(message)
|
||||
|
||||
not_found = True
|
||||
_, body = cls.client.get_image(image_id)
|
||||
for regions_on_image in body['image']['regions']:
|
||||
if regions_on_image['name'] == region_id:
|
||||
not_found = False
|
||||
if not_found:
|
||||
break
|
||||
|
||||
@classmethod
|
||||
def _wait_for_image_deletion_on_dcp(cls, image_id):
|
||||
|
@ -16,7 +16,12 @@
|
||||
from oslo_log import log as logging
|
||||
from ranger_tempest_plugin.data_utils import data_utils
|
||||
from ranger_tempest_plugin.tests.api import base
|
||||
from tempest import config
|
||||
|
||||
from tempest.lib import exceptions
|
||||
import time
|
||||
|
||||
CONF = config.CONF
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -26,20 +31,134 @@ class RmsBaseOrmTest(base.BaseOrmTest):
|
||||
def resource_setup(cls):
|
||||
cls.setup_ids = []
|
||||
# create standard region
|
||||
_, cls.region_1 = cls.client.create_region(data_utils.rand_name())
|
||||
_, cls.region_1 = cls.client.create_region(**cls._get_region_params())
|
||||
cls.setup_ids.append(cls.region_1['id'])
|
||||
|
||||
# create region sharing region_1 properties
|
||||
_, cls.region_2 = cls.client.create_region(data_utils.rand_name(),
|
||||
**{'metadata':
|
||||
{'key': ["value"]}})
|
||||
another_region = cls._get_region_params()
|
||||
another_region['metadata'] = {'key2': ['value2']}
|
||||
_, cls.region_2 = cls.client.create_region(**another_region)
|
||||
cls.setup_ids.append(cls.region_2['id'])
|
||||
|
||||
for region_id in cls.setup_ids:
|
||||
cls.addClassResourceCleanup(cls.client.delete_region, region_id)
|
||||
|
||||
# create customer
|
||||
customer_parms = cls._get_customer_params()
|
||||
cls.setup_customer = \
|
||||
cls._create_customer_validate_creation(**customer_parms)
|
||||
|
||||
super(RmsBaseOrmTest, cls).resource_setup()
|
||||
|
||||
@classmethod
|
||||
def setup_clients(cls):
|
||||
cls.client = cls.os_primary.rms_client
|
||||
cls.cms_client = cls.os_primary.cms_client
|
||||
super(RmsBaseOrmTest, cls).setup_clients()
|
||||
|
||||
@classmethod
|
||||
def _get_region_params(cls):
|
||||
identity_url = CONF.identity.uri_v3 or ""
|
||||
identity_url = identity_url.strip('/v3')
|
||||
region_id = data_utils.rand_name()
|
||||
|
||||
region = {}
|
||||
region = {
|
||||
'status': 'functional',
|
||||
'name': region_id,
|
||||
'id': region_id,
|
||||
'description': region_id,
|
||||
'designType': 'Cruiser',
|
||||
'locationType': 'testlocation',
|
||||
'vlcpName': region_id,
|
||||
'address': {
|
||||
'country': 'usa',
|
||||
'state': 'tx',
|
||||
'city': 'austin',
|
||||
'street': '12 main',
|
||||
'zip': '12345'
|
||||
},
|
||||
'metadata': {
|
||||
'key': ['value'],
|
||||
'key2': ['value2']
|
||||
},
|
||||
'endpoints': [
|
||||
{
|
||||
'publicURL':
|
||||
'https://dashboard-nc.%s.cci.att.com' % region_id,
|
||||
'type': 'dashboard'
|
||||
},
|
||||
{
|
||||
'publicURL': identity_url,
|
||||
'type': 'identity'
|
||||
},
|
||||
{
|
||||
'publicURL':
|
||||
'https://ranger-agent-nc.%s.cci.att.com' % region_id,
|
||||
'type': 'ord'
|
||||
},
|
||||
|
||||
],
|
||||
'rangerAgentVersion': '2.0',
|
||||
'OSVersion': 'Stein',
|
||||
'CLLI': 'testclli'
|
||||
}
|
||||
|
||||
return region
|
||||
|
||||
@classmethod
|
||||
def _get_customer_params(cls):
|
||||
customer = {}
|
||||
customer['description'] = data_utils.rand_name('ormTempestCms')
|
||||
customer['enabled'] = True
|
||||
customer['name'] = data_utils.rand_name('ormTempestCms')
|
||||
customer['regions'] = [{'name': CONF.identity.region}]
|
||||
customer['defaultQuotas'] = []
|
||||
customer['users'] = []
|
||||
return customer
|
||||
|
||||
@classmethod
|
||||
def _wait_for_status(cls, customer_id, status):
|
||||
customer_status = cls.cms_client.get_customer(customer_id)[1]['status']
|
||||
start = int(time.time())
|
||||
while customer_status != status:
|
||||
time.sleep(cls.build_interval)
|
||||
customer_status = cls.cms_client.get_customer(
|
||||
customer_id)[1]['status']
|
||||
if customer_status == 'Error':
|
||||
message = ('customer %s failed to reach %s status'
|
||||
' and is in ERROR status on orm' %
|
||||
(customer_id, status))
|
||||
raise exceptions.TempestException(message)
|
||||
if int(time.time()) - start >= cls.build_timeout:
|
||||
message = ('customer %s failed to reach %s'
|
||||
'status within the required time (%s s)'
|
||||
'on orm and is in %s status.'
|
||||
% (customer_id, status,
|
||||
cls.build_timeout,
|
||||
customer_status))
|
||||
raise exceptions.TimeoutException(message)
|
||||
|
||||
@classmethod
|
||||
def _create_customer_validate_creation(cls, **kwargs):
|
||||
_, body = cls.cms_client.create_customer(**kwargs)
|
||||
customer_id = body['customer']['id']
|
||||
|
||||
cls.addClassResourceCleanup(
|
||||
cls._delete_customer_validate_deletion, customer_id)
|
||||
|
||||
cls._wait_for_status(customer_id, 'Success')
|
||||
_, customer = cls.cms_client.get_customer(customer_id)
|
||||
return customer
|
||||
|
||||
@classmethod
|
||||
def _delete_customer_validate_deletion(cls, customer_id):
|
||||
_, customer = cls.cms_client.get_customer(customer_id)
|
||||
regions_on_customer = \
|
||||
[region['name'] for region in customer['regions']]
|
||||
|
||||
for region in regions_on_customer:
|
||||
cls.cms_client.delete_region_from_customer(customer_id, region)
|
||||
|
||||
cls._wait_for_status(customer_id, 'no regions')
|
||||
cls.cms_client.delete_customer(customer_id)
|
||||
|
@ -14,12 +14,14 @@
|
||||
# under the License.
|
||||
|
||||
from oslo_concurrency import lockutils
|
||||
from ranger_tempest_plugin import data_utils as orm_data_utils
|
||||
|
||||
from ranger_tempest_plugin.tests.api import ims_base
|
||||
from tempest import config
|
||||
|
||||
from tempest.lib import decorators
|
||||
from tempest.lib import exceptions
|
||||
import testtools
|
||||
|
||||
CONF = config.CONF
|
||||
|
||||
@ -90,6 +92,16 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
|
||||
self._del_img_validate_deletion_on_dcp_and_lcp(id_)
|
||||
self.assertRaises(exceptions.NotFound, self.client.get_image, id_)
|
||||
|
||||
def _create_region_group(self):
|
||||
_, body = self.rms_client.create_region_group(
|
||||
**orm_data_utils.rand_region_group([CONF.identity.region,
|
||||
CONF.ranger.alt_region]))
|
||||
|
||||
group_id = body['group']['id']
|
||||
self.addCleanup(self.rms_client.delete_region_group, group_id)
|
||||
|
||||
return group_id
|
||||
|
||||
@decorators.idempotent_id('2b1bb28b-4151-4e75-ae1b-d21089c3418c')
|
||||
def test_get_image(self):
|
||||
"""Execute 'get_image' using the following options:
|
||||
@ -376,34 +388,36 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
|
||||
image_ids = [img['id'] for img in body['images']]
|
||||
self.assertIn(image['id'], image_ids)
|
||||
|
||||
# TODO(JH629g): following test skipped until protect image bug resolved
|
||||
# @decorators.idempotent_id('59887b26-8e73-4781-87a4-3b505ece0021')
|
||||
# def test_create_image_protected_true(self):
|
||||
# post_body = self._get_image_params()
|
||||
# set Protected True
|
||||
# post_body['protected'] = True
|
||||
@decorators.idempotent_id('59887b26-8e73-4781-87a4-3b505ece0021')
|
||||
def test_create_update_delete_image_protected_true(self):
|
||||
post_body = self._get_image_params()
|
||||
# set protected True
|
||||
post_body['protected'] = True
|
||||
|
||||
# add image to temepst cleanup
|
||||
# self.addCleanup(
|
||||
# self._del_img_validate_deletion_on_dcp_and_lcp,
|
||||
# post_body['id'])
|
||||
|
||||
# call client create_IMAGE and wait till status equals 'Success'
|
||||
# _, body = self.client.create_image(**post_body)
|
||||
# image = body["image"]
|
||||
# self._wait_for_image_status_on_dcp(image['id'], 'Success')
|
||||
# call client create_image and wait till status equals 'Success'
|
||||
_, body = self.client.create_image(**post_body)
|
||||
image = body["image"]
|
||||
self._wait_for_image_status_on_dcp(image['id'], 'Success')
|
||||
|
||||
# verify image record created successfully
|
||||
# _, body = self.client.get_image(image['id'])
|
||||
# image = body["image"]
|
||||
# self.assertEqual(image["regions"][0]["name"], CONF.identity.region)
|
||||
_, body = self.client.get_image(image['id'])
|
||||
image = body["image"]
|
||||
self.assertEqual(image["regions"][0]["name"], CONF.identity.region)
|
||||
self.assertEqual(image["protected"], True)
|
||||
|
||||
# unset protect for cleanup
|
||||
# post_body['protected'] = False
|
||||
# _, body = self.client.update_image(post_body['id'],
|
||||
# para=None,
|
||||
# **post_body)
|
||||
# self._wait_for_image_status_on_dcp(image['id'], 'Success')
|
||||
# unset protected to False for delete
|
||||
post_body['protected'] = False
|
||||
_, body = self.client.update_image(post_body['id'],
|
||||
para=None,
|
||||
**post_body)
|
||||
self._wait_for_image_status_on_dcp(image['id'], 'Success')
|
||||
|
||||
_, body = self.client.get_image(image['id'])
|
||||
image = body["image"]
|
||||
self.assertEqual(image["protected"], False)
|
||||
|
||||
# delete image
|
||||
self._del_img_validate_deletion_on_dcp_and_lcp(post_body['id'])
|
||||
|
||||
@decorators.idempotent_id('56cd1de0-3908-41d5-af98-45ad95463817')
|
||||
def test_create_image_with_tags_properties(self):
|
||||
@ -433,6 +447,7 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
|
||||
self.assertListEqual(image["tags"], tags)
|
||||
self.assertDictEqual(image["properties"], properties)
|
||||
|
||||
@SYNC('region')
|
||||
@decorators.idempotent_id('67aa7014-4dbb-4d66-bc7b-1a95a57494f8')
|
||||
def test_create_image_with_uuid(self):
|
||||
post_body = self._get_image_params()
|
||||
@ -452,3 +467,60 @@ class TestTempestIms(ims_base.ImsBaseOrmTest):
|
||||
_, body = self.client.get_image(image['id'])
|
||||
image = body["image"]
|
||||
self.assertEqual(image['id'], post_body['id'])
|
||||
|
||||
@SYNC('region')
|
||||
@testtools.skipUnless(CONF.ranger.alt_region_available,
|
||||
'Alt region not provided, skipping this test')
|
||||
@decorators.idempotent_id('7ae78584-55af-45cb-a4a2-b28cc679699e')
|
||||
def test_create_image_with_region_group(self):
|
||||
# create region group
|
||||
group_id = self._create_region_group()
|
||||
post_body = self._get_image_params()
|
||||
post_body['regions'] = [
|
||||
{
|
||||
'name': group_id,
|
||||
'type': 'group'
|
||||
}
|
||||
]
|
||||
|
||||
# call client create_image and wait till status equals 'Success'
|
||||
_, body = self.client.create_image(**post_body)
|
||||
image = body["image"]
|
||||
|
||||
self.addCleanup(
|
||||
self._del_img_validate_deletion_on_dcp_and_lcp, image['id'])
|
||||
self._wait_for_image_status_on_dcp(image['id'], 'Success')
|
||||
|
||||
# verify image record created successfully
|
||||
_, body = self.client.get_image(image['id'])
|
||||
image = body["image"]
|
||||
|
||||
self.assertEqual(image['status'], 'Success')
|
||||
self.assertEqual(len(image['regions']), 2)
|
||||
|
||||
@SYNC('region')
|
||||
@testtools.skipUnless(CONF.ranger.alt_region_available,
|
||||
'Alt region not provided, skipping this test')
|
||||
@decorators.idempotent_id('73c97918-2081-4f42-9c1e-6fd7a9fb8735')
|
||||
def test_create_image_with_two_regions(self):
|
||||
post_body = self._get_image_params()
|
||||
|
||||
region1 = {'name': CONF.identity.region,
|
||||
'type': 'single'}
|
||||
region2 = {'name': CONF.ranger.alt_region,
|
||||
'type': 'single'}
|
||||
post_body['regions'] = [region1, region2]
|
||||
|
||||
# call client create_image and wait till status equals 'Success'
|
||||
_, body = self.client.create_image(**post_body)
|
||||
image = body["image"]
|
||||
self.addCleanup(
|
||||
self._del_img_validate_deletion_on_dcp_and_lcp, image['id'])
|
||||
self._wait_for_image_status_on_dcp(image['id'], 'Success')
|
||||
|
||||
# verify image record created successfully
|
||||
_, body = self.client.get_image(image['id'])
|
||||
image = body["image"]
|
||||
|
||||
self.assertEqual(image['status'], 'Success')
|
||||
self.assertEqual(len(image['regions']), 2)
|
||||
|
@ -14,55 +14,41 @@
|
||||
# under the License.
|
||||
|
||||
from ranger_tempest_plugin import data_utils as orm_data_utils
|
||||
from ranger_tempest_plugin.tests.api import base
|
||||
from ranger_tempest_plugin.tests.api import rms_base
|
||||
|
||||
from tempest.lib import decorators
|
||||
from tempest.lib import exceptions
|
||||
|
||||
from tempest.lib.common.utils import data_utils
|
||||
|
||||
|
||||
class TestTempestRegionGroup(base.BaseOrmTest):
|
||||
class TestTempestRegionGroup(rms_base.RmsBaseOrmTest):
|
||||
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
cls.setup_ids = []
|
||||
cls.group_ids = []
|
||||
cls.rms_client = cls.os_admin.rms_client
|
||||
# create standard region
|
||||
_, cls.region_1 = cls.rms_client.create_region(data_utils.rand_name())
|
||||
cls.setup_ids.append(cls.region_1['id'])
|
||||
# create region sharing region_1 properties
|
||||
_, cls.region_2 = cls.rms_client.create_region(data_utils.rand_name())
|
||||
cls.setup_ids.append(cls.region_2['id'])
|
||||
super(TestTempestRegionGroup, cls).resource_setup()
|
||||
|
||||
_, cls.group_1 = cls.rms_client.create_region_group(
|
||||
cls.group_ids = []
|
||||
_, cls.group_1 = cls.client.create_region_group(
|
||||
**orm_data_utils.rand_region_group(cls.setup_ids))
|
||||
cls.group_ids.append(cls.group_1['group']['id'])
|
||||
|
||||
_, cls.group_2 = cls.rms_client.create_region_group(
|
||||
_, cls.group_2 = cls.client.create_region_group(
|
||||
**orm_data_utils.rand_region_group(cls.setup_ids))
|
||||
cls.group_ids.append(cls.group_2['group']['id'])
|
||||
|
||||
for region_id in cls.setup_ids:
|
||||
cls.addClassResourceCleanup(cls.rms_client.delete_region,
|
||||
region_id)
|
||||
for group_id in cls.group_ids:
|
||||
cls.addClassResourceCleanup(cls.rms_client.delete_region_group,
|
||||
cls.addClassResourceCleanup(cls.client.delete_region_group,
|
||||
group_id)
|
||||
|
||||
super(TestTempestRegionGroup, cls).resource_setup()
|
||||
|
||||
@decorators.idempotent_id('0d377eb2-754d-49c1-9a4f-c7019dfe80ca')
|
||||
def test_update_group(self):
|
||||
_id = self.group_ids[-1]
|
||||
group = orm_data_utils.rand_region_group(self.setup_ids, _id)
|
||||
_, body = self.rms_client.update_region_group(_id, **group)
|
||||
_, body = self.client.update_region_group(_id, **group)
|
||||
self.assert_expected(group, body['group'], ['regions'])
|
||||
|
||||
@decorators.idempotent_id('b946c6c4-d601-42b9-befd-ba40992a3c53')
|
||||
def test_list_groups(self):
|
||||
_, body = self.rms_client.list_region_groups()
|
||||
_, body = self.client.list_region_groups()
|
||||
groups = [x['id'] for x in body['groups']]
|
||||
self.assertIn(self.group_1['group']['id'], groups)
|
||||
self.assertIn(self.group_2['group']['id'], groups)
|
||||
@ -70,15 +56,15 @@ class TestTempestRegionGroup(base.BaseOrmTest):
|
||||
@decorators.idempotent_id('9a37d966-4416-4ff3-8f3b-6847810662d7')
|
||||
def test_get_group(self):
|
||||
_id = self.group_1['group']['id']
|
||||
_, body = self.rms_client.get_region_group(_id)
|
||||
_, body = self.client.get_region_group(_id)
|
||||
self.assert_expected(self.group_1['group'], body, ['links'])
|
||||
|
||||
@decorators.idempotent_id('504cc5cb-bc19-48ea-9456-16f5b24c9529')
|
||||
def test_create_region_group(self):
|
||||
_, region_group = self.rms_client.create_region_group(
|
||||
_, region_group = self.client.create_region_group(
|
||||
**orm_data_utils.rand_region_group(self.setup_ids)
|
||||
)
|
||||
_, region_group_details = self.rms_client.get_region_group(
|
||||
_, region_group_details = self.client.get_region_group(
|
||||
region_group['group']['id']
|
||||
)
|
||||
self.assertIn(
|
||||
@ -91,15 +77,15 @@ class TestTempestRegionGroup(base.BaseOrmTest):
|
||||
)
|
||||
|
||||
self.addCleanup(
|
||||
self.rms_client.delete_region_group,
|
||||
self.client.delete_region_group,
|
||||
region_group['group']['id'])
|
||||
|
||||
@decorators.idempotent_id('504cc5cb-bc19-48ea-9456-16f5b24c9530')
|
||||
def test_delete_region_group(self):
|
||||
_, region_group = self.rms_client.create_region_group(
|
||||
_, region_group = self.client.create_region_group(
|
||||
**orm_data_utils.rand_region_group(self.setup_ids)
|
||||
)
|
||||
_, region_group_details = self.rms_client.get_region_group(
|
||||
_, region_group_details = self.client.get_region_group(
|
||||
region_group['group']['id']
|
||||
)
|
||||
|
||||
@ -112,9 +98,9 @@ class TestTempestRegionGroup(base.BaseOrmTest):
|
||||
region_group_details['regions']
|
||||
)
|
||||
|
||||
self.rms_client.delete_region_group(region_group['group']['id'])
|
||||
self.client.delete_region_group(region_group['group']['id'])
|
||||
self.assertRaises(
|
||||
exceptions.NotFound, self.rms_client.get_region_group,
|
||||
exceptions.NotFound, self.client.get_region_group,
|
||||
region_group['group']['id']
|
||||
)
|
||||
|
||||
@ -125,6 +111,6 @@ class TestTempestRegionGroup(base.BaseOrmTest):
|
||||
ids = ['some_non_existenant_region']
|
||||
|
||||
self.assertRaises(
|
||||
exceptions.BadRequest, self.rms_client.create_region_group,
|
||||
exceptions.BadRequest, self.client.create_region_group,
|
||||
**orm_data_utils.rand_region_group(ids)
|
||||
)
|
||||
|
@ -22,11 +22,17 @@ from tempest.lib import exceptions
|
||||
|
||||
class TestTempestRegion(rms_base.RmsBaseOrmTest):
|
||||
|
||||
def _list_regions_with_filter(self, filter, key):
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(
|
||||
all([region[key] == self.region_1[key] for region in regions]))
|
||||
|
||||
@decorators.idempotent_id('829c7da0-2332-4f80-ad35-24306b67ed0e')
|
||||
def test_create_and_delete_region(self):
|
||||
# create new region for API test
|
||||
region = orm_data_utils.rand_region()
|
||||
_, region_body = self.client.create_region(region['id'], **region)
|
||||
_, region_body = self.client.create_region(**region)
|
||||
|
||||
test_region_name = region_body['name']
|
||||
test_region_id = region_body['id']
|
||||
@ -77,19 +83,79 @@ class TestTempestRegion(rms_base.RmsBaseOrmTest):
|
||||
|
||||
@decorators.idempotent_id('f2b2361d-ce71-43a8-9f01-acb529835880')
|
||||
def test_list_region_with_metadata(self):
|
||||
filter = {'metadata': list(self.region_1['metadata'].keys())[0]}
|
||||
self._list_regions_with_filter(filter, 'metadata')
|
||||
filter = {'metadata': list(self.region_2['metadata'].keys())[0]}
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
for r in regions:
|
||||
self.assertIn(filter['metadata'], r['metadata'].keys())
|
||||
|
||||
@decorators.idempotent_id('4533b31a-115d-466d-bf75-8ac24338c1a5')
|
||||
def test_list_region_with_address(self):
|
||||
filter = {
|
||||
'country': self.region_1['address']['country'],
|
||||
'state': self.region_1['address']['state'],
|
||||
'city': self.region_1['address']['city'],
|
||||
'street': self.region_1['address']['street'],
|
||||
'zip': self.region_1['address']['zip']
|
||||
}
|
||||
self._list_regions_with_filter(filter, 'address')
|
||||
|
||||
@decorators.idempotent_id('4235a73b-2437-4466-8af8-5d29da2cd236')
|
||||
def test_list_region_by_address_parameters(self):
|
||||
random_region = orm_data_utils.rand_region()
|
||||
random_region['address']['country'] = 'ABC'
|
||||
random_region['address']['state'] = 'XX'
|
||||
random_region['address']['city'] = 'YYY'
|
||||
random_region['address']['street'] = '123 Test Street'
|
||||
random_region['address']['zip'] = '11211'
|
||||
_, region_body = self.client.create_region(**random_region)
|
||||
self.addCleanup(self.client.delete_region, region_body['id'])
|
||||
|
||||
# Filter by country
|
||||
filter = {'country': region_body['address']['country']}
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(all(
|
||||
[region['address']['country'] == region_body['address']['country']
|
||||
for region in regions]))
|
||||
|
||||
# Filter by state
|
||||
filter = {'state': region_body['address']['state']}
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(all(
|
||||
[region['address']['state'] == region_body['address']['state']
|
||||
for region in regions]))
|
||||
|
||||
# Filter by city
|
||||
filter = {'city': region_body['address']['city']}
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(all(
|
||||
[region['address']['city'] == region_body['address']['city']
|
||||
for region in regions]))
|
||||
|
||||
# Filter by street
|
||||
filter = {'street': region_body['address']['street']}
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(all(
|
||||
[region['address']['street'] == region_body['address']['street']
|
||||
for region in regions]))
|
||||
|
||||
# Filter by zip
|
||||
filter = {'zip': region_body['address']['zip']}
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(all(
|
||||
[region['address']['zip'] == region_body['address']['zip']
|
||||
for region in regions]))
|
||||
|
||||
@decorators.idempotent_id('b40fa67c-94ab-4b33-8441-70f50b50a17e')
|
||||
def test_list_region_with_location_type(self):
|
||||
filter = {'location_type': self.region_1['locationType']}
|
||||
self._list_regions_with_filter(filter, 'locationType')
|
||||
|
||||
@decorators.idempotent_id('726b8215-af10-4385-83c7-32b51502dff1')
|
||||
def test_list_region_with_type(self):
|
||||
filter = {'type': self.region_1['designType']}
|
||||
@ -108,7 +174,7 @@ class TestTempestRegion(rms_base.RmsBaseOrmTest):
|
||||
@decorators.idempotent_id('cefb952f-7777-4878-87d2-d78ac345f0d2')
|
||||
def test_get_region_metadata(self):
|
||||
_, body = self.client.get_region_metadata(self.region_2['id'])
|
||||
self.assert_expected({'metadata': {'key': ['value']}}, body, [])
|
||||
self.assert_expected({'metadata': {'key2': ['value2']}}, body, [])
|
||||
|
||||
@decorators.idempotent_id('b2c3baf5-22af-4bf9-bcad-b6a1a74e82d9')
|
||||
def test_update_region(self):
|
||||
@ -135,12 +201,6 @@ class TestTempestRegion(rms_base.RmsBaseOrmTest):
|
||||
metadata)
|
||||
self.assert_expected(metadata, body, [])
|
||||
|
||||
def _list_regions_with_filter(self, filter, key):
|
||||
_, body = self.client.list_regions(filter)
|
||||
regions = [x for x in body['regions']]
|
||||
self.assertTrue(
|
||||
all([region[key] == self.region_1[key] for region in regions]))
|
||||
|
||||
@decorators.idempotent_id('77257e0c-e2f8-4b98-886c-359508a4a73d')
|
||||
def test_list_multiple_filter(self):
|
||||
filter = {
|
||||
@ -150,10 +210,30 @@ class TestTempestRegion(rms_base.RmsBaseOrmTest):
|
||||
}
|
||||
self._list_regions_with_filter(filter, 'name')
|
||||
|
||||
@decorators.idempotent_id('ce9bcbba-a97b-4da2-937e-69afbc5f93f8')
|
||||
def test_delete_region_metadata(self):
|
||||
_, body = self.client.delete_region_metadata(
|
||||
self.region_1['id'], 'key'
|
||||
)
|
||||
_, region = self.client.get_region(self.region_1['id'])
|
||||
self.assertEqual(region['metadata'], {})
|
||||
@decorators.idempotent_id('4a8975f0-c9fd-477c-a01d-5679552083f3')
|
||||
def test_add_delete_region_metadata(self):
|
||||
# get original metadata before addition
|
||||
_, region = self.client.get_region(self.region_2['id'])
|
||||
orig_metadata = region['metadata']
|
||||
|
||||
# add metadata
|
||||
metadata = {'metadata': {'m1': ['km1']}}
|
||||
self.client.add_region_metadata(self.region_2['id'], **metadata)
|
||||
_, body = self.client.get_region(self.region_2['id'])
|
||||
|
||||
new_metadata = dict(
|
||||
list(orig_metadata.items()) + list(metadata['metadata'].items()))
|
||||
|
||||
self.assertDictEqual(body['metadata'], new_metadata)
|
||||
|
||||
# remove metadata
|
||||
self.client.delete_region_metadata(self.region_2['id'], 'm1')
|
||||
_, body = self.client.get_region(self.region_2['id'])
|
||||
self.assertDictEqual(body['metadata'], orig_metadata)
|
||||
|
||||
@decorators.idempotent_id('75c2e596-4ea9-454f-94a2-e5d084af2059')
|
||||
def test_delete_region_with_resource(self):
|
||||
# delete region when a customer is assigned a region
|
||||
self.assertRaises(exceptions.BadRequest,
|
||||
self.client.delete_region,
|
||||
self.setup_customer['regions'][0]['name'])
|
||||
|
Loading…
x
Reference in New Issue
Block a user