コード例 #1
0
    def test_subject_returns_sub_claim(self, claims):
        jwttok = jwt_token(claims)

        grant_token = VerifiedJWTGrantToken(jwttok, 'top-secret',
                                            'test-audience')

        assert grant_token.subject == 'test-subject'
コード例 #2
0
    def test_init_raises_for_invalid_signature_algorithm(self, claims):
        jwttok = jwt_token(claims, alg='HS512')

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == 'Invalid grant token signature algorithm.'
コード例 #3
0
    def test_init_raises_for_invalid_signature(self, claims):
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'wrong-secret', 'test-audience')

        assert exc.value.description == 'Invalid grant token signature.'
コード例 #4
0
    def test_init_raises_for_none_key(self, claims):
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidClientError) as exc:
            VerifiedJWTGrantToken(jwttok, None, 'test-audience')

        assert exc.value.description == 'Client is invalid.'
コード例 #5
0
    def test_init_raises_for_invalid_aud(self, claims):
        claims['aud'] = 'different-audience'
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidJWTGrantTokenClaimError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == "Invalid claim 'aud' (audience) in grant token."
コード例 #6
0
    def test_init_raises_for_too_long_token_lifetime(self, claims):
        claims['exp'] = epoch(delta=timedelta(minutes=15))
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == 'Grant token lifetime is too long.'
コード例 #7
0
    def test_init_raises_for_iat_claim_in_future(self, claims):
        claims['iat'] = epoch(delta=timedelta(minutes=13))
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == 'Grant token issue time (iat) is in the future.'
コード例 #8
0
    def test_init_raises_for_nbf_claim_in_future(self, claims):
        claims['nbf'] = epoch(delta=timedelta(minutes=2))
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == 'Grant token is not yet valid.'
コード例 #9
0
    def test_init_raises_when_expired_with_leeway(self, claims):
        claims['exp'] = epoch(delta=timedelta(minutes=-2))
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == 'Grant token is expired.'
コード例 #10
0
    def test_init_raises_for_missing_claims(self, claims, claim, description):
        del claims[claim]
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidGrantError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == "Missing claim '{}' ({}) from grant token.".format(
            claim, description)
コード例 #11
0
    def test_subject_raises_for_empty_sub_claim(self, claims):
        claims['sub'] = ''
        jwttok = jwt_token(claims)

        grant_token = VerifiedJWTGrantToken(jwttok, 'top-secret',
                                            'test-audience')
        with pytest.raises(InvalidGrantError) as exc:
            grant_token.subject

        assert exc.value.description == "Missing claim 'sub' (subject) from grant token."
コード例 #12
0
    def test_not_before_returns_nbf_claim(self, claims):
        now = datetime.utcnow().replace(microsecond=0)
        delta = timedelta(minutes=-2)

        claims["nbf"] = epoch(timestamp=now, delta=delta)
        jwttok = jwt_token(claims)

        grant_token = VerifiedJWTGrantToken(jwttok, "top-secret", "test-audience")

        assert grant_token.not_before == (now + delta)
コード例 #13
0
    def test_init_raises_for_invalid_timestamp_types(self, claims, claim,
                                                     description):
        claims[claim] = 'wut'
        jwttok = jwt_token(claims)

        with pytest.raises(InvalidJWTGrantTokenClaimError) as exc:
            VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')

        assert exc.value.description == "Invalid claim '{}' ({}) in grant token.".format(
            claim, description)
コード例 #14
0
    def test_subject_raises_for_missing_sub_claim(self, claims):
        del claims["sub"]
        jwttok = jwt_token(claims)

        grant_token = VerifiedJWTGrantToken(jwttok, "top-secret", "test-audience")
        with pytest.raises(InvalidGrantError) as exc:
            grant_token.subject

        assert (
            exc.value.description == "Missing claim 'sub' (subject) from grant token."
        )
コード例 #15
0
    def test_expiry_returns_exp_claim(self, claims):
        now = datetime.utcnow().replace(microsecond=0)
        delta = timedelta(minutes=2)

        claims['exp'] = epoch(timestamp=now, delta=delta)
        jwttok = jwt_token(claims)

        grant_token = VerifiedJWTGrantToken(jwttok, 'top-secret',
                                            'test-audience')

        assert grant_token.expiry == (now + delta)
コード例 #16
0
    def test_init_returns_token_when_expired_but_in_leeway(self, claims):
        claims['exp'] = epoch(delta=timedelta(seconds=-8))
        jwttok = jwt_token(claims)

        VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')
コード例 #17
0
    def test_init_returns_token_when_valid(self, claims):
        jwttok = jwt_token(claims)

        actual = VerifiedJWTGrantToken(jwttok, 'top-secret', 'test-audience')
        assert isinstance(actual, VerifiedJWTGrantToken)