mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-22 19:34:22 +00:00
* feat(API): PRWLR-4368 remove TenantMiddleware in favour of transaction based setup * feat(API): PRWLR-4368 override initial request method to perform atomic transactions on RLS viewsets
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from unittest.mock import patch, Mock, ANY
|
|
|
|
import pytest
|
|
|
|
from api.middleware import extract_tenant_id
|
|
|
|
|
|
@pytest.mark.django_db
|
|
@patch("logging.getLogger")
|
|
def test_api_logger_middleware(mock_get_logger, client):
|
|
mock_logger = Mock()
|
|
mock_get_logger.side_effect = lambda name: mock_logger if name == "api" else Mock()
|
|
request_method = "GET"
|
|
request_path = "/this_path_does_not_exist"
|
|
tenant_id = "12646005-9067-4d2a-a098-8bb378604362"
|
|
api_logger = "api"
|
|
|
|
response = getattr(client, request_method.lower())(
|
|
request_path, headers={"X-Tenant-ID": tenant_id}
|
|
)
|
|
|
|
mock_get_logger.assert_any_call(api_logger)
|
|
mock_logger.info.assert_called_once_with(
|
|
"",
|
|
extra={
|
|
"method": request_method,
|
|
"path": request_path,
|
|
"query_params": {},
|
|
"status_code": response.status_code,
|
|
"duration": ANY,
|
|
"tenant_id": tenant_id,
|
|
},
|
|
)
|
|
|
|
assert isinstance(mock_logger.info.call_args[1]["extra"]["duration"], float)
|
|
|
|
|
|
def test_extract_tenant_id():
|
|
mock_request = Mock()
|
|
extract_tenant_id(mock_request)
|
|
|
|
mock_request.headers.get.assert_called_once_with("X-Tenant-ID")
|