import json from http import HTTPMethod, HTTPStatus from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair from ...conftest import HttpApiProxy, LambdaContext def test_get_emails( app, seeds, http_api_proxy: HttpApiProxy, lambda_context: LambdaContext, ): r = app.lambda_handler( http_api_proxy( raw_path='/users/15bacf02-1535-4bee-9022-19d106fd7518/emails', method=HTTPMethod.GET, ), lambda_context, ) assert r['statusCode'] == HTTPStatus.OK body = json.loads(r['body']) assert len(body['items']) == 2 def test_add_email( app, seeds, http_api_proxy: HttpApiProxy, lambda_context: LambdaContext, dynamodb_persistence_layer: DynamoDBPersistenceLayer, ): r = app.lambda_handler( http_api_proxy( raw_path='/users/15bacf02-1535-4bee-9022-19d106fd7518/emails', method=HTTPMethod.POST, body={ 'email': 'osergiosiqueira+pytest@gmail.com', }, ), lambda_context, ) assert r['statusCode'] == HTTPStatus.CREATED email_verification = dynamodb_persistence_layer.collection.query( KeyPair( '15bacf02-1535-4bee-9022-19d106fd7518', 'EMAIL_VERIFICATION', ) ) assert 'name' in email_verification['items'][0] assert email_verification['items'][0]['email'] == 'osergiosiqueira+pytest@gmail.com' def test_email_as_primary( app, seeds, http_api_proxy: HttpApiProxy, lambda_context: LambdaContext, ): r = app.lambda_handler( http_api_proxy( raw_path='/users/15bacf02-1535-4bee-9022-19d106fd7518/emails/primary', method=HTTPMethod.PATCH, body={ 'old_email': 'sergio@somosbeta.com.br', 'new_email': 'osergiosiqueira@gmail.com', 'email_verified': 'false', }, ), lambda_context, ) assert r['statusCode'] == HTTPStatus.NO_CONTENT def test_remove_emal( app, seeds, http_api_proxy: HttpApiProxy, lambda_context: LambdaContext, ): r = app.lambda_handler( http_api_proxy( raw_path='/users/15bacf02-1535-4bee-9022-19d106fd7518/emails/osergiosiqueira@gmail.com', method=HTTPMethod.DELETE, ), lambda_context, ) assert r['statusCode'] == HTTPStatus.NO_CONTENT