/entelib/baseapp/tests/test_utils.py
Python | 47 lines | 41 code | 3 blank | 3 comment | 1 complexity | 1b2c965ee744f7a960261e65d51bcb4d MD5 | raw file
Possible License(s): GPL-3.0
- # -*- coding: utf-8 -*-
- from django.http import HttpResponseRedirect, HttpResponseNotFound, HttpResponsePermanentRedirect
- import re
- def accessed(response):
- """
- Use self.assert_(accessed(response)) to check if page wasn't redirected to login,
- because lack of perms or sth.
- Returns:
- True - page rendered properly
- False - request redirected to login page
- """
- login_infix = '/entelib/login/'
- if isinstance(response, HttpResponseNotFound): # not found, so also not accessed
- return False
- if isinstance(response, HttpResponsePermanentRedirect):
- if 'Location' not in response:
- return False
- return login_infix not in response['Location']
- if isinstance(response, HttpResponseRedirect):
- return login_infix not in response['Location']
- if not hasattr(response, 'redirect_chain'):
- return True
- rc = response.redirect_chain
- if not rc:
- return True
- return login_infix not in rc[-1][0]
-
- def choice(collection):
- ''' Simplified pseudo-choice ensuring repeatable results. '''
- lst = list(collection)
- length = len(lst)
- seed = 117
- index = (seed % length) ** 3 % length
- return lst[index]
- def form_errors_happened(html):
- ''' Checks if html contains form errors. '''
- return re.compile('.*<form.*error.*</form>.*', re.S).match(html)
- def no_form_errors_happened(html):
- return not form_errors_happened(html)