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)
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)
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)
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))
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)