Reputation: 401
I am trying to write tests for a particular app in django using the python's unittest library.
def test_permissions_for_admin(self):
admin = Group.objects.get(name='Administrator')
permisisons = admin.permissions.all()
admin_permissions = ['add_ipaddress', 'change_ipaddress', 'delete_ipaddress', 'view_ipaddress', 'add_subnet', 'change_subnet', 'delete_subnet', 'view_subnet']
for p in permissions:
print(p.codename)
for p in permissions:
self.assertIn(p.codename, admin_permissions)
The Above code prints this, OUTPUT:
change_emailaddress
delete_emailaddress
view_emailaddress
add_ipaddress
change_ipaddress
delete_ipaddress
view_ipaddress
add_subnet
change_subnet
delete_subnet
view_subnet
view_group
change_organization
change_organizationowner
add_organizationuser
change_organizationuser
delete_organizationuser
view_organizationuser
add_user
change_user
delete_user
view_user
Whereas What I am trying to check is that, all the permissions present from the variable admin_permissions
are present in this output or not.
I have tried using the assertIn
, assertEqual
, & assertTrue
methods but it doesn't seem to work here. Is there anything else I could look for or any method present which I am not aware of to solve such kind of issues.
Upvotes: 1
Views: 38
Reputation: 476659
If you want to check if the admin
has all the permissions, you need to do this the other way around, so:
perms = list(admin.permissions.values_list('codename', flat=True))
for p in admin_permissions:
self.assertIn(p, perms)
we here thus check that for each item in admin_permissions
, it is a member of perms
: the codename
s of the .permissions
of admin
.
Upvotes: 1