From 6963861cb0b564b692024dfd028d8529d7e8aa4d Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 13 Apr 2020 11:47:31 +0200 Subject: [PATCH] tests_multitenant: mock journald sender (#41250) --- .../test_request_context_filter.py | 54 +++++++++++-------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/tests_multitenant/test_request_context_filter.py b/tests_multitenant/test_request_context_filter.py index 4e00fcf..5c857ad 100644 --- a/tests_multitenant/test_request_context_filter.py +++ b/tests_multitenant/test_request_context_filter.py @@ -8,6 +8,16 @@ from tenant_schemas.utils import tenant_context from django.contrib.auth.models import User +from hobo.journal import JournalHandler + + +class MockSender: + def __init__(self): + self.calls = [] + + def send(self, *args, **kwargs): + self.calls.append((args, kwargs)) + def test_request_context_filter(caplog, settings, tenants, client): root_logger = logging.getLogger() @@ -43,11 +53,15 @@ def test_request_context_filter(caplog, settings, tenants, client): @pytest.fixture -def journald_handler(): - from hobo.journal import JournalHandler +def sender(): + yield MockSender() + +@pytest.fixture +def journald_handler(sender): root_logger = logging.getLogger() - journald_handler = JournalHandler() + journald_handler = JournalHandler(sender_function=sender.send) + journald_handler.addFilter(RequestContextFilter()) root_logger.handlers.append(journald_handler) try: yield journald_handler @@ -55,10 +69,9 @@ def journald_handler(): root_logger.handlers.remove(journald_handler) -def test_systemd(settings, tenants, client, journald_handler): +def test_systemd(settings, tenants, client, journald_handler, sender): root_logger = logging.getLogger() assert len(root_logger.handlers) == 2 - journald_handler.addFilter(RequestContextFilter()) for tenant in tenants: with tenant_context(tenant): @@ -75,21 +88,16 @@ def test_systemd(settings, tenants, client, journald_handler): client.get('/', SERVER_NAME=tenant.domain_url, HTTP_X_FORWARDED_FOR='99.99.99.99, 127.0.0.1') - from systemd.journal import Reader - import time - - reader = Reader() - reader.seek_realtime(time.time() - 10) - records = [l for l in reader if l['MESSAGE'] == 'wat!'] - assert len(records) == 2 - for tenant, record in zip(tenants, records): - assert record['IP'] == '99.99.99.99' - assert record['TENANT'] == tenant.domain_url - assert record['PATH'] == '/' - assert record['REQUEST_ID'].startswith('r:') - assert record['USER'] == user.username - assert record['USER_EMAIL'] == user.email - assert record['USER_NAME'] == user.username - assert record['USER_DISPLAY_NAME'] == 'John Doe' - assert record['USER_UUID'] == 'ab' * 16 - assert record['APPLICATION'] == 'fake-agent' + assert len(sender.calls) == 2 + for tenant, (args, kwargs) in zip(tenants, sender.calls): + assert args == ('wat!',) + assert kwargs['IP'] == '99.99.99.99' + assert kwargs['TENANT'] == tenant.domain_url + assert kwargs['PATH'] == '/' + assert kwargs['REQUEST_ID'].startswith('r:') + assert kwargs['USER'] == user.username + assert kwargs['USER_EMAIL'] == user.email + assert kwargs['USER_NAME'] == user.username + assert kwargs['USER_DISPLAY_NAME'] == 'John Doe' + assert kwargs['USER_UUID'] == 'ab' * 16 + assert kwargs['APPLICATION'] == 'fake-agent' -- 2.24.0