tests: add tests for failed requests handling by publisher

This commit is contained in:
Frédéric Péters 2014-12-28 23:22:48 +01:00
parent 05ad28a807
commit a17d8db46c
1 changed files with 76 additions and 0 deletions

76
tests/test_publisher.py Normal file
View File

@ -0,0 +1,76 @@
import re
import sys
import shutil
from quixote import cleanup
from wcs.qommon.http_request import HTTPRequest
from utilities import create_temporary_pub
def setup_module(module):
cleanup()
global pub
pub = create_temporary_pub()
def teardown_module(module):
shutil.rmtree(pub.APP_DIR)
def get_request():
return HTTPRequest(None, {
'SERVER_NAME': 'www.example.net',
'SCRIPT_NAME': '',
})
def test_plaintext_error():
req = get_request()
pub._set_request(req)
try:
raise Exception('foo')
except:
exc_type, exc_value, tb = sys.exc_info()
req.form = {'foo': 'bar'}
s = pub._generate_plaintext_error(req, None, exc_type, exc_value, tb)
assert re.findall('^foo.*bar', s, re.MULTILINE)
assert re.findall('^SERVER_NAME.*www.example.net', s, re.MULTILINE)
assert re.findall('File.*?line.*?in test_plaintext_error', s)
assert re.findall('^>.*\d+.*s = pub._generate_plaintext_error', s, re.MULTILINE)
pub.USE_LONG_TRACES = False
s = pub._generate_plaintext_error(req, None, exc_type, exc_value, tb)
assert re.findall('^foo.*bar', s, re.MULTILINE)
assert re.findall('^SERVER_NAME.*www.example.net', s, re.MULTILINE)
assert re.findall('File.*?line.*?in test_plaintext_error', s)
assert not re.findall('^>.*\d+.*s = pub._generate_plaintext_error', s, re.MULTILINE)
def test_finish_failed_request():
req = get_request()
pub._set_request(req)
body = pub.finish_failed_request()
assert '<h1>Internal Server Error</h1>' in body
req = get_request()
pub._set_request(req)
req.form = {'format': 'json'}
body = pub.finish_failed_request()
assert body == '{"err": 1}'
req = get_request()
pub.config.display_exceptions = 'text'
pub._set_request(req)
try:
raise Exception()
except:
body = pub.finish_failed_request()
assert 'Traceback (most recent call last)' in str(body)
assert '<div class="error-page">' not in str(body)
req = get_request()
pub.config.display_exceptions = 'text-in-html'
pub._set_request(req)
try:
raise Exception()
except:
body = pub.finish_failed_request()
assert 'Traceback (most recent call last)' in str(body)
assert '<div class="error-page">' in str(body)