Files
saladeaula.digital/http-api/tests/routes/test_courses.py
2025-05-16 14:29:14 -03:00

98 lines
2.4 KiB
Python

from http import HTTPMethod, HTTPStatus
import json
from layercake.dynamodb import (
ComposeKey,
DynamoDBCollection,
DynamoDBPersistenceLayer,
KeyPair,
PartitionKey,
)
from ..conftest import HttpApiProxy, LambdaContext
YEAR_DAYS = 365
def test_get_courses(
mock_app,
dynamodb_seeds,
http_api_proxy: HttpApiProxy,
lambda_context: LambdaContext,
):
r = mock_app.lambda_handler(
http_api_proxy(
raw_path='/courses',
method=HTTPMethod.GET,
headers={'X-Tenant': '*'},
),
lambda_context,
)
print(r)
def test_post_course(
mock_app,
dynamodb_seeds,
dynamodb_persistence_layer,
http_api_proxy: HttpApiProxy,
lambda_context: LambdaContext,
):
r = mock_app.lambda_handler(
http_api_proxy(
raw_path='/courses',
method=HTTPMethod.POST,
headers={'X-Tenant': '*'},
body={
'name': 'pytest',
'access_period': YEAR_DAYS,
'cert': {
'exp_interval': YEAR_DAYS * 2,
},
},
),
lambda_context,
)
assert 'id' in json.loads(r['body'])
assert r['statusCode'] == HTTPStatus.CREATED
collect = DynamoDBCollection(dynamodb_persistence_layer)
logs = collect.query(
PartitionKey(
ComposeKey('5OxmMjL-ujoR5IMGegQz', prefix='log', delimiter=':'),
)
)
assert len(logs['items']) == 3
def test_put_course(
mock_app,
dynamodb_seeds,
dynamodb_persistence_layer: DynamoDBPersistenceLayer,
http_api_proxy: HttpApiProxy,
lambda_context: LambdaContext,
):
r = mock_app.lambda_handler(
http_api_proxy(
raw_path='/courses/90d7f0d2-d9a4-4467-a31c-f9a7955964cf',
method=HTTPMethod.PUT,
headers={'X-Tenant': '*'},
body={
'id': '90d7f0d2-d9a4-4467-a31c-f9a7955964cf',
'name': 'pytest',
'access_period': YEAR_DAYS,
'cert': {
'exp_interval': YEAR_DAYS * 2,
},
},
),
lambda_context,
)
assert r['statusCode'] == HTTPStatus.OK
collect = DynamoDBCollection(dynamodb_persistence_layer)
course = collect.get_item(KeyPair('90d7f0d2-d9a4-4467-a31c-f9a7955964cf', '0'))
assert course['name'] == 'pytest'