summaryrefslogtreecommitdiff
path: root/openstack_auth/tests
diff options
context:
space:
mode:
authorStephen Finucane <stephenfin@redhat.com>2020-02-21 16:04:38 +0000
committerIvan Kolodyazhny <e0ne@e0ne.info>2020-03-09 13:07:07 +0000
commit97980a4bb9c0bd6a2c24453f2679d4b7109994fa (patch)
treeb142746e41aab44285c79cd826e49961dcdd4387 /openstack_auth/tests
parent6bb8c69143e1b99ea0e735db8a96106bea24f415 (diff)
downloadhorizon-97980a4bb9c0bd6a2c24453f2679d4b7109994fa.tar.gz
tests: Convert 'OpenStackAuthTestsV3Base' to mock (pt. 1)
We're going to break this up so it's some bit readable. Change-Id: Ifaaa674676f9542f32e5cb08c8448f68b97a3162 Signed-off-by: Stephen Finucane <stephenfin@redhat.com> Co-Authored-By: Akihiro Motoki <amotoki@gmail.com>
Diffstat (limited to 'openstack_auth/tests')
-rw-r--r--openstack_auth/tests/unit/test_auth.py164
1 files changed, 106 insertions, 58 deletions
diff --git a/openstack_auth/tests/unit/test_auth.py b/openstack_auth/tests/unit/test_auth.py
index 59bea1a4c..8720aea52 100644
--- a/openstack_auth/tests/unit/test_auth.py
+++ b/openstack_auth/tests/unit/test_auth.py
@@ -63,31 +63,37 @@ class OpenStackAuthTestsMixin(object):
'username': user.name}
-class OpenStackAuthTestsV3(OpenStackAuthTestsMixin,
- test.TestCase):
+class OpenStackAuthTestsV3Base(OpenStackAuthTestsMixin, test.TestCase):
+
+ USE_MOX = True
def setUp(self):
- super(OpenStackAuthTestsV3, self).setUp()
+ super().setUp()
if getattr(self, 'interface', None):
override = self.settings(OPENSTACK_ENDPOINT_TYPE=self.interface)
override.enable()
self.addCleanup(override.disable)
- self.mox = mox.Mox()
- self.addCleanup(self.mox.VerifyAll)
- self.addCleanup(self.mox.UnsetStubs)
+ if self.USE_MOX:
+ self.mox = mox.Mox()
+ self.addCleanup(self.mox.VerifyAll)
+ self.addCleanup(self.mox.UnsetStubs)
self.data = data_v3.generate_test_data()
self.ks_client_module = client_v3
settings.OPENSTACK_API_VERSIONS['identity'] = 3
settings.OPENSTACK_KEYSTONE_URL = "http://localhost/identity/v3"
- self.mox.StubOutClassWithMocks(token_endpoint, 'Token')
- self.mox.StubOutClassWithMocks(v3_auth, 'Token')
- self.mox.StubOutClassWithMocks(v3_auth, 'Password')
- self.mox.StubOutClassWithMocks(client_v3, 'Client')
- self.mox.StubOutClassWithMocks(v3_auth, 'Keystone2Keystone')
+ if self.USE_MOX:
+ self.mox.StubOutClassWithMocks(token_endpoint, 'Token')
+ self.mox.StubOutClassWithMocks(v3_auth, 'Token')
+ self.mox.StubOutClassWithMocks(v3_auth, 'Password')
+ self.mox.StubOutClassWithMocks(client_v3, 'Client')
+ self.mox.StubOutClassWithMocks(v3_auth, 'Keystone2Keystone')
+
+
+class OpenStackAuthTestsV3(OpenStackAuthTestsV3Base):
def test_switch_keystone_provider_remote_fail(self):
target_provider = 'k2kserviceprovider'
@@ -449,61 +455,52 @@ class OpenStackAuthTestsV3(OpenStackAuthTestsMixin,
self.assertEqual(self.client.session['k2k_auth_url'],
settings.OPENSTACK_KEYSTONE_URL)
- def test_switch_keystone_provider_local_fail(self):
+
+class OpenStackAuthTestsV3WithMock2(OpenStackAuthTestsV3Base):
+
+ USE_MOX = False
+
+ @mock.patch.object(client_v3, 'Client')
+ @mock.patch.object(v3_auth, 'Token')
+ @mock.patch.object(v3_auth, 'Password')
+ def test_switch_keystone_provider_local_fail(
+ self, mock_password, mock_token, mock_client
+ ):
self.data = data_v3.generate_test_data(service_providers=True)
keystone_provider = 'localkeystone'
- projects = [self.data.project_one, self.data.project_two]
user = self.data.user
form_data = self.get_form_data(user)
# mock authenticate
- plugin = v3_auth.Password(
- auth_url=settings.OPENSTACK_KEYSTONE_URL,
- password=self.data.user.password,
- username=self.data.user.name,
- user_domain_name=DEFAULT_DOMAIN,
- unscoped=True)
- plugin.get_access(mox.IsA(session.Session)). \
- AndReturn(self.data.unscoped_access_info)
- plugin.auth_url = settings.OPENSTACK_KEYSTONE_URL
- client = self.ks_client_module.Client(
- session=mox.IsA(session.Session), auth=plugin)
+ auth_password = mock.Mock(
+ auth_url=settings.OPENSTACK_KEYSTONE_URL)
+ mock_password.return_value = auth_password
+ auth_password.get_access.return_value = self.data.unscoped_access_info
- plugin = v3_auth.Token(
- auth_url=settings.OPENSTACK_KEYSTONE_URL,
- token=self.data.unscoped_access_info.auth_token,
- domain_name=DEFAULT_DOMAIN,
- reauthenticate=False)
-
- plugin.get_access(mox.IsA(session.Session)).AndReturn(
- self.data.domain_scoped_access_info)
-
- client.projects = self.mox.CreateMockAnything()
- client.projects.list(user=user.id).AndReturn(projects)
-
- plugin = v3_auth.Token(
- auth_url=settings.OPENSTACK_KEYSTONE_URL,
- token=self.data.unscoped_access_info.auth_token,
- project_id=self.data.project_one.id,
- reauthenticate=False)
- self.scoped_token_auth = plugin
- plugin.get_access(mox.IsA(session.Session)).AndReturn(
- self.data.unscoped_access_info)
- self.ks_client_module.Client(
- session=mox.IsA(session.Session),
- auth=plugin)
-
- # Let using the base token for logging in fail
- plugin = v3_auth.Token(
- auth_url=settings.OPENSTACK_KEYSTONE_URL,
- token=self.data.unscoped_access_info.auth_token,
- project_id=None,
- reauthenticate=False)
- plugin.get_access(mox.IsA(session.Session)).AndRaise(
- keystone_exceptions.AuthorizationFailure)
- plugin.auth_url = settings.OPENSTACK_KEYSTONE_URL
- self.mox.ReplayAll()
+ auth_token_domain = mock.Mock()
+ auth_token_project = mock.Mock()
+ auth_token_unscoped = mock.Mock()
+ mock_token.side_effect = [
+ auth_token_domain,
+ auth_token_project,
+ auth_token_unscoped,
+ ]
+ auth_token_domain.get_access.return_value = \
+ self.data.domain_scoped_access_info
+ auth_token_project.get_access.return_value = \
+ self.data.unscoped_access_info
+ auth_token_unscoped.get_access.side_effect = \
+ keystone_exceptions.AuthorizationFailure
+ client_domain = mock.Mock()
+ client_project = mock.Mock()
+ mock_client.side_effect = [
+ client_domain,
+ client_project,
+ ]
+ client_domain.projects.list.return_value = [
+ self.data.project_one, self.data.project_two
+ ]
# Log in
url = reverse('login')
@@ -527,6 +524,57 @@ class OpenStackAuthTestsV3(OpenStackAuthTestsMixin,
self.assertEqual(self.client.session['k2k_auth_url'],
settings.OPENSTACK_KEYSTONE_URL)
+ mock_password.assert_called_once_with(
+ auth_url=settings.OPENSTACK_KEYSTONE_URL,
+ password=self.data.user.password,
+ username=self.data.user.name,
+ user_domain_name=DEFAULT_DOMAIN,
+ unscoped=True,
+ )
+ auth_password.get_access.assert_called_once_with(IsA(session.Session))
+
+ mock_client.assert_has_calls([
+ mock.call(
+ auth=auth_password,
+ session=IsA(session.Session),
+ ),
+ mock.call(
+ auth=auth_token_project,
+ session=IsA(session.Session),
+ ),
+ ])
+ self.assertEqual(2, mock_client.call_count)
+ client_domain.projects.list.assert_called_once_with(user=user.id)
+ client_project.assert_not_called()
+
+ mock_token.assert_has_calls([
+ mock.call(
+ auth_url=settings.OPENSTACK_KEYSTONE_URL,
+ token=self.data.unscoped_access_info.auth_token,
+ domain_name=DEFAULT_DOMAIN,
+ reauthenticate=False,
+ ),
+ mock.call(
+ auth_url=settings.OPENSTACK_KEYSTONE_URL,
+ token=self.data.unscoped_access_info.auth_token,
+ project_id=self.data.project_one.id,
+ reauthenticate=False,
+ ),
+ mock.call(
+ auth_url=settings.OPENSTACK_KEYSTONE_URL,
+ token=self.data.unscoped_access_info.auth_token,
+ project_id=None,
+ reauthenticate=False,
+ ),
+ ])
+ self.assertEqual(3, mock_token.call_count)
+ auth_token_domain.get_access.assert_called_once_with(
+ IsA(session.Session))
+ auth_token_project.get_access.assert_called_once_with(
+ IsA(session.Session))
+ auth_token_unscoped.get_access.assert_called_once_with(
+ IsA(session.Session))
+
class OpenStackAuthTestsWebSSO(OpenStackAuthTestsMixin, test.TestCase):