Replace keystone_client mock in test_groups

Replace keystone_client direct mocks with requests_mock in
test_groups.

Change-Id: I31fa69950488292d8765908fc193c288e9c18b20
This commit is contained in:
Morgan Fainberg 2017-03-08 12:37:33 -08:00
parent 708049351f
commit c58b86838c
3 changed files with 108 additions and 72 deletions

View File

@ -43,7 +43,13 @@ _UserData = collections.namedtuple(
_GroupData = collections.namedtuple(
'GroupData',
'group_id, group_name, domain_id, description, json_response')
'group_id, group_name, domain_id, description, json_response, '
'json_request')
_DomainData = collections.namedtuple(
'DomainData',
'domain_id, domain_name, description, json_response, '
'json_request')
class BaseTestCase(base.TestCase):
@ -233,11 +239,13 @@ class RequestsMockTestCase(BaseTestCase):
name or self.getUniqueString('groupname')
domain_id = uuid.UUID(domain_id or uuid.uuid4().hex).hex
response = {'id': group_id, 'name': name, 'domain_id': domain_id}
request = {'name': name}
if description is not None:
response['description'] = description
request['description'] = description
return _GroupData(group_id, name, domain_id, description,
{'group': response})
{'group': response}, {'group': request})
def _get_user_data(self, name=None, password=None, **kwargs):
@ -270,6 +278,22 @@ class RequestsMockTestCase(BaseTestCase):
response.get('enabled'), {'user': response},
{'user': request})
def _get_domain_data(self, domain_name=None, description=None,
enabled=None):
domain_id = uuid.uuid4().hex
domain_name = domain_name or self.getUniqueString('domainName')
response = {'id': domain_id, 'name': domain_name}
request = {'name': domain_name}
if enabled is not None:
request['enabled'] = bool(enabled)
response['enabled'] = bool(enabled)
if description:
response['description'] = description
request['description'] = description
response.setdefault('enabled', True)
return _DomainData(domain_id, domain_name, description,
{'domain': response}, {'domain': request})
def use_keystone_v3(self):
self.adapter = self.useFixture(rm_fixture.Fixture())
self.calls = []

View File

@ -13,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import collections
import uuid
import testtools
@ -21,21 +20,6 @@ from testtools import matchers
import shade
from shade.tests.unit import base
from shade.tests import fakes
domain_obj = fakes.FakeDomain(
id='1',
name='a-domain',
description='A wonderful keystone domain',
enabled=True,
)
_DomainData = collections.namedtuple(
'DomainData',
'domain_id, domain_name, description, json_response, '
'json_request')
class TestDomains(base.RequestsMockTestCase):
@ -47,22 +31,6 @@ class TestDomains(base.RequestsMockTestCase):
service_type=service_type, interface=interface, resource=resource,
append=append, base_url_append=base_url_append)
def _get_domain_data(self, domain_name=None, description=None,
enabled=None):
domain_id = uuid.uuid4().hex
domain_name = domain_name or self.getUniqueString('domainName')
response = {'id': domain_id, 'name': domain_name}
request = {'name': domain_name}
if enabled is not None:
request['enabled'] = bool(enabled)
response['enabled'] = bool(enabled)
if description:
response['description'] = description
request['description'] = description
response.setdefault('enabled', True)
return _DomainData(domain_id, domain_name, description,
{'domain': response}, {'domain': request})
def test_list_domains(self):
self._add_discovery_uri_call()
domain_data = self._get_domain_data()

View File

@ -11,50 +11,94 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import mock
import shade
from shade.tests.unit import base
from shade.tests import fakes
class TestGroups(base.TestCase):
class TestGroups(base.RequestsMockTestCase):
def setUp(self, cloud_config_fixture='clouds.yaml'):
super(TestGroups, self).setUp(
cloud_config_fixture=cloud_config_fixture)
self._add_discovery_uri_call()
self.addCleanup(self.assert_calls)
@mock.patch.object(shade.OpenStackCloud, 'keystone_client')
def test_list_groups(self, mock_keystone):
def get_mock_url(self, service_type='identity', interface='admin',
resource='groups', append=None, base_url_append='v3'):
return super(TestGroups, self).get_mock_url(
service_type='identity', interface='admin', resource=resource,
append=append, base_url_append=base_url_append)
def test_list_groups(self):
group_data = self._get_group_data()
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(),
status_code=200,
json={'groups': [group_data.json_response['group']]})
])
self.op_cloud.list_groups()
mock_keystone.groups.list.assert_called_once_with()
@mock.patch.object(shade.OpenStackCloud, 'keystone_client')
def test_get_group(self, mock_keystone):
self.op_cloud.get_group('1234')
mock_keystone.groups.list.assert_called_once_with()
def test_get_group(self):
group_data = self._get_group_data()
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(),
status_code=200,
json={'groups': [group_data.json_response['group']]}),
])
self.op_cloud.get_group(group_data.group_id)
@mock.patch.object(shade.OpenStackCloud, 'keystone_client')
def test_delete_group(self, mock_keystone):
mock_keystone.groups.list.return_value = [
fakes.FakeGroup('1234', 'name', 'desc')
]
self.assertTrue(self.op_cloud.delete_group('1234'))
mock_keystone.groups.list.assert_called_once_with()
mock_keystone.groups.delete.assert_called_once_with(
group='1234'
)
def test_delete_group(self):
group_data = self._get_group_data()
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(),
status_code=200,
json={'groups': [group_data.json_response['group']]}),
dict(method='DELETE',
uri=self.get_mock_url(append=[group_data.group_id]),
status_code=204),
])
self.assertTrue(self.op_cloud.delete_group(group_data.group_id))
@mock.patch.object(shade.OpenStackCloud, 'keystone_client')
def test_create_group(self, mock_keystone):
self.op_cloud.create_group('test-group', 'test desc')
mock_keystone.groups.create.assert_called_once_with(
name='test-group', description='test desc', domain=None
)
def test_create_group(self):
domain_data = self._get_domain_data()
group_data = self._get_group_data(domain_id=domain_data.domain_id)
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(resource='domains',
append=[domain_data.domain_id]),
status_code=200,
json=domain_data.json_response),
dict(method='POST',
uri=self.get_mock_url(),
status_code=200,
json=group_data.json_response,
validate=group_data.json_request),
dict(method='GET',
uri=self.get_mock_url(append=[group_data.group_id]),
status_code=200,
json=group_data.json_response)
])
self.op_cloud.create_group(
name=group_data.group_name, description=group_data.description,
domain=group_data.domain_id)
@mock.patch.object(shade.OpenStackCloud, 'keystone_client')
def test_update_group(self, mock_keystone):
mock_keystone.groups.list.return_value = [
fakes.FakeGroup('1234', 'name', 'desc')
]
self.op_cloud.update_group('1234', 'test-group', 'test desc')
mock_keystone.groups.list.assert_called_once_with()
mock_keystone.groups.update.assert_called_once_with(
group='1234', name='test-group', description='test desc'
)
def test_update_group(self):
group_data = self._get_group_data()
self.register_uris([
dict(method='GET',
uri=self.get_mock_url(),
status_code=200,
json={'groups': [group_data.json_response['group']]}),
dict(method='PATCH',
uri=self.get_mock_url(append=[group_data.group_id]),
status_code=200,
json=group_data.json_response,
validate=group_data.json_request),
dict(method='GET',
uri=self.get_mock_url(append=[group_data.group_id]),
status_code=200,
json=group_data.json_response)
])
self.op_cloud.update_group(group_data.group_id, group_data.group_name,
group_data.description)