Allow grant_role to select users outside default domain

Task: 5853
Story: 2001302

Changeset works for me.  Unit tests have mended.

I should still try to write up some functional test.

Change-Id: I7dfb45e5c6c4f7a7318ae6705269dd9d3e6100b2
This commit is contained in:
Tobias Brox 2017-11-27 12:52:30 +01:00
parent 395d927081
commit d4148ff9d6
2 changed files with 82 additions and 21 deletions

View File

@ -1789,7 +1789,11 @@ class OperatorCloud(openstackcloud.OpenStackCloud):
self.get_domain(domain)['id']
if user:
data['user'] = self.get_user(user, filters=filters)
if 'domain' in data:
data['user'] = self.get_user(
user, filters=filters, domain_id=data['domain'])
else:
data['user'] = self.get_user(user, filters=filters)
if project:
# drop domain in favor of project

View File

@ -436,6 +436,7 @@ class TestRoleAssignment(base.RequestsMockTestCase):
self.assert_calls()
def test_grant_role_user_project_exists(self):
self.assertEqual(len(self.calls), 2)
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(resource='roles'),
@ -496,6 +497,7 @@ class TestRoleAssignment(base.RequestsMockTestCase):
entity_type='user',
entity_id=self.user_data.user_id)}),
])
self.assertEqual(len(self.calls), 10)
self.assertFalse(self.op_cloud.grant_role(
self.role_data.role_name,
user=self.user_data.name,
@ -662,7 +664,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -688,12 +693,16 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json={'roles': [self.role_data.json_response['role']]}),
dict(method='GET',
uri=self.get_mock_url(resource='domains',
append=[self.domain_data.domain_id]),
uri=self.get_mock_url(
resource='domains',
append=[self.domain_data.domain_id]),
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -724,7 +733,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -755,7 +767,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -807,7 +822,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -836,7 +854,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -865,7 +886,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -894,7 +918,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1768,7 +1795,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1791,7 +1821,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1814,7 +1847,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1837,7 +1873,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1881,7 +1920,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1917,7 +1959,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1953,7 +1998,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -1989,7 +2037,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -2478,7 +2529,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',
@ -2527,7 +2581,10 @@ class TestRoleAssignment(base.RequestsMockTestCase):
status_code=200,
json=self.domain_data.json_response),
dict(method='GET',
uri=self.get_mock_url(resource='users'),
uri=self.get_mock_url(
resource='users',
qs_elements=[
'domain_id=%s' % self.domain_data.domain_id]),
status_code=200,
json={'users': [self.user_data.json_response['user']]}),
dict(method='GET',