Наконец-то я решил провести некоторые тесты для своих приложений, но я застрял на тестировании, может ли пользователь изменить другого пользователя (зависит от типа пользователя - я использую правила django, чтобы иметь возможность выполнять логические проверки разрешений, но это не главное)
Вот код, который у меня есть до сих пор
class RulesAndPermissionsTests(TestCase):
fixtures = ['auth_no_permissions.json', 'profiles.json', 'rules.json']
def setUp(self):
self.c = Client()
self.user = User.objects.get(username="estagiario")
self.non_staff = User.objects.get(username="fisica")
self.admin = User.objects.get(username="admin")
login = self.c.login(username='estagiario', password='estagiario')
def test_can_change_non_staff_users(self):
self.assertFalse(self.user.has_perm('logical_change_user', self.non_staff.profile)) # can't change non staff users without permission
# now add the permission and test it again
self.user.user_permissions.add(Permission.objects.get(codename='change_user'))
print self.user.get_all_permissions() # prints set([])
self.assertTrue(self.user.has_perm('logical_change_user', self.non_staff.profile))
Даже после добавления разрешения у моего пользователя все еще нет разрешений. Это потому, что мне не разрешено ничего создавать во время тестов (это плохая практика?)? Или django каким-то образом кэширует разрешения? Если я добавлю разрешение в setUp, оно сработает, но я хотел изменить его во время того же теста (тестирование с разрешением и без него).
Заранее спасибо!