Files

55 lines
1.5 KiB
Python

from http import HTTPMethod, HTTPStatus
from layercake.dynamodb import (
DynamoDBPersistenceLayer,
SortKey,
TransactKey,
)
from ...conftest import HttpApiProxy, LambdaContext
def test_payment_retries(
app,
seeds,
http_api_proxy: HttpApiProxy,
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
lambda_context: LambdaContext,
):
r = app.lambda_handler(
http_api_proxy(
raw_path='/orders/4b23f6f5-5377-476b-b1de-79427c0295f6/payment-retries',
method=HTTPMethod.POST,
body={
'invoice_id': '123',
'credit_card': {
'holder_name': 'Sergio R Siqueira',
'number': '4111111111111111',
'exp_month': '01',
'exp_year': '2026',
'cvv': '123',
},
'installments': 3,
},
),
lambda_context,
)
assert r['statusCode'] == HTTPStatus.CREATED
r = dynamodb_persistence_layer.collection.get_items(
TransactKey('4b23f6f5-5377-476b-b1de-79427c0295f6')
+ SortKey('TRANSACTION')
+ SortKey(
'CREDIT_CARD',
rename_key='cc',
)
+ SortKey(
'TRANSACTION#STATS',
rename_key='stats',
),
)
assert r['credit_card']['number'] == '4111111111111111'
assert 'last_attempt_succeeded' not in r['stats']
assert r['cc']['last4'] == '1111'
assert r['cc']['brand'] == 'Visa'