add middleware
This commit is contained in:
@@ -143,7 +143,7 @@ def dynamodb_seeds(dynamodb_client):
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_app(monkeypatch):
|
||||
def mock_app():
|
||||
import app
|
||||
|
||||
return app
|
||||
|
||||
@@ -5,9 +5,12 @@ from layercake.dynamodb import ComposeKey, DynamoDBCollection, PartitionKey
|
||||
|
||||
from ..conftest import HttpApiProxy, LambdaContext
|
||||
|
||||
YEAR_DAYS = 365
|
||||
|
||||
|
||||
def test_post_course(
|
||||
mock_app,
|
||||
dynamodb_seeds,
|
||||
dynamodb_persistence_layer,
|
||||
http_api_proxy: HttpApiProxy,
|
||||
lambda_context: LambdaContext,
|
||||
@@ -19,9 +22,9 @@ def test_post_course(
|
||||
headers={'X-Tenant': '*'},
|
||||
body={
|
||||
'name': 'pytest',
|
||||
'access_period': 365,
|
||||
'access_period': YEAR_DAYS,
|
||||
'cert': {
|
||||
'exp_interval': 730, # 2 years
|
||||
'exp_interval': YEAR_DAYS * 2,
|
||||
},
|
||||
},
|
||||
),
|
||||
@@ -35,6 +38,6 @@ def test_post_course(
|
||||
|
||||
collect = DynamoDBCollection(dynamodb_persistence_layer)
|
||||
logs = collect.get_items(
|
||||
PartitionKey(ComposeKey('5OxmMjL-ujoR5IMGegQz', prefix='logs'))
|
||||
PartitionKey(ComposeKey('5OxmMjL-ujoR5IMGegQz', prefix='log', delimiter=':'))
|
||||
)
|
||||
print(logs)
|
||||
|
||||
@@ -36,9 +36,9 @@ def test_settings(
|
||||
],
|
||||
'tenants': [
|
||||
{
|
||||
'sk': 'cJtK9SsnJhKPyxESe7g3DG',
|
||||
'sk': '0',
|
||||
'name': 'Beta Educação',
|
||||
'id': '5OxmMjL-ujoR5IMGegQz',
|
||||
'id': 'cJtK9SsnJhKPyxESe7g3DG',
|
||||
'cnpj': '15608435000190',
|
||||
'create_date': '2025-03-13T16:36:50.073156-03:00',
|
||||
}
|
||||
|
||||
@@ -7,3 +7,4 @@
|
||||
{"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "orgs#cJtK9SsnJhKPyxESe7g3DG"}, "cnpj": {"S": "15608435000190"}, "create_date": {"S": "2025-03-13T16:36:50.073156-03:00"}, "name": {"S": "Beta Educação"}}
|
||||
{"id": {"S": "log:5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "2024-02-08T16:42:33.776409-03:00"}, "action": {"S": "OPEN_EMAIL"}}
|
||||
{"id": {"S": "log:5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "2019-03-25T00:00:00-03:00"}, "action": {"S": "CLICK_EMAIL"}}
|
||||
{"id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "sk": {"S": "0"}, "name": {"S": "EDUSEG"}, "cnpj": {"S": "15608435000190"}}
|
||||
|
||||
@@ -1,31 +1,59 @@
|
||||
from http import HTTPMethod
|
||||
|
||||
import pytest
|
||||
from aws_lambda_powertools.event_handler.api_gateway import APIGatewayHttpResolver
|
||||
from layercake.dynamodb import DynamoDBCollection, DynamoDBPersistenceLayer
|
||||
|
||||
from middlewares import TenantMiddleware
|
||||
from middlewares import AuthorizerMiddleware, TenantMiddleware
|
||||
|
||||
from .conftest import HttpApiProxy, LambdaContext
|
||||
|
||||
|
||||
def test_eval(
|
||||
@pytest.fixture
|
||||
def mock_app(dynamodb_persistence_layer: DynamoDBPersistenceLayer):
|
||||
collect = DynamoDBCollection(dynamodb_persistence_layer)
|
||||
app = APIGatewayHttpResolver()
|
||||
app.use(middlewares=[AuthorizerMiddleware(), 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,
|
||||
):
|
||||
app = APIGatewayHttpResolver()
|
||||
app.use(middlewares=[TenantMiddleware()])
|
||||
|
||||
@app.get('/')
|
||||
def index():
|
||||
return {}
|
||||
|
||||
result = app(
|
||||
# This data was added from seeds
|
||||
result = mock_app(
|
||||
http_api_proxy(
|
||||
raw_path='/',
|
||||
method=HTTPMethod.GET,
|
||||
headers={'Tenant': 'cJtK9SsnJhKPyxESe7g3DG'},
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user