Mercurial > public > sg101
view wiki/tests.py @ 752:95f4e7f352fd
For Django 1.6: contrib auth password reset confirm view signature changed.
The uidb64 parameter was previously base 36 encoded and named uidb36.
Had to update urls.py. While I was in there I decided to make the
password reset email use the {% url %} tag to be more resilient if the
url changes.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Wed, 01 Jan 2014 19:52:07 -0600 |
parents | f4c043cf55ac |
children |
line wrap: on
line source
""" Tests for the wiki integration application. """ import hashlib import datetime from django.contrib.auth.models import User from django.test import TestCase from django.test.client import RequestFactory from django.http import HttpResponse from django.conf import settings from core.services import get_redis_connection from wiki.middleware import WikiMiddleware from wiki.constants import SESSION_SET_MEMBER class MiddleWareTestCase(TestCase): def setUp(self): self.factory = RequestFactory() self.user = User.objects.create_user('test_user', 'test@example.com', 'password') self.conn = get_redis_connection() self.mw = WikiMiddleware() def tearDown(self): self.conn.delete(settings.WIKI_REDIS_SET) def create_request(self): request = self.factory.get('/contact/') request.session = {} request.user = self.user return request def test_middleware(self): request = self.create_request() response = HttpResponse() request.wiki_set_cookie = True response = self.mw.process_response(request, response) cookie = response.cookies.get(settings.WIKI_COOKIE_NAME) cookie_val = '' self.assertIsNotNone(cookie) if cookie: self.assertEqual(cookie['domain'], settings.WIKI_COOKIE_DOMAIN) self.assertEqual(cookie['path'], '/') self.assertEqual(cookie['max-age'], settings.WIKI_COOKIE_AGE) cookie_val = cookie.value try: user, email, key = cookie_val.split('#') except ValueError: self.fail('invalid cookie value') else: self.assertEqual(user, self.user.username) self.assertEqual(email, self.user.email) self.assertEqual(len(key), 64) self.assertEqual(self.conn.zcard(settings.WIKI_REDIS_SET), 1) h = hashlib.sha256() h.update(cookie_val) member = h.hexdigest() score = self.conn.zscore(settings.WIKI_REDIS_SET, member) now = datetime.datetime.utcnow() session_start = datetime.datetime.fromtimestamp(score) self.assertLess(now - session_start, datetime.timedelta(seconds=2)) session_member = request.session.get(SESSION_SET_MEMBER) self.assertTrue(session_member and session_member == member) # test the destroy session logic request = self.create_request() request.wiki_delete_cookie = member response = self.mw.process_response(request, response) cookie = response.cookies.get(settings.WIKI_COOKIE_NAME) self.assertIsNotNone(cookie) if cookie: self.assertEqual(cookie.value, '') self.assertEqual(cookie['domain'], settings.WIKI_COOKIE_DOMAIN) self.assertEqual(cookie['path'], '/') self.assertEqual(cookie['max-age'], 0) self.assertEqual(cookie['expires'], 'Thu, 01-Jan-1970 00:00:00 GMT') self.assertEqual(self.conn.zcard(settings.WIKI_REDIS_SET), 0)