Esempio n. 1
0
 def test___init___class_not_found(self):
     class_names = ['FakeServiceClient1', 'FakeServiceClient2']
     extended_class_names = class_names + ['not_really_a_class']
     self._setup_fake_module(class_names=class_names)
     auth_provider = fake_auth_provider.FakeAuthProvider()
     expected_msg = '.*not_really_a_class.*fake_service_client.*'
     with testtools.ExpectedException(AttributeError, expected_msg):
         clients.ClientsFactory('fake_module', extended_class_names,
                                auth_provider)
Esempio n. 2
0
 def test___init___not_a_class(self):
     class_names = ['FakeServiceClient1', 'FakeServiceClient2']
     extended_class_names = class_names + ['not_really_a_class']
     self._setup_fake_module(class_names=class_names,
                             extra_dict='not_really_a_class')
     auth_provider = fake_auth_provider.FakeAuthProvider()
     expected_msg = '.*not_really_a_class.*str.*'
     with testtools.ExpectedException(TypeError, expected_msg):
         clients.ClientsFactory('fake_module', extended_class_names,
                                auth_provider)
Esempio n. 3
0
 def test__get_partial_class_no_later_kwargs(self):
     expected_fake_client = 'not_really_a_client'
     self._setup_fake_module(class_names=[])
     auth_provider = fake_auth_provider.FakeAuthProvider()
     params = {'k1': 'v1', 'k2': 'v2'}
     factory = clients.ClientsFactory('fake_path', [], auth_provider,
                                      **params)
     klass_mock = mock.Mock(return_value=expected_fake_client)
     partial = factory._get_partial_class(klass_mock, auth_provider, params)
     # Class has not be initialised yet
     klass_mock.assert_not_called()
     # Use partial and assert on parameters
     client = partial()
     self.assertEqual(expected_fake_client, client)
     klass_mock.assert_called_once_with(auth_provider=auth_provider,
                                        **params)
Esempio n. 4
0
 def test__get_partial_class_with_alias(self):
     expected_fake_client = 'not_really_a_client'
     client_alias = 'fake_client'
     self._setup_fake_module(class_names=[])
     auth_provider = fake_auth_provider.FakeAuthProvider()
     params = {'k1': 'v1', 'k2': 'v2'}
     later_params = {'k2': 'v4', 'k3': 'v3'}
     factory = clients.ClientsFactory('fake_path', [], auth_provider,
                                      **params)
     klass_mock = mock.Mock(return_value=expected_fake_client)
     partial = factory._get_partial_class(klass_mock, auth_provider, params)
     # Class has not be initialised yet
     klass_mock.assert_not_called()
     # Use partial and assert on parameters
     client = partial(alias=client_alias, **later_params)
     params.update(later_params)
     self.assertEqual(expected_fake_client, client)
     klass_mock.assert_called_once_with(auth_provider=auth_provider,
                                        **params)
     self.assertThat(factory, has_attribute(client_alias))
     self.assertEqual(expected_fake_client, getattr(factory, client_alias))
Esempio n. 5
0
 def test___init___two_classes(self):
     fake_partial = 'fake_partial'
     partial_mock = self.useFixture(
         fixtures.MockPatch(
             'tempest.lib.services.clients.ClientsFactory._get_partial_class',
             return_value=fake_partial)).mock
     class_names = ['FakeServiceClient1', 'FakeServiceClient2']
     mock_importlib = self._setup_fake_module(class_names=class_names)
     auth_provider = fake_auth_provider.FakeAuthProvider()
     params = {'k1': 'v1', 'k2': 'v2'}
     factory = clients.ClientsFactory('fake_path', class_names,
                                      auth_provider, **params)
     # Assert module has been imported
     mock_importlib.assert_called_once_with('fake_path')
     # All attributes have been created
     for client in class_names:
         self.assertThat(factory, has_attribute(client))
     # Partial have been invoked the right number of times
     partial_mock.call_count = len(class_names)
     # Get the clients
     for name in class_names:
         self.assertEqual(fake_partial, getattr(factory, name))
 def test___init___no_module(self):
     auth_provider = fake_auth_provider.FakeAuthProvider()
     class_names = ['FakeServiceClient1', 'FakeServiceClient2']
     with testtools.ExpectedException(ImportError, '.*fake_module.*'):
         clients.ClientsFactory('fake_module', class_names, auth_provider)