tests_multitenant: mock journald sender (#41250)
This commit is contained in:
parent
8605761621
commit
2b0474a2e9
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue