# (c) 2005 Clark C. Evans # This module is part of the Python Paste Project and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php from six.moves import xrange import six from paste.auth import cookie from paste.wsgilib import raw_interactive, dump_environ from paste.response import header_value from paste.httpexceptions import * def build(application,setenv, *args, **kwargs): def setter(environ, start_response): save = environ['paste.auth.cookie'].append for (k,v) in setenv.items(): save(k) environ[k] = v return application(environ, start_response) return cookie.middleware(setter,*args,**kwargs) def test_noop(): app = build(dump_environ,{}) (status,headers,content,errors) = \ raw_interactive(app) assert not header_value(headers,'Set-Cookie') def test_basic(key='key', val='bingles'): app = build(dump_environ,{key:val}) (status,headers,content,errors) = \ raw_interactive(app) value = header_value(headers,'Set-Cookie') assert "Path=/;" in value assert "expires=" not in value cookie = value.split(";")[0] (status,headers,content,errors) = \ raw_interactive(app,{'HTTP_COOKIE': cookie}) expected = ("%s: %s" % (key,val.replace("\n","\n "))) if six.PY3: expected = expected.encode('utf8') assert expected in content def test_roundtrip(): roundtrip = str('').join(map(chr, xrange(256))) test_basic(roundtrip,roundtrip)