ranger/orm/tests/unit/cms/test_groups_role.py

217 lines
6.8 KiB
Python

import mock
import requests
from orm.services.customer_manager.cms_rest.controllers.v1.orm.group\
import 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 TestGroupsRoleController(FunctionalTest):
def setUp(self):
FunctionalTest.setUp(self)
roles.authentication = mock.MagicMock()
roles.GroupLogic = get_mock_group_logic
roles.GroupLogic.return_error = 0
roles.utils = mock.MagicMock()
roles.utils.make_transid.return_value = 'some_trans_id'
roles.utils.audit_trail.return_value = None
roles.utils.make_uuid.return_value = 'some_uuid'
roles.err_utils = mock.MagicMock()
def tearDown(self):
FunctionalTest.tearDown(self)
def test_assign_roles_to_group(self):
# given
requests.post = mock.MagicMock(return_value=ResponseMock(200))
# when
response = self.app.post_json('/v1/orm/groups/{groups id}/roles/',
GROUPS_ROLE_JSON)
# assert
assert response.status_int == 200
assert roles.utils.audit_trail.called
assert group_logic_mock.assign_roles_called
def test_assign_roles_to_group_fail(self):
# given
requests.post = mock.MagicMock()
roles.GroupLogic.return_error = 1
roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 500))
# when
response = self.app.post_json('/v1/orm/groups/{groups id}/roles/',
GROUPS_ROLE_JSON, expect_errors=True)
# assert
self.assertEqual(response.status_int, 500)
def test_assign_roles_to_group_bad_request(self):
# given
requests.post = mock.MagicMock()
roles.GroupLogic.return_error = 2
roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 404))
# when
response = self.app.post_json('/v1/orm/groups/{groups_id}/roles/',
GROUPS_ROLE_JSON, expect_errors=True)
# assert
self.assertEqual(response.status_int, 404)
@mock.patch.object(roles, 'request')
def test_unassign_roles_to_group(self, request):
# given
requests.delete = mock.MagicMock(return_value=ResponseMock(204))
request.headers = {'X-RANGER-Requester': "rds_resource_service_proxy"}
response = self.app.delete(
'/v1/orm/groups/{groups id}/roles/{role name}/{type}/{type id}')
# assert
assert response.status_int == 204
assert roles.utils.audit_trail.called
assert group_logic_mock.unassign_roles_called
def test_unassign_roles_to_group_fail(self):
# given
requests.delete = mock.MagicMock()
roles.GroupLogic.return_error = 1
roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 500))
# when
response = self.app.delete(
'/v1/orm/groups/{groups id}/roles/{role name}/{type}/{type id}',
expect_errors=True)
# assert
self.assertEqual(response.status_int, 500)
@mock.patch.object(roles, 'request')
def test_unassign_roles_to_group_bad_request(self, request):
# given
requests.delete = mock.MagicMock()
request.headers = {'X-RANGER-Requester': "rds_resource_service_proxy"}
roles.GroupLogic.return_error = 2
roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 404))
# when
response = self.app.delete(
'/v1/orm/groups/{groups id}/roles/{role name}/{type}/{type id}',
expect_errors=True)
# assert
self.assertEqual(response.status_int, 404)
def test_list_group_roles(self):
# given
requests.get = mock.MagicMock(return_value=ResponseMock(200))
# when
response = self.app.get(
'/v1/orm/groups/{groups id}/roles/?region=region')
# assert
assert group_logic_mock.get_group_roles_by_criteria.called
def test_list_group_roles_fail(self):
# given
requests.get = mock.MagicMock()
roles.GroupLogic.return_error = 1
roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 500))
# when
response = self.app.get(
'/v1/orm/groups/{groups id}/roles/?region=region',
expect_errors=True)
# assert
self.assertEqual(response.status_int, 500)
def test_list_group_roles_bad_request(self):
# given
requests.get = mock.MagicMock()
roles.GroupLogic.return_error = 2
roles.err_utils.get_error = mock.MagicMock(
return_value=ClientSideError("blabla", 404))
# when
response = self.app.get(
'/v1/orm/groups/{groups id}/roles/?region=region',
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 roles.GroupLogic.return_error == 0:
res = GroupModels.RoleResultWrapper(transaction_id='1',
roles=[],
links={},
created='1')
res1 = GroupModels.RoleResultWrapper(transaction_id='1',
roles=[],
links={},
created='1')
list_res = GroupModels.RoleResult(roles=[])
group_logic_mock.assign_roles.return_value = res
group_logic_mock.unassign_roles.return_value = res1
group_logic_mock.get_group_roles_by_criteria.return_value = [list_res]
elif roles.GroupLogic.return_error == 1:
group_logic_mock.assign_roles.side_effect = SystemError()
group_logic_mock.unassign_roles.side_effect = SystemError()
group_logic_mock.get_group_roles_by_criteria.side_effect = \
SystemError()
else:
group_logic_mock.assign_roles.side_effect = ErrorStatus(
status_code=404)
group_logic_mock.unassign_roles.side_effect = ErrorStatus(
status_code=404)
group_logic_mock.get_group_roles_by_criteria.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"
]
}
]