From e9db0de13736f2c8d7e1b26629088c8ee286607f Mon Sep 17 00:00:00 2001 From: arthur Date: Sun, 22 May 2016 14:23:51 +0200 Subject: [PATCH] New way to invalidate the users permission cache in test by loading user from database --- example/blog/tests/test_permissions.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/example/blog/tests/test_permissions.py b/example/blog/tests/test_permissions.py index d92c1a2..8034e26 100644 --- a/example/blog/tests/test_permissions.py +++ b/example/blog/tests/test_permissions.py @@ -1,6 +1,7 @@ from blog.models import Post from django.contrib.auth.models import User, Permission from django.core.urlresolvers import reverse +from django.shortcuts import get_object_or_404 from django.template import Template, Context from django.test import TestCase from django.test.client import RequestFactory @@ -47,8 +48,8 @@ class TemplatePermissionTest(TestCase): codename='add_post') self.user.user_permissions.add(post_add_permission) # invalidate the users permission cache - if hasattr(self.user, '_perm_cache'): - del self.user._perm_cache + self.user = get_object_or_404(User, pk=self.user.id) + request.user = self.user result = self.render('{{ permissions.has_add_permission }}', context) self.assertEqual(result, 'True') @@ -120,10 +121,11 @@ class TemplatePermissionTest(TestCase): content_type__app_label='blog', content_type__model='post', codename='add_post') + self.user.user_permissions.add(post_add_permission) # invalidate the users permission cache - if hasattr(self.user, '_perm_cache'): - del self.user._perm_cache + self.user = get_object_or_404(User, pk=self.user.id) + request.user = self.user result = self.render( '{% load admin2_tags %}' @@ -202,8 +204,8 @@ class TemplatePermissionTest(TestCase): self.user.user_permissions.add(user_change_permission) # invalidate the users permission cache - if hasattr(self.user, '_perm_cache'): - del self.user._perm_cache + self.user = get_object_or_404(User, pk=self.user.id) + request.user = self.user result = self.render( '{% load admin2_tags %}' @@ -263,8 +265,8 @@ class TemplatePermissionTest(TestCase): codename='add_post') self.user.user_permissions.add(post_add_permission) # invalidate the users permission cache - if hasattr(self.user, '_perm_cache'): - del self.user._perm_cache + self.user = get_object_or_404(User, pk=self.user.id) + request.user = self.user # object level permission are not supported by default. So this will # return ``False``.