Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

79 lines (66 sloc) 2.701 kB
# coding: cp1251
from webob.request import Request, Transcoder
from webob.response import Response
from webob.compat import text_, native_
from nose.tools import eq_
# def tapp(env, sr):
# req = Request(env)
# r = Response(str(req))
# #r = Response(str(dict(req.POST)))
# return r(env, sr)
t1 = b'--BOUNDARY\r\nContent-Disposition: form-data; name="a"\r\n\r\n\xea\xf3...\r\n--BOUNDARY--'
t2 = b'--BOUNDARY\r\nContent-Disposition: form-data; name="a"; filename="file"\r\n\r\n\xea\xf3...\r\n--BOUNDARY--'
t3 = b'--BOUNDARY\r\nContent-Disposition: form-data; name="a"; filename="\xea\xf3..."\r\n\r\nfoo\r\n--BOUNDARY--'
def test_transcode():
def tapp(env, sr):
req = Request(env)
#import pprint; pprint.pprint(req.environ)
#print(req.body)
req = req.decode()
#import pprint; pprint.pprint(req.environ)
#print(req.body)
v = req.POST[req.query_string]
if hasattr(v, 'filename'):
r = Response(text_('%s\n%r' % (v.filename, v.value)))
else:
r = Response(v)
return r(env, sr)
text = b'\xea\xf3...'.decode('cp1251')
def test(post):
req = Request.blank('/?a', POST=post)
req.environ['CONTENT_TYPE'] = 'multipart/form-data; charset=windows-1251; boundary=BOUNDARY'
return req.get_response(tapp)
r = test(t1)
eq_(r.text, text)
r = test(t2)
eq_(r.text, 'file\n%r' % text.encode('cp1251'))
r = test(t3)
eq_(r.text, "%s\n%r" % (text, b'foo'))
#req = Request.blank('/?a', POST={'a': ('file', text.encode('cp1251'))},
# req = Request({}, charset='utf8')
# req = Request({})
# print req.charset
# print req._charset_cache
# print req.environ.get('CONTENT_TYPE')
#print '\xd0\xba\xd1\x83...'.decode('utf8').encode('cp1251')
#print u'\u043a'.encode('cp1251')
def test_transcode_query():
req = Request.blank('/?%EF%F0%E8=%E2%E5%F2')
req2 = req.decode('cp1251')
eq_(req2.query_string, '%D0%BF%D1%80%D0%B8=%D0%B2%D0%B5%D1%82')
def test_transcode_non_multipart():
req = Request.blank('/?a', POST='%EF%F0%E8=%E2%E5%F2')
req._content_type_raw = 'application/x-www-form-urlencoded'
req2 = req.decode('cp1251')
eq_(native_(req2.body), '%D0%BF%D1%80%D0%B8=%D0%B2%D0%B5%D1%82')
def test_transcode_non_form():
req = Request.blank('/?a', POST='%EF%F0%E8=%E2%E5%F2')
req._content_type_raw = 'application/x-foo'
req2 = req.decode('cp1251')
eq_(native_(req2.body), '%EF%F0%E8=%E2%E5%F2')
def test_transcode_noop():
req = Request.blank('/')
assert req.decode() is req
def test_transcode_query():
t = Transcoder('ascii')
eq_(t.transcode_query('a'), 'a')
Jump to Line
Something went wrong with that request. Please try again.