56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
|
"""Tests for the HTTP server."""
|
||
|
# -*- coding: utf-8 -*-
|
||
|
# vim: set fileencoding=utf-8 :
|
||
|
|
||
|
from __future__ import absolute_import, division, print_function
|
||
|
|
||
|
from cheroot.wsgi import PathInfoDispatcher
|
||
|
|
||
|
|
||
|
def wsgi_invoke(app, environ):
|
||
|
"""Serve 1 request from a WSGI application."""
|
||
|
response = {}
|
||
|
|
||
|
def start_response(status, headers):
|
||
|
response.update({
|
||
|
'status': status,
|
||
|
'headers': headers,
|
||
|
})
|
||
|
|
||
|
response['body'] = b''.join(
|
||
|
app(environ, start_response),
|
||
|
)
|
||
|
|
||
|
return response
|
||
|
|
||
|
|
||
|
def test_dispatch_no_script_name():
|
||
|
"""Dispatch despite lack of ``SCRIPT_NAME`` in environ."""
|
||
|
# Bare bones WSGI hello world app (from PEP 333).
|
||
|
def app(environ, start_response):
|
||
|
start_response(
|
||
|
'200 OK', [
|
||
|
('Content-Type', 'text/plain; charset=utf-8'),
|
||
|
],
|
||
|
)
|
||
|
return [u'Hello, world!'.encode('utf-8')]
|
||
|
|
||
|
# Build a dispatch table.
|
||
|
d = PathInfoDispatcher([
|
||
|
('/', app),
|
||
|
])
|
||
|
|
||
|
# Dispatch a request without `SCRIPT_NAME`.
|
||
|
response = wsgi_invoke(
|
||
|
d, {
|
||
|
'PATH_INFO': '/foo',
|
||
|
},
|
||
|
)
|
||
|
assert response == {
|
||
|
'status': '200 OK',
|
||
|
'headers': [
|
||
|
('Content-Type', 'text/plain; charset=utf-8'),
|
||
|
],
|
||
|
'body': b'Hello, world!',
|
||
|
}
|