Mercurial > public > sg101
view wiki/tests.py @ 771:9588b1d0f5b0
Add Planeta Reverb and Reverb Junkies logos to footer.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 01 Feb 2014 16:36:32 -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)