Beispiel #1
0
def test_client_set_token(mock_secure_channel, mock_channel, mock_admin, mock_admin_auth, mock_dataproxy):
    mock_secure_channel.return_value = True
    mock_channel.return_value = True
    mock_admin.AdminServiceStub.return_value = True
    mock_admin_auth.AuthMetadataServiceStub.return_value = get_admin_stub_mock()
    client = RawSynchronousFlyteClient(PlatformConfig(endpoint="a.b.com", insecure=True))
    client.set_access_token("abc")
    assert client._metadata[0][1] == "Bearer abc"
    assert client.check_access_token("abc")
Beispiel #2
0
def test_refresh_credentials_from_command(mock_call_to_external_process, mock_admin_auth, mock_set_access_token):
    token = "token"
    command = ["command", "generating", "token"]

    mock_admin_auth.AuthMetadataServiceStub.return_value = get_admin_stub_mock()
    client = RawSynchronousFlyteClient(PlatformConfig(command=command))

    mock_call_to_external_process.return_value = CompletedProcess(command, 0, stdout=token)
    client._refresh_credentials_from_command()

    mock_call_to_external_process.assert_called_with(command, capture_output=True, text=True, check=True)
    mock_set_access_token.assert_called_with(token, client.public_client_config.authorization_metadata_key)
Beispiel #3
0
def test_refresh_client_credentials_aka_basic(
    mock_secure_channel,
    mock_channel,
    mock_admin,
    mock_admin_auth,
    mock_get_token,
    mock_get_basic_header,
    mock_dataproxy,
):
    mock_secure_channel.return_value = True
    mock_channel.return_value = True
    mock_admin.AdminServiceStub.return_value = True
    mock_get_basic_header.return_value = "Basic 123"
    mock_get_token.return_value = ("token1", 1234567)

    mock_admin_auth.AuthMetadataServiceStub.return_value = get_admin_stub_mock()
    client = RawSynchronousFlyteClient(
        PlatformConfig(
            endpoint="a.b.com", insecure=True, client_credentials_secret="sosecret", scopes=["a", "b", "c", "d"]
        )
    )
    client._metadata = None
    assert not client.check_access_token("fdsa")
    client._refresh_credentials_basic()

    # Scopes from configuration take precendence.
    mock_get_token.assert_called_once_with("https://your.domain.io/oauth2/token", "Basic 123", "a,b,c,d")

    client.set_access_token("token")
    assert client._metadata[0][0] == "authorization"
Beispiel #4
0
def test_basic_strings(mocked_method):
    cc = RawSynchronousFlyteClient(PlatformConfig(auth_mode="basic"))
    cc.refresh_credentials()
    assert mocked_method.called

    cc = RawSynchronousFlyteClient(PlatformConfig(auth_mode="client_credentials"))
    cc.refresh_credentials()
    assert mocked_method.call_count == 2
Beispiel #5
0
def test_refresh_basic(mocked_method):
    cc = RawSynchronousFlyteClient(PlatformConfig(auth_mode=AuthType.BASIC))
    cc.refresh_credentials()
    assert mocked_method.called

    cc = RawSynchronousFlyteClient(PlatformConfig(auth_mode=AuthType.CLIENT_CREDENTIALS))
    cc.refresh_credentials()
    assert mocked_method.call_count == 2
Beispiel #6
0
def test_raises(mock_secure_channel, mock_channel, mock_admin, mock_admin_auth, mock_dataproxy):
    mock_secure_channel.return_value = True
    mock_channel.return_value = True
    mock_admin.AdminServiceStub.return_value = True

    # If the public client config is missing then raise an error
    mocked_auth = get_admin_stub_mock()
    mocked_auth.GetPublicClientConfig.return_value = None
    mock_admin_auth.AuthMetadataServiceStub.return_value = mocked_auth
    client = RawSynchronousFlyteClient(PlatformConfig(endpoint="a.b.com", insecure=True))
    assert client.public_client_config is None
    with pytest.raises(ValueError):
        client._refresh_credentials_basic()

    # If the oauth2 metadata is missing then raise an error
    mocked_auth = get_admin_stub_mock()
    mocked_auth.GetOAuth2Metadata.return_value = None
    mock_admin_auth.AuthMetadataServiceStub.return_value = mocked_auth
    client = RawSynchronousFlyteClient(PlatformConfig(endpoint="a.b.com", insecure=True))
    assert client.oauth2_metadata is None
    with pytest.raises(ValueError):
        client._refresh_credentials_basic()
Beispiel #7
0
def test_refresh_from_environment_variable(mocked_method, monkeypatch: pytest.MonkeyPatch):
    monkeypatch.setenv(Credentials.AUTH_MODE.legacy.get_env_name(), AuthType.EXTERNAL_PROCESS.name, prepend=False)
    cc = RawSynchronousFlyteClient(PlatformConfig(auth_mode=None).auto(None))
    cc.refresh_credentials()
    assert mocked_method.called
Beispiel #8
0
def test_refresh_command(mocked_method):
    cc = RawSynchronousFlyteClient(PlatformConfig(auth_mode=AuthType.EXTERNALCOMMAND))
    cc.refresh_credentials()
    assert mocked_method.called
Beispiel #9
0
def test_refresh_standard(mocked_method):
    cc = RawSynchronousFlyteClient(PlatformConfig())
    cc.refresh_credentials()
    assert mocked_method.called
Beispiel #10
0
def test_list_projects_paginated(mock_channel, mock_admin):
    client = RawSynchronousFlyteClient(PlatformConfig(endpoint="a.b.com", insecure=True))
    project_list_request = _project_pb2.ProjectListRequest(limit=100, token="", filters=None, sort_by=None)
    client.list_projects(project_list_request)
    mock_admin.AdminServiceStub().ListProjects.assert_called_with(project_list_request, metadata=None)
Beispiel #11
0
def test_update_project(mock_channel, mock_admin):
    client = RawSynchronousFlyteClient(PlatformConfig(endpoint="a.b.com", insecure=True))
    project = _project_pb2.Project(id="foo", name="name", description="description", state=_project_pb2.Project.ACTIVE)
    client.update_project(project)
    mock_admin.AdminServiceStub().UpdateProject.assert_called_with(project, metadata=None)