Skip to content

Commit

Permalink
Merge pull request #92 from boatx/getcookie-dry
Browse files Browse the repository at this point in the history
Convert duplicated getCookie methods to helper function
  • Loading branch information
alanhamlett committed Aug 22, 2019
2 parents cbb446d + 368ae9b commit 683fc4a
Showing 1 changed file with 17 additions and 48 deletions.
65 changes: 17 additions & 48 deletions test_seasurf.py
Expand Up @@ -25,6 +25,15 @@
b = lambda s: s.encode('utf-8')


def get_cookie(response, cookie_name):
cookies = response.headers.getlist('Set-Cookie')
for cookie in cookies:
value = parse_cookie(cookie).get(cookie_name)
if value:
return value
return None


class BaseTestCase(unittest.TestCase):
# Methods for backwards compatibility with python 2.5 & 2.6
def assertIn(self, value, container, err=None):
Expand Down Expand Up @@ -271,22 +280,14 @@ def test_exempt_view(self):
with self.app.test_client() as c:
rv = c.post('/foo')
self.assertIn(b('bar'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
self.assertEqual(cookie, None)

def test_token_validation(self):
# should produce a logger warning
rv = self.app.test_client().post('/bar')
self.assertIn(b('403 Forbidden'), rv.data)

def getCookie(self, response, cookie_name):
cookies = response.headers.getlist('Set-Cookie')
for cookie in cookies:
value = parse_cookie(cookie).get(cookie_name)
if value:
return value
return None


class SeaSurfTestCaseIncludeViews(BaseTestCase):
def setUp(self):
Expand Down Expand Up @@ -365,26 +366,18 @@ def test_exempt_view(self):
with self.app.test_client() as c:
rv = c.post('/foo/quz')
self.assertIn(b('bar'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
self.assertEqual(cookie, None)

def test_token_validation(self):
with self.app.test_client() as c:
# should produce a logger warning
rv = c.post('/bar')
self.assertIn(b('403 Forbidden'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
token = self.csrf._get_token()
self.assertEqual(cookie, token)

def getCookie(self, response, cookie_name):
cookies = response.headers.getlist('Set-Cookie')
for cookie in cookies:
value = parse_cookie(cookie).get(cookie_name)
if value:
return value
return None


class SeaSurfTestCaseDisableCookie(unittest.TestCase):
def setUp(self):
Expand Down Expand Up @@ -427,31 +420,23 @@ def test_has_csrf_cookie(self):
with self.app.test_client() as c:
rv = c.get('/foo/quz')
self.assertIn(b('bar'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
token = self.csrf._get_token()
self.assertEqual(cookie, token)

def test_no_csrf_cookie(self):
with self.app.test_client() as c:
rv = c.get('/foo/baz')
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
self.assertEqual(cookie, None)

def test_no_csrf_cookie_even_after_manually_validated(self):
with self.app.test_client() as c:
rv = c.post('/manual')
self.assertIn(b('403 Forbidden'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
self.assertEqual(cookie, None)

def getCookie(self, response, cookie_name):
cookies = response.headers.getlist('Set-Cookie')
for cookie in cookies:
value = parse_cookie(cookie).get(cookie_name)
if value:
return value
return None


class SeaSurfTestCaseSkipValidation(unittest.TestCase):
def setUp(self):
Expand Down Expand Up @@ -497,7 +482,7 @@ def test_skips_validation(self):
with self.app.test_client() as c:
rv = c.post('/foo/quz')
self.assertIn(b('bar'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
token = self.csrf._get_token()
self.assertEqual(cookie, token)

Expand All @@ -519,14 +504,6 @@ def test_manual_validation(self):
rv = c.post('/manual')
self.assertIn(b('403 Forbidden'), rv.data)

def getCookie(self, response, cookie_name):
cookies = response.headers.getlist('Set-Cookie')
for cookie in cookies:
value = parse_cookie(cookie).get(cookie_name)
if value:
return value
return None


class SeaSurfTestManualValidation(unittest.TestCase):
def setUp(self):
Expand All @@ -553,18 +530,10 @@ def test_can_manually_validate_exempt_views(self):
with self.app.test_client() as c:
rv = c.post('/manual')
self.assertIn(b('403 Forbidden'), rv.data)
cookie = self.getCookie(rv, self.csrf._csrf_name)
cookie = get_cookie(rv, self.csrf._csrf_name)
token = self.csrf._get_token()
self.assertEqual(cookie, token)

def getCookie(self, response, cookie_name):
cookies = response.headers.getlist('Set-Cookie')
for cookie in cookies:
value = parse_cookie(cookie).get(cookie_name)
if value:
return value
return None


class SeaSurfTestCaseSave(BaseTestCase):
def setUp(self):
Expand Down

0 comments on commit 683fc4a

Please sign in to comment.