1
1
from StringIO import StringIO
2
from nose.tools import eq_, ok_, assert_raises
4
from webob import BaseRequest
5
6
def simple_app(environ, start_response):
6
7
start_response('200 OK', [
38
39
assert res.content_encoding is None
39
40
assert res.body == 'a body'
41
43
def test_HEAD_closes():
42
44
req = Request.blank('/')
43
45
req.method = 'HEAD'
44
46
app_iter = StringIO('foo')
45
47
res = req.get_response(Response(app_iter=app_iter))
46
assert res.status_int == 200
48
assert app_iter.closed
48
eq_(res.status_int, 200)
52
def test_content_length():
53
r0 = Response('x'*10, content_length=10)
55
req_head = Request.blank('/', method='HEAD')
56
r1 = req_head.get_response(r0)
57
eq_(r1.status_int, 200)
59
eq_(r1.content_length, 10)
61
req_get = Request.blank('/')
62
r2 = req_get.get_response(r0)
63
eq_(r2.status_int, 200)
65
eq_(r2.content_length, 10)
67
r3 = Response(app_iter=['x']*10)
68
eq_(r3.content_length, None)
70
eq_(r3.content_length, 10)
72
r4 = Response(app_iter=['x']*10, content_length=20) # wrong content_length
73
eq_(r4.content_length, 20)
74
assert_raises(AssertionError, lambda: r4.body)
76
req_range = Request.blank('/', range=(0,5))
77
r0.conditional_response = True
78
r5 = req_range.get_response(r0)
79
eq_(r5.status_int, 206)
81
eq_(r5.content_length, 5)
84
def test_app_iter_range():
85
req = Request.blank('/', range=(2,5))
93
['012', '3', '4', '5'],
95
['0', '12', '34', '5'],
101
conditional_response=True,
103
res = req.get_response(r)
104
eq_(list(res.content_range), [2,5,6])
105
eq_(res.body, '234', 'body=%r; app_iter=%r' % (res.body, app_iter))