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
|
import cgi
from paste.debug.debugapp import SimpleApplication, SlowConsumer
from paste.fixture import TestApp
from paste.wsgiwrappers import WSGIRequest
def test_fixture():
app = TestApp(SimpleApplication())
res = app.get('/', params={'a': ['1', '2']})
assert (res.request.environ['QUERY_STRING'] ==
'a=1&a=2')
res = app.put('/')
assert (res.request.environ['REQUEST_METHOD'] ==
'PUT')
res = app.delete('/')
assert (res.request.environ['REQUEST_METHOD'] ==
'DELETE')
class FakeDict(object):
def items(self):
return [('a', '10'), ('a', '20')]
res = app.post('/params', params=FakeDict())
# test multiple cookies in one request
app.cookies['one'] = 'first';
app.cookies['two'] = 'second';
app.cookies['three'] = '';
res = app.get('/')
hc = res.request.environ['HTTP_COOKIE'].split('; ');
assert ('one=first' in hc)
assert ('two=second' in hc)
assert ('three=' in hc)
def test_fixture_form():
app = TestApp(SlowConsumer())
res = app.get('/')
form = res.forms[0]
assert 'file' in form.fields
assert form.action == ''
def test_fixture_form_end():
def response(environ, start_response):
body = b"<html><body><form>sm\xc3\xb6rebr\xc3\xb6</form></body></html>"
start_response("200 OK", [('Content-Type', 'text/html'),
('Content-Length', str(len(body)))])
return [body]
TestApp(response).get('/')
def test_params_and_upload_files():
class PostApp(object):
def __call__(self, environ, start_response):
start_response("204 No content", [])
self.request = WSGIRequest(environ)
return [b'']
post_app = PostApp()
app = TestApp(post_app)
app.post(
'/',
params={'param1': 'a', 'param2': 'b'},
upload_files=[
('file1', 'myfile.txt', b'data1'),
('file2', b'yourfile.txt', b'data2'),
],
)
params = post_app.request.params
assert len(params) == 4
assert params['param1'] == 'a'
assert params['param2'] == 'b'
assert params['file1'].value == b'data1'
assert params['file1'].filename == 'myfile.txt'
assert params['file2'].value == b'data2'
assert params['file2'].filename == 'yourfile.txt'
def test_unicode_path():
app = TestApp(SimpleApplication())
app.get(u"/?")
app.post(u"/?")
app.put(u"/?")
app.delete(u"/?")
|