Não é possível alterar as permissões do usuário durante o teste unitário no Django
Eu finalmente decidi fazer alguns testes para meus aplicativos, mas estou empenhado em testar se um usuário pode alterar outro usuário (depende do tipo do usuário - eu uso o django-rules para poder fazer verificações de permissão lógicas, mas isso não é importante
Aqui está o código que eu tenho até agora
<code>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)) </code>
Mesmo depois de adicionar a permissão, meu usuário ainda não tem permissões. Isso é porque eu não tenho permissão para criar nada durante os testes (isso é uma prática ruim?)? Ou o django armazena as permissões de alguma forma? Se eu adicionar a permissão no setUp ele funciona, mas eu queria alterá-lo durante o mesmo teste (teste com e sem a permissão).
Desde já, obrigado!