58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
from http import HTTPMethod
|
|
|
|
from aws_lambda_powertools.event_handler.api_gateway import APIGatewayHttpResolver
|
|
from layercake.dynamodb import DynamoDBCollection, DynamoDBPersistenceLayer
|
|
from middlewares import AuthenticationMiddleware, TenantMiddleware
|
|
import pytest
|
|
|
|
from .conftest import HttpApiProxy, LambdaContext
|
|
|
|
@pytest.fixture
|
|
def mock_app(dynamodb_persistence_layer: DynamoDBPersistenceLayer):
|
|
collect = DynamoDBCollection(dynamodb_persistence_layer)
|
|
app = APIGatewayHttpResolver()
|
|
app.use(middlewares=[AuthenticationMiddleware(), TenantMiddleware(collect)])
|
|
|
|
@app.get('/')
|
|
def index():
|
|
return app.context.get('tenant')
|
|
|
|
return app
|
|
|
|
|
|
def test_tenant_user_auth(
|
|
mock_app,
|
|
dynamodb_seeds,
|
|
http_api_proxy: HttpApiProxy,
|
|
lambda_context: LambdaContext,
|
|
):
|
|
# This data was added from seeds
|
|
result = mock_app(
|
|
http_api_proxy(
|
|
raw_path='/',
|
|
method=HTTPMethod.GET,
|
|
headers={'X-Tenant': 'cJtK9SsnJhKPyxESe7g3DG'},
|
|
),
|
|
lambda_context,
|
|
)
|
|
|
|
assert result['body'] == '{"id":"cJtK9SsnJhKPyxESe7g3DG","name":"EDUSEG"}'
|
|
assert result['statusCode'] == 200
|
|
|
|
|
|
def test_tenant_forbidden(
|
|
mock_app,
|
|
http_api_proxy: HttpApiProxy,
|
|
lambda_context: LambdaContext,
|
|
):
|
|
result = mock_app(
|
|
http_api_proxy(
|
|
raw_path='/',
|
|
method=HTTPMethod.GET,
|
|
headers={'X-Tenant': 'abc'},
|
|
),
|
|
lambda_context,
|
|
)
|
|
|
|
assert result['statusCode'] == 403
|