def test_device_permissions_test(self): dt = DeviceType(name="type1") dt.save() device = Device(device_type=dt, hostname="device1") device.save() group = self.factory.make_group() user1 = self.factory.make_user() user1.groups.add(group) group2 = self.factory.make_group() user2 = self.factory.make_user() user2.groups.add(group2) GroupDevicePermission.objects.assign_perm("submit_to_device", group, device) self.assertEqual(device.can_submit(user2), False) self.assertEqual(device.can_submit(user1), True) GroupDevicePermission.objects.remove_perm("submit_to_device", group, device) delattr(user1, "_cached_has_perm") delattr(user2, "_cached_has_perm") self.assertEqual(device.can_view(user2), True) self.assertEqual(device.can_view(user1), True) GroupDeviceTypePermission.objects.assign_perm("view_devicetype", group, dt) delattr(user1, "_cached_has_perm") delattr(user2, "_cached_has_perm") self.assertEqual(device.can_view(user2), False) self.assertEqual(device.can_view(user1), True) GroupDeviceTypePermission.objects.remove_perm("view_devicetype", group, dt) GroupDevicePermission.objects.assign_perm("view_device", group, device) delattr(user1, "_cached_has_perm") delattr(user2, "_cached_has_perm") self.assertEqual(device.can_view(user2), False) self.assertEqual(device.can_view(user1), True) GroupDevicePermission.objects.assign_perm("view_device", group2, device) delattr(user1, "_cached_has_perm") delattr(user2, "_cached_has_perm") self.assertEqual(device.can_view(user2), True) self.assertEqual(device.can_view(user1), True) device.health = Device.HEALTH_RETIRED device.save() self.assertEqual(device.can_submit(user2), False) self.assertEqual(device.can_submit(user1), False) # Test that global permission works as intended. user3 = self.factory.make_user() user3.user_permissions.add( Permission.objects.get(codename="change_device")) self.assertEqual(device.can_change(user3), True)
def test_access_while_hidden(self): hidden = DeviceType(name="hidden", owners_only=True, health_check_job='') device = Device(device_type=hidden, hostname='hidden1', status=Device.OFFLINE) user = self.factory.make_user() device.user = user device.save() self.assertEqual(device.is_public, False) self.assertEqual(device.user, user) user2 = self.factory.make_user() self.assertEqual(device.can_submit(user2), False) self.assertEqual(device.can_submit(user), True)
def test_access_while_private(self): hidden = DeviceType(name="hidden", owners_only=True) device = Device(device_type=hidden, hostname='hidden1', is_public=False) user = self.factory.make_user() device.user = user device.save() self.assertEqual(device.is_public, False) self.assertEqual(device.user, user) user2 = self.factory.make_user() self.assertEqual(device.can_submit(user2), False) self.assertEqual(device.can_submit(user), True)
def test_access_retired_hidden(self): hidden = DeviceType(name="hidden", owners_only=True, health_check_job='') device = Device(device_type=hidden, hostname='hidden2', status=Device.RETIRED) user = self.factory.make_user() device.user = user device.save() self.assertEqual(device.is_public, False) self.assertEqual(device.user, user) user2 = self.factory.make_user() self.assertEqual(device.can_submit(user2), False) # user cannot submit as the device is retired self.assertEqual(device.can_submit(user), False)
def test_access_while_private(self): hidden = DeviceType(name="hidden", owners_only=True) device = Device(device_type=hidden, hostname="hidden1", is_public=False) user = self.factory.make_user() device.user = user device.save() self.assertEqual(device.is_public, False) self.assertEqual(device.user, user) user2 = self.factory.make_user() self.assertEqual(device.can_submit(user2), False) self.assertEqual(device.can_submit(user), True)