summaryrefslogtreecommitdiff
path: root/tests/test_urlparser.py
blob: a6d66bb562be74763fb6d9328b8968ab3bce8378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os
from paste.urlparser import *
from paste.fixture import *

def path(name):
    return os.path.join(os.path.dirname(os.path.abspath(__file__)),
                        'urlparser_data', name)

def make_app(name):
    app = URLParser({}, path(name), name, index_names=['index', 'Main'])
    testapp = TestApp(app)
    return testapp

def test_find_file():
    app = make_app('find_file')
    res = app.get('/')
    assert 'index1' in res
    assert res.header('content-type') == 'text/plain'
    res = app.get('/index')
    assert 'index1' in res
    assert res.header('content-type') == 'text/plain'
    res = app.get('/index.txt')
    assert 'index1' in res
    assert res.header('content-type') == 'text/plain'
    res = app.get('/test2.html')
    assert 'test2' in res
    assert res.header('content-type') == 'text/html'

def test_deep():
    app = make_app('deep')
    res = app.get('/')
    assert 'index2' in res
    res = app.get('/sub')
    assert res.status == 301
    print res
    assert res.header('location') == 'http://localhost/sub/'
    assert 'href="http://localhost/sub/"' in res
    res = app.get('/sub/')
    assert 'index3' in res
    
def test_python():
    app = make_app('python')
    res = app.get('/simpleapp')
    assert 'test1' in res
    assert res.header('test-header') == 'TEST!'
    assert res.header('content-type') == 'text/html'
    res = app.get('/stream')
    assert 'test2' in res
    res = app.get('/sub/simpleapp')
    assert 'subsimple' in res
    
def test_hook():
    app = make_app('hook')
    res = app.get('/bob/app')
    assert 'user: bob' in res
    res = app.get('/tim/')
    assert 'index: tim' in res
    
def test_not_found_hook():
    app = make_app('not_found')
    res = app.get('/simple/notfound')
    assert res.status == 200
    assert 'not found' in res
    res = app.get('/simple/found')
    assert 'is found' in res
    res = app.get('/recur/__notfound', status=404)
    # @@: It's unfortunate that the original path doesn't actually show up
    assert '/recur/notfound' in res
    res = app.get('/recur/__isfound')
    assert res.status == 200
    assert 'is found' in res
    res = app.get('/user/list')
    assert 'user: None' in res
    res = app.get('/user/bob/list')
    assert res.status == 200
    assert 'user: bob' in res
    
def test_static_parser():
    app = StaticURLParser(path('find_file'))
    testapp = TestApp(app)
    res = testapp.get('', status=301)
    res = testapp.get('/', status=404)
    res = testapp.get('/index.txt')
    assert res.body.strip() == 'index1'
    res = testapp.get('/index.txt/foo', status=500)
    
def test_egg_parser():
    app = PkgResourcesParser('Paste', 'paste')
    testapp = TestApp(app)
    res = testapp.get('', status=301)
    res = testapp.get('/', status=404)
    res = testapp.get('/flup_session', status=404)
    res = testapp.get('/util/classinit.py')
    assert 'ClassInitMeta' in res
    res = testapp.get('/util/classinit', status=404)
    res = testapp.get('/util', status=301)
    res = testapp.get('/util/classinit.py/foo', status=500)