Exemple #1
0
 def test_using_kwargs_credentials(self, mocked_google_credentials,
                                   mocked_crypt, mocked_jwt):
     try:
         generate_jwt(
             {},
             google_application_credentials="/some/path/credentials.json")
     except ValueError:
         pytest.fail("Unexpected ValueError")
Exemple #2
0
    def test_setting_claims(self, mocked_google_credentials, mocked_crypt,
                            mocked_jwt):
        claims = {}

        generate_jwt(
            claims,
            google_application_credentials="/some/path/credentials.json")

        assert claims == {
            "aud": "https://api.fluidly.com",
            "email": "*****@*****.**",
            "exp": 1547439694,
            "iat": 1547436094,
            "iss": "*****@*****.**",
            "sub": "*****@*****.**",
        }
Exemple #3
0
 def test_passing_env_credentials(
     self,
     mocked_google_credentials,
     mocked_crypt,
     mocked_jwt,
     mocked_env_credentials_path,
 ):
     try:
         assert generate_jwt({}) == b"JWT_TOKEN"
     except ValueError:
         pytest.fail("Unexpected ValueError")
Exemple #4
0
def check_permissions(original_payload: Any, request_url: str,
                      **kwargs: Any) -> bool:
    start = time.time()
    signed_jwt = generate_jwt(original_payload)
    try:
        response = make_jwt_request(signed_jwt, request_url)
    except Exception:
        raise UserPermissionsRequestException()

    logger = base_logger.get_logger()
    end = time.time()

    try:
        response_json = response.json()

        authorised = response.status_code == 200 and response_json.get(
            "grantAccess")
        if not authorised:
            logger.warning(
                "Authorisation failed",
                response_json=response_json,
                status_code=response.status_code,
                response_headers=response.headers,
                url=request_url,
                original_payload=original_payload,
                duration=end - start,
                **kwargs,
            )
            return False
        logger.info(
            "Called user permissions",
            response_json=response_json,
            status_code=response.status_code,
            url=request_url,
            duration=end - start,
        )
        return True
    except Exception:
        logger.warning(
            "Authorisation failed",
            status_code=response.status_code,
            response_headers=response.headers,
            url=request_url,
            original_payload=original_payload,
            exc_info=True,
            duration=end - start,
        )
        raise UserPermissionsPayloadException()
Exemple #5
0
 def test_required_credentials(self):
     with pytest.raises(
             ValueError,
             match="Please provide GOOGLE_APPLICATION_CREDENTIALS"):
         generate_jwt({})
Exemple #6
0
 def test_returning_jwt_from_auth0_env(self, mocked_auth0_jwt_token,
                                       mocked_crypt, mocked_jwt):
     assert generate_jwt({}) == b"AUTH0_JWT_TOKEN"
Exemple #7
0
 def test_returning_jwt_with_google_credentials(self,
                                                mocked_google_credentials,
                                                mocked_crypt, mocked_jwt):
     assert (generate_jwt(
         {}, google_application_credentials="/some/path/credentials.json")
             == b"JWT_TOKEN")