예제 #1
0
 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,
     )
예제 #2
0
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",
        )
예제 #3
0
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,
        )
예제 #4
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"}
예제 #5
0
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)
예제 #6
0
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
예제 #7
0
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"
    }
예제 #8
0
 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)
예제 #9
0
 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)
예제 #10
0
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
예제 #11
0
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()
예제 #12
0
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)
예제 #13
0
파일: cli.py 프로젝트: msandt3/spectacles
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)
예제 #14
0
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"}