56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
from http import HTTPMethod
|
|
|
|
from layercake.dynamodb import DynamoDBPersistenceLayer
|
|
|
|
from jose_ import generate_jwt
|
|
|
|
from ..conftest import HttpApiProxy, LambdaContext
|
|
|
|
|
|
def test_authorize(
|
|
app,
|
|
seeds,
|
|
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
|
|
http_api_proxy: HttpApiProxy,
|
|
lambda_context: LambdaContext,
|
|
):
|
|
client_id = 'd72d4005-1fa7-4430-9754-80d5e2487bb6'
|
|
|
|
id_token = generate_jwt(
|
|
user_id='357db1c5-7442-4075-98a3-fbe5c938a419',
|
|
email='sergio@somosbeta.com.br',
|
|
)
|
|
|
|
r = app.lambda_handler(
|
|
http_api_proxy(
|
|
raw_path='/authorize',
|
|
method=HTTPMethod.GET,
|
|
query_string_parameters={
|
|
'response_type': 'code',
|
|
'client_id': client_id,
|
|
'redirect_uri': 'https://localhost/callback',
|
|
'scope': 'openid',
|
|
'nonce': '123',
|
|
},
|
|
cookies=[
|
|
f'id_token={id_token}; HttpOnly; Secure',
|
|
],
|
|
),
|
|
lambda_context,
|
|
)
|
|
|
|
assert 'Location' in r['headers']
|
|
|
|
r = dynamodb_persistence_layer.query(
|
|
key_cond_expr='#pk = :pk AND begins_with(#sk, :sk)',
|
|
expr_attr_name={
|
|
'#pk': 'id',
|
|
'#sk': 'sk',
|
|
},
|
|
expr_attr_values={
|
|
':pk': f'OAUTH2_CODE#CLIENT_ID#{client_id}',
|
|
':sk': 'CODE',
|
|
},
|
|
)
|
|
assert len(r['items']) == 2
|