passerelle/tests/test_proxylogger.py

86 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
import logging
import pytest
from httmock import all_requests, HTTMock
from passerelle.base.models import ProxyLogger, ResourceLog
from passerelle.apps.feeds.models import Feed
from .test_availability import down_mock, up_mock
@pytest.fixture
def connector():
connector, created = Feed.objects.get_or_create(slug='some-slug')
connector.set_log_level('DEBUG')
connector.url = 'http://example.net/'
connector.save()
return connector
def test_proxy_logger_basic(db, connector):
pr = ProxyLogger(connector)
pr.debug(u'some message')
rl_query = ResourceLog.objects.all()
assert len(rl_query) == 1
rl = rl_query.first()
assert rl.message == u'some message'
assert rl.levelno == logging.DEBUG
assert rl.appname == u'feeds'
assert rl.slug == u'some-slug'
def test_proxy_logger_std_interpolation(db, connector):
ResourceLog.objects.all().delete()
pr = ProxyLogger(connector)
pr.debug(u'some message %s', u'some var')
rl_query = ResourceLog.objects.all()
rl = rl_query.first()
assert rl.message == u'some message some var'
def test_proxy_logger_dict_interpolation(db, connector):
ResourceLog.objects.all().delete()
pr = ProxyLogger(connector)
pr.debug(u'some message %(var_name)s', {u'var_name': u'some var'})
rl_query = ResourceLog.objects.all()
rl = rl_query.first()
assert rl.message == u'some message some var'
def test_proxy_logger_ignore(db, connector):
ResourceLog.objects.all().delete()
connector.set_log_level('INFO')
pr = ProxyLogger(connector)
pr.debug(u'some message')
assert len(ResourceLog.objects.all()) == 0
def test_proxy_logger_ignore_when_down(db, connector):
with HTTMock(down_mock): # set connector as down
connector.availability()
assert connector.down() is True
ResourceLog.objects.all().delete()
pr = ProxyLogger(connector)
pr.debug(u'some message')
assert len(ResourceLog.objects.all()) == 0
def test_log_on_connector_availability_change(db, connector):
connector.title = u'éléphant'
with HTTMock(up_mock): # set connector as up
connector.availability()
ResourceLog.objects.all().delete()
with HTTMock(down_mock): # set connector as down
connector.availability()
assert len(ResourceLog.objects.all()) == 2
assert ResourceLog.objects.all()[0].message == 'GET http://example.net/ (=> 404)'
assert ResourceLog.objects.all()[1].level == 'error'
assert ResourceLog.objects.all()[1].message == u'connector "éléphant" (Feed) is now down'
with HTTMock(up_mock): # set connector as up
connector.availability()
assert len(ResourceLog.objects.all()) == 3
assert ResourceLog.objects.all()[2].level == 'info'
assert ResourceLog.objects.all()[2].message == u'connector "éléphant" (Feed) is back up'