def test_forseti_unsupported_api_is_ok(self, mock_logger, mock_discovery_build): """Test that unsupported API is ok. Args: mock_logger (Mock): Mock objects. mock_discovery_build (Mock): Mock object. Setup: * Pick a non-supported API. * Pick a valid version (not officially supported by Forseti). * Instantiate the Base Client with the API name and version. Expect: * Unsupported API will call LOGGER.warning(). """ api_name = 'zoo' self.assertFalse(api_name in _supported_apis.SUPPORTED_APIS) provided_versions = ['v1', 'v2'] mock_credentials = mock.MagicMock() repo_client = base.BaseRepositoryClient(api_name, credentials=mock_credentials, versions=provided_versions) expected_repr = 'API: name=zoo, versions=[\'v1\', \'v2\']' self.assertEqual(expected_repr, '%s' % repo_client) mock_logger.warning.assert_called_with(mock.ANY, api_name)
def test_forseti_unsupported_valid_version_is_ok(self, mock_logger, mock_discovery_build): """Test that Forseti-supported API with unsupported valid version is ok. Args: mock_logger (Mock): Mock objects. mock_discovery_build (Mock): Mock object. Setup: * Pick one of the supported APIs. * Pick a valid version (not officially supported by Forseti). * Instantiate the Base Client with the API name and version. Expect: * Unsupported version will call LOGGER.warning(). """ api_name = 'cloudresourcemanager' self.assertTrue(api_name in _supported_apis.SUPPORTED_APIS) provided_version = 'v1beta1' self.assertFalse(provided_version in _supported_apis. SUPPORTED_APIS[api_name]['supported_versions']) mock_credentials = mock.MagicMock() repo_client = base.BaseRepositoryClient(api_name, credentials=mock_credentials, versions=[provided_version]) self.assertEqual((api_name, [provided_version]), (repo_client.name, repo_client.versions)) mock_logger.warning.assert_called_with(mock.ANY, api_name, provided_version)
def test_init_repository_no_supported_version(self, mock_discovery_build): """Verify that _init_repository will pick a version if none provided.""" class ZooRepository(base.GCPRepository): def __init__(self, **kwargs): super(ZooRepository, self).__init__(component='a', **kwargs) # Return a different mock object each time build is called. mock_discovery_build.side_effect = [mock.Mock(), mock.Mock()] mock_credentials = mock.MagicMock() repo_client = base.BaseRepositoryClient('zoo', credentials=mock_credentials, versions=['v2', 'v1']) repo = repo_client._init_repository(ZooRepository) self.assertEqual(repo_client.gcp_services['v1'], repo.gcp_service) self.assertNotEqual(repo_client.gcp_services['v2'], repo.gcp_service)
def test_forseti_supported_api_is_ok(self, mock_discovery_build): """Test that Forseti-supported API in BaseClient.__init__() works. Args: mock_discovery_build (Mock): Mock object. Setup: * Pick one of the supported APIs. * Instantiate the Base Client with just the API name. Expect: * The resulting API client service has the same API name and version as the supported API. """ api_name = list(_supported_apis.SUPPORTED_APIS.keys())[0] supported_api = _supported_apis.SUPPORTED_APIS[api_name] mock_credentials = mock.MagicMock() repo_client = base.BaseRepositoryClient(api_name, credentials=mock_credentials) self.assertEqual((api_name, [supported_api['default_version']]), (repo_client.name, repo_client.versions))