ranger/orm/tests/unit/cms/test_groups_region_role.py
Chi Lo 3c59adebd2 DB and test cases update for assign roles to group
This patch modifies CMS DB sql script and adds unit test cases
for role assignment to group.

Change-Id: I9cb4b544c28ef2b6fc8ca22ca91a0e8c93a09565
2019-05-23 04:14:35 -07:00

111 lines
3.3 KiB
Python

import mock
import requests
from orm.services.customer_manager.cms_rest.controllers.v1.orm.group\
import region_roles
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
from wsme.exc import ClientSideError
group_logic_mock = None
class TestGroupsRegionRoleController(FunctionalTest):
def setUp(self):
FunctionalTest.setUp(self)
region_roles.authentication = mock.MagicMock()
region_roles.GroupLogic = get_mock_group_logic
region_roles.GroupLogic.return_error = 0
region_roles.utils = mock.MagicMock()
region_roles.utils.audit_trail.return_value = None
region_roles.err_utils = mock.MagicMock()
def tearDown(self):
FunctionalTest.tearDown(self)
def test_assign_roles_to_group_region(self):
# given
requests.post = mock.MagicMock(return_value=ResponseMock(200))
# when
response = self.app.post_json(
'/v1/orm/groups/{groups id}/regions/{region id}/roles/',
GROUPS_ROLE_JSON)
# assert
assert response.status_int == 200
assert region_roles.utils.audit_trail.called
assert group_logic_mock.assign_roles_called
def test_assign_roles_to_group_region_fail(self):
# given
requests.post = mock.MagicMock()
region_roles.GroupLogic.return_error = 1
region_roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 500))
# when
response = self.app.post_json(
'/v1/orm/groups/{groups id}/regions/{region id}/roles/',
GROUPS_ROLE_JSON, expect_errors=True)
# assert
self.assertEqual(response.status_int, 500)
def test_assign_roles_to_group_region_bad_request(self):
# given
requests.post = mock.MagicMock()
region_roles.GroupLogic.return_error = 2
region_roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 404))
# when
response = self.app.post_json(
'/v1/orm/groups/{groups_id}/regions/{region id}/roles/',
GROUPS_ROLE_JSON, expect_errors=True)
# assert
self.assertEqual(response.status_int, 404)
def get_mock_group_logic():
global group_logic_mock
group_logic_mock = mock.MagicMock()
if region_roles.GroupLogic.return_error == 0:
res = GroupModels.RoleResultWrapper(transaction_id='1',
roles=[],
links={},
created='1')
group_logic_mock.assign_roles.return_value = res
elif region_roles.GroupLogic.return_error == 1:
group_logic_mock.assign_roles.side_effect = SystemError()
elif region_roles.GroupLogic.return_error == 2:
group_logic_mock.assign_roles.side_effect = ErrorStatus(
status_code=404)
return group_logic_mock
class ResponseMock:
def __init__(self, status_code=200):
self.status_code = status_code
GROUPS_ROLE_JSON = [
{
"customer": "customer-id",
"roles": [
"role1",
"role2"
]
}
]