Esempio n. 1
0
def test_service_account_no_id(service_account_key, key, error_msg):
    service_account_key.pop(key)

    with pytest.raises(RuntimeError) as e:
        get_auth_token_requester(service_account_key=service_account_key).get_token_request()

    assert str(e.value) == error_msg
def test_both_params_error(token, service_account_key):
    with pytest.raises(RuntimeError) as e:
        get_auth_token_requester(
            token=token,
            service_account_key=service_account_key).get_token_request()

    assert str(
        e.value
    ) == "Conflicting API credentials properties 'token' and 'service-account-key' are set."
Esempio n. 3
0
    def __init__(self, **kwargs):
        self._channel_creds = grpc.ssl_channel_credentials(
            root_certificates=kwargs.get('root_certificates'),
            private_key=kwargs.get('private_key'),
            certificate_chain=kwargs.get('certificate_chain'),
        )
        self._endpoint = kwargs.get('endpoint', 'api.cloud.yandex.net')
        self._token_requester = get_auth_token_requester(
            token=kwargs.get("token"),
            service_account_key=kwargs.get("service_account_key"))

        self._unauthenticated_channel = None
        self._channels = None
Esempio n. 4
0
def test_service_account_key(service_account_key):
    request_func = get_auth_token_requester(service_account_key=service_account_key).get_token_request
    request = request_func()
    now = int(time.time())
    headers = jwt.get_unverified_header(request.jwt)
    parsed = jwt.decode(request.jwt, secret=service_account_key["public_key"], algorithms=['PS256'], verify=False)
    assert headers["typ"] == "JWT"
    assert headers["alg"] == "PS256"
    assert headers["kid"] == service_account_key["id"]

    assert parsed["iss"] == service_account_key["service_account_id"]
    assert parsed["aud"] == "https://iam.api.cloud.yandex.net/iam/v1/tokens"
    assert now - 60 <= int(parsed["iat"]) <= now
Esempio n. 5
0
    def __init__(self, client_user_agent=None, **kwargs):
        self._channel_creds = grpc.ssl_channel_credentials(
            root_certificates=kwargs.get("root_certificates"),
            private_key=kwargs.get("private_key"),
            certificate_chain=kwargs.get("certificate_chain"),
        )
        self._endpoint = kwargs.get("endpoint", "api.cloud.yandex.net")
        self._token_requester = get_auth_token_requester(
            token=kwargs.get("token"),
            service_account_key=kwargs.get("service_account_key"))

        self._unauthenticated_channel = None
        self._channels = None
        self._client_user_agent = client_user_agent
Esempio n. 6
0
def test_metadata_auth(iam_token):
    with metadata_server(iam_token) as srv:
        requester = get_auth_token_requester(metadata_addr=srv.addr)
        token = requester.get_token()
        assert token == iam_token
def test_oauth_token(token):
    request_func = get_auth_token_requester(token=token).get_token_request
    request = request_func()
    assert token == request.yandex_passport_oauth_token
def test_invalid_service_account_type():
    with pytest.raises(RuntimeError) as e:
        get_auth_token_requester(service_account_key=[]).get_token_request()

    assert str(e.value).startswith(
        "Invalid Service Account Key: expecting dictionary, actually got")