Mercurial > public > sg101
view wiki/tests.py @ 711:c09ed90c891b
Fix regression in messages that efb525863a75 broke.
Changeset efb525863a75 broke the feature that auto-populated the To: field in
a private message when you clicked on a user's PM button.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 17 Sep 2013 18:17:28 -0500 |
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)