fix CSRF test

pull/108/head
Martin Zimmermann 10 years ago
parent 3809f49f98
commit e2e69c4124

@ -7,11 +7,13 @@ import json
import unittest import unittest
from werkzeug.test import Client from werkzeug.test import Client, EnvironBuilder
from werkzeug.wrappers import Response from werkzeug.wrappers import Response, Request
from werkzeug.exceptions import Forbidden
from isso import Isso, config, dist from isso import Isso, config, dist
from isso.utils import http from isso.utils import http
from isso.views.api import xhr
class FakeIP(object): class FakeIP(object):
@ -160,20 +162,23 @@ class TestComments(unittest.TestCase):
def testCSRF(self): def testCSRF(self):
js = "application/json" csrf = xhr(lambda *x, **z: True)
form = "application/x-www-form-urlencoded"
self.post('/new?uri=%2F', data=json.dumps({"text": "..."})) def build(**kw):
environ = EnvironBuilder(**kw).get_environ()
return environ, Request(environ)
# no header is fine (default for XHR) # no header is fine (default for XHR)
self.assertEqual(self.post('/id/1/dislike', content_type="").status_code, 200) env, req = build()
self.assertTrue(csrf(None, env, req))
# x-www-form-urlencoded is definitely not RESTful
self.assertEqual(self.post('/id/1/dislike', content_type=form).status_code, 403) # for the record
self.assertEqual(self.post('/new?uri=%2F', data=json.dumps({"text": "..."}), env, req = build(content_type="application/json")
content_type=form).status_code, 403) self.assertTrue(csrf(None, env, req))
# just for the record
self.assertEqual(self.post('/id/1/dislike', content_type=js).status_code, 200) # # x-www-form-urlencoded is definitely not RESTful
env, req = build(content_type="application/x-www-form-urlencoded")
self.assertRaises(Forbidden, csrf, None, env, req)
def testCookieExpiration(self): def testCookieExpiration(self):

Loading…
Cancel
Save