import auth as app from auth import _parse_bearer_token from .conftest import LambdaContext def test_bearer_jwt(lambda_context: LambdaContext): # You should mock the Cognito user to pass the test app.get_user = lambda *args, **kwargs: { 'sub': '58efed8d-d276-41a8-8502-4ab8b5a6415e', 'name': 'pytest', 'custom:user_id': '5OxmMjL-ujoR5IMGegQz', } event = { 'headers': { 'authorization': 'Bearer 3c51cdfd-d23e-47f9-8d7c-e3e31a432921', }, } assert app.lambda_handler(event, lambda_context) == { 'isAuthorized': True, 'context': { 'user': { 'sub': '58efed8d-d276-41a8-8502-4ab8b5a6415e', 'name': 'pytest', 'custom:user_id': '5OxmMjL-ujoR5IMGegQz', }, 'auth_flow_type': 'USER_AUTH', }, } def test_bearer_apikey(dynamodb_seeds, lambda_context: LambdaContext): event = { 'headers': { 'authorization': 'Bearer sk-MzI1MDQ0NTctZjEzMy00YzAwLTkzNmItNmFhNzEyY2E5ZjQw', } } # This data was added from seeds assert app.lambda_handler(event, lambda_context) == { 'isAuthorized': True, 'context': { 'tenant': { 'name': 'default', 'id': '*', }, 'user': { 'id': '5OxmMjL-ujoR5IMGegQz', 'name': 'Sérgio R Siqueira', 'email': 'sergio@somosbeta.com.br', }, 'auth_flow_type': 'API_AUTH', }, } # This data was added from seeds assert app.lambda_handler( { 'headers': { 'authorization': 'Bearer sk-abc', } }, lambda_context, ) == {'isAuthorized': False} def test_parse_bearer_token_api_key(): bearer = _parse_bearer_token( 'Bearer sk-35433970-6857-4062-bb43-f71683b2f68e', ) assert bearer.token == '35433970-6857-4062-bb43-f71683b2f68e' # type: ignore assert bearer.auth_flow_type == 'API_AUTH' # type: ignore def test_parse_bearer_token_user_token(): bearer = _parse_bearer_token('Bearer d977f5a2-0302-4dd2-87c7-57414264d27a') assert bearer.token == 'd977f5a2-0302-4dd2-87c7-57414264d27a' # type: ignore assert bearer.auth_flow_type == 'USER_AUTH' # type: ignore