• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# (c) 2005 Ben Bangert
2# This module is part of the Python Paste Project and is released under
3# the MIT License: http://www.opensource.org/licenses/mit-license.php
4from paste.fixture import *
5from paste.request import *
6from paste.wsgiwrappers import WSGIRequest
7import six
8
9def simpleapp(environ, start_response):
10    status = '200 OK'
11    response_headers = [('Content-type','text/plain')]
12    start_response(status, response_headers)
13    request = WSGIRequest(environ)
14    body = [
15        'Hello world!\n', 'The get is %s' % str(request.GET),
16        ' and Val is %s\n' % request.GET.get('name'),
17        'The languages are: %s\n' % request.languages,
18        'The accepttypes is: %s\n' % request.match_accept(['text/html', 'application/xml'])]
19    if six.PY3:
20        body = [line.encode('utf8')  for line in body]
21    return body
22
23def test_gets():
24    app = TestApp(simpleapp)
25    res = app.get('/')
26    assert 'Hello' in res
27    assert "get is MultiDict([])" in res
28
29    res = app.get('/?name=george')
30    res.mustcontain("get is MultiDict([('name', 'george')])")
31    res.mustcontain("Val is george")
32
33def test_language_parsing():
34    app = TestApp(simpleapp)
35    res = app.get('/')
36    assert "The languages are: ['en-us']" in res
37
38    res = app.get('/', headers={'Accept-Language':'da, en-gb;q=0.8, en;q=0.7'})
39    assert "languages are: ['da', 'en-gb', 'en', 'en-us']" in res
40
41    res = app.get('/', headers={'Accept-Language':'en-gb;q=0.8, da, en;q=0.7'})
42    assert "languages are: ['da', 'en-gb', 'en', 'en-us']" in res
43
44def test_mime_parsing():
45    app = TestApp(simpleapp)
46    res = app.get('/', headers={'Accept':'text/html'})
47    assert "accepttypes is: ['text/html']" in res
48
49    res = app.get('/', headers={'Accept':'application/xml'})
50    assert "accepttypes is: ['application/xml']" in res
51
52    res = app.get('/', headers={'Accept':'application/xml,*/*'})
53    assert "accepttypes is: ['text/html', 'application/xml']" in res
54
55def test_bad_cookie():
56    env = {}
57    env['HTTP_COOKIE'] = '070-it-:><?0'
58    assert get_cookie_dict(env) == {}
59    env['HTTP_COOKIE'] = 'foo=bar'
60    assert get_cookie_dict(env) == {'foo': 'bar'}
61    env['HTTP_COOKIE'] = '...'
62    assert get_cookie_dict(env) == {}
63    env['HTTP_COOKIE'] = '=foo'
64    assert get_cookie_dict(env) == {}
65    env['HTTP_COOKIE'] = '?='
66    assert get_cookie_dict(env) == {}
67