ranger/orm/tests/unit/cms/test_group_regions.py
hosingh000 0f4ca0abd2 SUpport for add group Region
Change-Id: Ic46046bda95d827e04425e35ba4fefa815255518
2019-05-15 07:56:10 -07:00

171 lines
5.0 KiB
Python
Executable File

import mock
import requests
from wsme.exc import ClientSideError
from orm.services.customer_manager.cms_rest.controllers.v1.orm.group \
import regions
from orm.services.customer_manager.cms_rest.logic.error_base import ErrorStatus
from orm.services.customer_manager.cms_rest.model import GroupModels
from orm.tests.unit.cms import FunctionalTest
group_logic_mock = None
class TestRegionController(FunctionalTest):
def setUp(self):
FunctionalTest.setUp(self)
regions.authentication = mock.MagicMock()
regions.GroupLogic = get_mock_group_logic
regions.GroupLogic.return_error = 0
regions.utils = mock.MagicMock()
regions.utils.make_transid.return_value = 'some_trans_id'
regions.utils.audit_trail.return_value = None
regions.utils.make_uuid.return_value = 'some_uuid'
regions.err_utils = mock.MagicMock()
def tearDown(self):
FunctionalTest.tearDown(self)
def test_add_regions(self):
# given
requests.post = mock.MagicMock(return_value=ResponseMock(200))
# when
response = self.app.post_json('/v1/orm/groups/{group id}/regions/',
REGION_JSON)
# assert
assert response.status_int == 200
assert regions.utils.audit_trail.called
assert group_logic_mock.add_regions.called
def test_add_regions_fail(self):
# given
requests.post = mock.MagicMock()
regions.GroupLogic.return_error = 1
regions.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 500))
# when
response = self.app.post_json('/v1/orm/groups/{group id}/regions/',
REGION_JSON, expect_errors=True)
# assert
self.assertEqual(response.status_int, 500)
def test_add_regions_fail_bad(self):
# given
requests.post = mock.MagicMock()
regions.GroupLogic.return_error = 2
regions.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 404))
# when
response = self.app.post_json('/v1/orm/groups/{group id}/regions/',
REGION_JSON, expect_errors=True)
# assert
self.assertEqual(response.status_int, 404)
@mock.patch.object(regions, 'request')
def test_delete_regions(self, request):
# given
requests.delete = mock.MagicMock(return_value=ResponseMock(200))
request.headers = {'X-RANGER-Requester': "rds_resource_service_proxy"}
# when
response = self.app.delete(
'/v1/orm/groups/{group id}/regions/{region_id}')
# assert
assert response.status_int == 204
assert regions.utils.audit_trail.called
assert group_logic_mock.delete_region.called
def test_delete_regions_fail_bad(self):
# given
requests.delete = mock.MagicMock()
regions.GroupLogic.return_error = 1
regions.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 500))
# when
response = self.app.delete(
'/v1/orm/groups/{group id}/regions/{region_id}',
expect_errors=True)
# assert
self.assertEqual(response.status_int, 500)
@mock.patch.object(regions, 'request')
def test_delete_regions_fail(self, request):
# given
requests.delete = mock.MagicMock()
regions.GroupLogic.return_error = 2
request.headers = {'X-RANGER-Requester': "rds_resource_service_proxy"}
regions.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 404))
# when
response = self.app.delete(
'/v1/orm/groups/{group id}/regions/{region_id}',
expect_errors=True)
# assert
self.assertEqual(response.status_int, 404)
def test_get(self):
# given
requests.get = mock.MagicMock(return_value=ResponseMock(200))
# when
response = self.app.get('/v1/orm/groups/some_id/regions/some_id')
# assert
assert response.status_int == 200
def get_mock_group_logic():
global group_logic_mock
group_logic_mock = mock.MagicMock()
if regions.GroupLogic.return_error == 0:
res = GroupModels.RegionResultWrapper(transaction_id='1', regions=[])
group_logic_mock.add_regions.return_value = res
elif regions.CustomerLogic.return_error == 1:
group_logic_mock.add_regions.side_effect = SystemError()
group_logic_mock.delete_region.side_effect = SystemError()
else:
group_logic_mock.add_regions.side_effect = ErrorStatus(status_code=404)
group_logic_mock.delete_region.side_effect = ErrorStatus(
status_code=404)
return group_logic_mock
class ResponseMock:
def __init__(self, status_code=200):
self.status_code = status_code
REGION_JSON = [
{
"name": "SAN1",
"type": "single",
}
]