import json from http import HTTPMethod, HTTPStatus from urllib.parse import urlencode from layercake.dynamodb import DynamoDBPersistenceLayer from ..conftest import HttpApiProxy, LambdaContext def test_token( app, seeds, dynamodb_persistence_layer: DynamoDBPersistenceLayer, http_api_proxy: HttpApiProxy, lambda_context: LambdaContext, ): client_id = 'd72d4005-1fa7-4430-9754-80d5e2487bb6' r = app.lambda_handler( http_api_proxy( raw_path='/token', method=HTTPMethod.POST, headers={ 'Content-Type': 'application/x-www-form-urlencoded', }, body=urlencode( { 'grant_type': 'authorization_code', 'redirect_uri': 'https://localhost/callback', 'code': 'kyqp3oSuRFTfuBaCmq3XOgGWg67l42Kt3D6xPEj7Yd3MLdi9', 'client_id': client_id, 'code_verifier': '9072df2d3709425993e733f38fb27a825b8860e699364ce9abafdf51077c0bdb4e456ddb741147a4bec4eeda782d92cc', } ), ), lambda_context, ) assert r['statusCode'] == HTTPStatus.OK r = json.loads(r['body']) print(r) # assert r['expires_in'] == 600 # tokens = dynamodb_persistence_layer.query( # key_cond_expr='#pk = :pk', # expr_attr_name={ # '#pk': 'id', # }, # expr_attr_values={ # ':pk': 'OAUTH2#TOKEN', # }, # ) # assert len(tokens['items']) == 2 # r = app.lambda_handler( # http_api_proxy( # raw_path='/token', # method=HTTPMethod.POST, # headers={ # 'Content-Type': 'application/x-www-form-urlencoded', # }, # body=urlencode( # { # 'grant_type': 'refresh_token', # 'refresh_token': r['refresh_token'], # 'client_id': client_id, # } # ), # ), # lambda_context, # ) # r = dynamodb_persistence_layer.query( # key_cond_expr='#pk = :pk', # expr_attr_name={ # '#pk': 'id', # }, # expr_attr_values={ # ':pk': 'OAUTH2#TOKEN', # }, # ) # assert len(r['items']) == 3