def __init__( self, base_url: str, project: str, branch: str, client_id: str, client_secret: str, port: int = 19999, api_version: float = 3.1, remote_reset: bool = False, import_projects: bool = False, commit_ref: Optional[str] = None, ): self.project = project self.import_projects = import_projects self.client = LookerClient(base_url, client_id, client_secret, port, api_version) self.branch_manager = LookerBranchManager( self.client, project, branch, remote_reset=remote_reset, import_projects=import_projects, commit_ref=commit_ref, )
def test_bad_authentication_request_should_raise_looker_api_error(): with pytest.raises(LookerApiError): LookerClient( base_url="https://spectacles.looker.com", client_id=os.environ.get("LOOKER_CLIENT_ID"), client_secret="xxxxxxxxxxxxxx", )
def test_unsupported_api_version_should_raise_error(): with pytest.raises(SpectaclesException): LookerClient( base_url="https://spectacles.looker.com", client_id=os.environ.get("LOOKER_CLIENT_ID"), client_secret=os.environ.get("LOOKER_CLIENT_SECRET"), api_version=3.0, )
def test_authenticate_should_set_session_headers(mock_post, monkeypatch): mock_looker_version = Mock(spec=LookerClient.get_looker_release_version) mock_looker_version.return_value("1.2.3") monkeypatch.setattr(LookerClient, "get_looker_release_version", mock_looker_version) mock_post_response = Mock(spec=requests.Response) mock_post_response.json.return_value = dict( access_token="test_access_token", token_type="Bearer", expires_in=3600 ) mock_post.return_value = mock_post_response client = LookerClient("base_url", "client_id", "client_secret") assert client.session.headers == {"Authorization": "token test_access_token"}
def client(monkeypatch): mock_authenticate = Mock(spec=LookerClient.authenticate) mock_validate_looker_release_version = Mock( spec=LookerClient.validate_looker_release_version) mock_validate_looker_release_version.return_value = True monkeypatch.setattr(LookerClient, "authenticate", mock_authenticate) monkeypatch.setattr( LookerClient, "validate_looker_release_version", mock_validate_looker_release_version, ) return LookerClient(TEST_BASE_URL, TEST_CLIENT_ID, TEST_CLIENT_SECRET)
def looker_client(record_mode) -> Iterable[LookerClient]: with vcr.use_cassette( "tests/cassettes/init_client.yaml", filter_post_data_parameters=["client_id", "client_secret"], filter_headers=["Authorization"], record_mode=record_mode, ): client = LookerClient( base_url="https://spectacles.looker.com", client_id=os.environ.get("LOOKER_CLIENT_ID", ""), client_secret=os.environ.get("LOOKER_CLIENT_SECRET", ""), ) client.update_workspace(project="eye_exam", workspace="production") yield client
def test_authenticate_sets_session_headers(mock_post, monkeypatch): mock_looker_version = Mock(spec=LookerClient.get_looker_release_version) mock_looker_version.return_value("1.2.3") monkeypatch.setattr(LookerClient, "get_looker_release_version", mock_looker_version) mock_post_response = Mock(spec=requests.Response) mock_post_response.json.return_value = { "access_token": "test_access_token" } mock_post.return_value = mock_post_response client = LookerClient(TEST_BASE_URL, TEST_CLIENT_ID, TEST_CLIENT_SECRET) assert client.session.headers == { "Authorization": f"token test_access_token" }
def __init__( self, base_url: str, project: str, client_id: str, client_secret: str, port: int = 19999, api_version: float = 3.1, remote_reset: bool = False, ): self.project = project self.client = LookerClient(base_url, client_id, client_secret, port, api_version) self.branch_manager = LookerBranchManager(self.client, project, remote_reset)
def __init__( self, base_url: str, project: str, branch: str, client_id: str, client_secret: str, port: int = 19999, api_version: float = 3.1, remote_reset: bool = False, ): self.project = project self.client = LookerClient(base_url, client_id, client_secret, port, api_version) self.client.update_session(project, branch, remote_reset)
def looker_client() -> Iterable[LookerClient]: with vcr.use_cassette( "tests/cassettes/init_client.yaml", filter_post_data_parameters=["client_id", "client_secret"], filter_headers=["Authorization"], record_mode="all", before_record_response=filter_access_token, decode_compressed_response=True, ): client = LookerClient( base_url="https://spectacles.looker.com", client_id=os.environ.get("LOOKER_CLIENT_ID", ""), client_secret=os.environ.get("LOOKER_CLIENT_SECRET", ""), ) client.update_workspace("production") yield client
def test_bad_authenticate_raises_connection_error(mock_post, mock_response): mock_post.return_value = mock_response with pytest.raises(ApiConnectionError): LookerClient(TEST_BASE_URL, TEST_CLIENT_ID, TEST_CLIENT_SECRET) mock_response.raise_for_status.assert_called_once()
def client(monkeypatch): mock_authenticate = Mock(spec=LookerClient.authenticate) monkeypatch.setattr(LookerClient, "authenticate", mock_authenticate) return LookerClient(TEST_BASE_URL, TEST_CLIENT_ID, TEST_CLIENT_SECRET)
def run_connect(base_url: str, client_id: str, client_secret: str, port: int, api_version: float) -> None: """Tests the connection and credentials for the Looker API.""" LookerClient(base_url, client_id, client_secret, port, api_version)
def test_authenticate_sets_session_headers(mock_post): mock_response = Mock(spec=requests.Response) mock_response.json.return_value = {"access_token": "test_access_token"} mock_post.return_value = mock_response client = LookerClient(TEST_BASE_URL, TEST_CLIENT_ID, TEST_CLIENT_SECRET) assert client.session.headers == {"Authorization": f"token test_access_token"}