Created
November 9, 2011 18:54
-
-
Save plaes/1352507 to your computer and use it in GitHub Desktop.
Flask session/cookie disappearance after redirect issue - werkzeug testcase
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/werkzeug/testsuite/test.py b/werkzeug/testsuite/test.py | |
index 795de90..5ee8864 100644 | |
--- a/werkzeug/testsuite/test.py | |
+++ b/werkzeug/testsuite/test.py | |
@@ -26,7 +26,7 @@ from werkzeug.datastructures import MultiDict | |
def cookie_app(environ, start_response): | |
- """A WSGI application which sets a cookie, and returns as a ersponse any | |
+ """A WSGI application which sets a cookie, and returns as a response any | |
cookie which exists. | |
""" | |
response = Response(environ.get('HTTP_COOKIE', 'No Cookie'), | |
@@ -34,6 +34,18 @@ def cookie_app(environ, start_response): | |
response.set_cookie('test', 'test') | |
return response(environ, start_response) | |
+def cookie_redirect_app(environ, start_response): | |
+ """A WSGI application which issues redirect on POST requests and prints | |
+ out cookie information with GET requests. | |
+ """ | |
+ req = Request(environ) | |
+ if req.method == 'POST': | |
+ resp = redirect('http://localhost/') | |
+ return resp(environ, start_response) | |
+ response = Response(environ.get('HTTP_COOKIE', 'No Cookie!'), | |
+ mimetype='text/plain') | |
+ return response(environ, start_response) | |
+ | |
def redirect_loop_app(environ, start_response): | |
response = redirect('http://localhost/some/redirect/') | |
@@ -126,6 +138,23 @@ class TestTestCase(WerkzeugTestCase): | |
appiter, code, headers = c.open('/path2') | |
assert ''.join(appiter) == 'test=test' | |
+ def test_cookie_redirect(self): | |
+ c = Client(cookie_redirect_app) | |
+ # Initially check that no cookie is set | |
+ appiter, code, headers = c.open('/') | |
+ assert ''.join(appiter) == 'No Cookie!' | |
+ # Set the cookie and do the GET request | |
+ c.set_cookie('localhost', 'foo', 'bar') | |
+ appiter, code, headers = c.open('/') | |
+ assert list(appiter) == ['foo=bar'] | |
+ # Now do the redirect and check whether cookie still exists | |
+ appiter, code, headers = c.post('/', follow_redirects=True, data='') | |
+ assert list(appiter) == ['foo=bar'] | |
+ # One more time, just to be sure :S | |
+ c.set_cookie('localhost', 'foo', 'nobar') | |
+ appiter, code, headers = c.post('/', follow_redirects=True, data='') | |
+ assert list(appiter) == ['foo=nobar'] | |
+ | |
def test_environ_builder_basics(self): | |
b = EnvironBuilder() | |
assert b.content_type is None |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment