예제 #1
0
    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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)