Merge "Implied roles methods"

This commit is contained in:
Jenkins
2017-02-08 11:33:18 +00:00
committed by Gerrit Code Review
3 changed files with 165 additions and 0 deletions
@@ -0,0 +1,6 @@
---
features:
- |
Add the implied roles feature API to the roles_client library. This
feature enables the possibility to create inferences rules between
roles (a role being implied by another role).
@@ -190,3 +190,40 @@ class RolesClient(rest_client.RestClient):
(domain_id, group_id, role_id))
self.expected_success(204, resp.status)
return rest_client.ResponseBody(resp)
def create_role_inference_rule(self, prior_role, implies_role):
"""Create a role inference rule."""
resp, body = self.put('roles/%s/implies/%s' %
(prior_role, implies_role), None)
self.expected_success(201, resp.status)
body = json.loads(body)
return rest_client.ResponseBody(resp, body)
def show_role_inference_rule(self, prior_role, implies_role):
"""Get a role inference rule."""
resp, body = self.get('roles/%s/implies/%s' %
(prior_role, implies_role))
self.expected_success(200, resp.status)
body = json.loads(body)
return rest_client.ResponseBody(resp, body)
def list_role_inferences_rules(self, prior_role):
"""List the inferences rules from a role."""
resp, body = self.get('roles/%s/implies' % prior_role)
self.expected_success(200, resp.status)
body = json.loads(body)
return rest_client.ResponseBody(resp, body)
def check_role_inference_rule(self, prior_role, implies_role):
"""Check a role inference rule."""
resp, body = self.head('roles/%s/implies/%s' %
(prior_role, implies_role))
self.expected_success(204, resp.status)
return rest_client.ResponseBody(resp)
def delete_role_inference_rule(self, prior_role, implies_role):
"""Delete a role inference rule."""
resp, body = self.delete('roles/%s/implies/%s' %
(prior_role, implies_role))
self.expected_success(204, resp.status)
return rest_client.ResponseBody(resp)
@@ -52,6 +52,65 @@ class TestRolesClient(base.BaseServiceTest):
FAKE_LIST_ROLES = {"roles": [FAKE_ROLE_INFO, FAKE_ROLE_INFO_2]}
FAKE_ROLE_INFERENCE_RULE = {
"role_inference": {
"prior_role": {
"id": FAKE_ROLE_ID,
"name": FAKE_ROLE_NAME,
"links": {
"self": "http://example.com/identity/v3/roles/%s" % (
FAKE_ROLE_ID)
}
},
"implies": {
"id": FAKE_ROLE_ID_2,
"name": FAKE_ROLE_NAME_2,
"links": {
"self": "http://example.com/identity/v3/roles/%s" % (
FAKE_ROLE_ID_2)
}
}
},
"links": {
"self": "http://example.com/identity/v3/roles/"
"%s/implies/%s" % (FAKE_ROLE_ID, FAKE_ROLE_ID_2)
}
}
FAKE_LIST_ROLE_INFERENCES_RULES = {
"role_inference": {
"prior_role": {
"id": FAKE_ROLE_ID,
"name": FAKE_ROLE_NAME,
"links": {
"self": "http://example.com/identity/v3/roles/%s" % (
FAKE_ROLE_ID)
}
},
"implies": [
{
"id": FAKE_ROLE_ID_2,
"name": FAKE_ROLE_NAME_2,
"links": {
"self": "http://example.com/identity/v3/roles/%s" % (
FAKE_ROLE_ID_2)
}
},
{
"id": "3",
"name": "test3",
"links": {
"self": "http://example.com/identity/v3/roles/3"
}
}
]
},
"links": {
"self": "http://example.com/identity/v3/roles/"
"%s/implies" % FAKE_ROLE_ID
}
}
def setUp(self):
super(TestRolesClient, self).setUp()
fake_auth = fake_auth_provider.FakeAuthProvider()
@@ -172,6 +231,33 @@ class TestRolesClient(base.BaseServiceTest):
domain_id="b344506af7644f6794d9cb316600b020",
group_id="123")
def _test_create_role_inference_rule(self, bytes_body=False):
self.check_service_client_function(
self.client.create_role_inference_rule,
'tempest.lib.common.rest_client.RestClient.put',
self.FAKE_ROLE_INFERENCE_RULE,
bytes_body,
status=201,
prior_role=self.FAKE_ROLE_ID,
implies_role=self.FAKE_ROLE_ID_2)
def _test_show_role_inference_rule(self, bytes_body=False):
self.check_service_client_function(
self.client.show_role_inference_rule,
'tempest.lib.common.rest_client.RestClient.get',
self.FAKE_ROLE_INFERENCE_RULE,
bytes_body,
prior_role=self.FAKE_ROLE_ID,
implies_role=self.FAKE_ROLE_ID_2)
def _test_list_role_inferences_rules(self, bytes_body=False):
self.check_service_client_function(
self.client.list_role_inferences_rules,
'tempest.lib.common.rest_client.RestClient.get',
self.FAKE_LIST_ROLE_INFERENCES_RULES,
bytes_body,
prior_role=self.FAKE_ROLE_ID)
def test_create_role_with_str_body(self):
self._test_create_role()
@@ -319,3 +405,39 @@ class TestRolesClient(base.BaseServiceTest):
group_id="123",
role_id="1234",
status=204)
def test_create_role_inference_rule_with_str_body(self):
self._test_create_role_inference_rule()
def test_create_role_inference_rule_with_bytes_body(self):
self._test_create_role_inference_rule(bytes_body=True)
def test_show_role_inference_rule_with_str_body(self):
self._test_show_role_inference_rule()
def test_show_role_inference_rule_with_bytes_body(self):
self._test_show_role_inference_rule(bytes_body=True)
def test_list_role_inferences_rules_with_str_body(self):
self._test_list_role_inferences_rules()
def test_list_role_inferences_rules_with_bytes_body(self):
self._test_list_role_inferences_rules(bytes_body=True)
def test_check_role_inference_rule(self):
self.check_service_client_function(
self.client.check_role_inference_rule,
'tempest.lib.common.rest_client.RestClient.head',
{},
status=204,
prior_role=self.FAKE_ROLE_ID,
implies_role=self.FAKE_ROLE_ID_2)
def test_delete_role_inference_rule(self):
self.check_service_client_function(
self.client.delete_role_inference_rule,
'tempest.lib.common.rest_client.RestClient.delete',
{},
status=204,
prior_role=self.FAKE_ROLE_ID,
implies_role=self.FAKE_ROLE_ID_2)