1#!/usr/bin/env python
2
3import pytest
4if pytest.PYVER[:2] == (3, 3):
5    pytest.skip("Broken on Python 3.3")
6
7from circuits.web import Server
8from circuits.web.wsgi import Gateway
9
10from .helpers import urlopen
11
12
13def hello(environ, start_response):
14    status = "200 OK"
15    response_headers = [("Content-type", "text/plain")]
16    start_response(status, response_headers)
17    return "Hello World!"
18
19
20def foobar(environ, start_response):
21    status = "200 OK"
22    response_headers = [("Content-type", "text/plain")]
23    start_response(status, response_headers)
24    return "FooBar!"
25
26
27@pytest.fixture
28def apps(request):
29    return {
30        "/": hello,
31        "/foobar": foobar
32    }
33
34
35def test(apps):
36    server = Server(0)
37    Gateway(apps).register(server)
38
39    waiter = pytest.WaitEvent(server, "ready")
40    server.start()
41    waiter.wait()
42
43    f = urlopen(server.http.base)
44    s = f.read()
45    assert s == b"Hello World!"
46
47    f = urlopen("{0:s}/foobar/".format(server.http.base))
48    s = f.read()
49    assert s == b"FooBar!"
50
51    server.stop()
52