33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
|
import pytest
|
||
|
|
||
|
from auth.signedgrant import validate_signed_grant, generate_signed_token, SIGNATURE_PREFIX
|
||
|
from auth.validateresult import AuthKind, ValidateResult
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize('header, expected_result', [
|
||
|
pytest.param('', ValidateResult(AuthKind.signed_grant, missing=True), id='Missing'),
|
||
|
pytest.param('somerandomtoken', ValidateResult(AuthKind.signed_grant, missing=True),
|
||
|
id='Invalid header'),
|
||
|
pytest.param('token somerandomtoken', ValidateResult(AuthKind.signed_grant, missing=True),
|
||
|
id='Random Token'),
|
||
|
pytest.param('token ' + SIGNATURE_PREFIX + 'foo',
|
||
|
ValidateResult(AuthKind.signed_grant,
|
||
|
error_message='Signed grant could not be validated'),
|
||
|
id='Invalid token'),
|
||
|
])
|
||
|
def test_token(header, expected_result):
|
||
|
assert validate_signed_grant(header) == expected_result
|
||
|
|
||
|
|
||
|
def test_valid_grant():
|
||
|
header = 'token ' + generate_signed_token({'a': 'b'}, {'c': 'd'})
|
||
|
expected = ValidateResult(AuthKind.signed_grant, signed_data={
|
||
|
'grants': {
|
||
|
'a': 'b',
|
||
|
},
|
||
|
'user_context': {
|
||
|
'c': 'd'
|
||
|
},
|
||
|
})
|
||
|
assert validate_signed_grant(header) == expected
|