Beispiel #1
0
    def test_search_objects_limited_to_object_permission(self):
        ObjectPermissionFactory.create(object_type=OBJECT_TYPE,
                                       mode=PermissionModes.read_only,
                                       users=[self.user])
        record = ObjectRecordFactory.create(geometry=Point(
            4.905289, 52.369918),
                                            object__object_type=OBJECT_TYPE)
        ObjectRecordFactory.create(geometry=Point(4.905289, 52.369918))
        url = reverse("object-search")

        response = self.client.post(
            url,
            {
                "geometry": {
                    "within": {
                        "type": "Polygon",
                        "coordinates": [POLYGON_AMSTERDAM_CENTRUM],
                    }
                },
                "type": OBJECT_TYPE,
            },
            **GEO_WRITE_KWARGS,
        )

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()

        self.assertEqual(len(data), 1)
        self.assertEqual(
            data[0]["url"],
            f"http://testserver{reverse('object-detail', args=[record.object.uuid])}",
        )
Beispiel #2
0
    def test_destroy_with_read_only_perm(self):
        ObjectPermissionFactory.create(object_type=OBJECT_TYPE,
                                       mode=PermissionModes.read_only,
                                       users=[self.user])
        object = ObjectFactory.create(object_type=OBJECT_TYPE)
        url = reverse("object-detail", args=[object.uuid])

        response = self.client.delete(url, **GEO_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Beispiel #3
0
    def test_history_with_read_only_permissions(self):
        ObjectPermissionFactory.create(object_type=OBJECT_TYPE,
                                       mode=PermissionModes.read_only,
                                       users=[self.user])
        object = ObjectFactory.create(object_type=OBJECT_TYPE)
        url = reverse("object-history", args=[object.uuid])

        response = self.client.get(url)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
Beispiel #4
0
    def setUpTestData(cls):
        super().setUpTestData()

        ObjectPermissionFactory(
            object_type=OBJECT_TYPE, mode=PermissionModes.read_only, users=[cls.user]
        )
        ObjectPermissionFactory(
            object_type=OTHER_OBJECT_TYPE,
            mode=PermissionModes.read_only,
            users=[cls.user],
        )
Beispiel #5
0
    def test_create_object_invalid_objecttype_url(self, m):
        object_type_invalid = "https://example.com/objecttypes/v1/types/invalid"
        ObjectPermissionFactory(
            object_type=object_type_invalid,
            mode=PermissionModes.read_and_write,
            users=[self.user],
        )
        mock_service_oas_get(m, OBJECT_TYPES_API, "objecttypes")
        m.get(f"{object_type_invalid}/versions/1", status_code=404)

        url = reverse("object-list")
        data = {
            "type": object_type_invalid,
            "record": {
                "typeVersion": 1,
                "data": {
                    "plantDate": "2020-04-12"
                },
                "startAt": "2020-01-01",
            },
        }

        response = self.client.post(url, data, **GEO_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(Object.objects.count(), 0)
Beispiel #6
0
    def test_update_object_type_invalid(self, m):
        old_object_type = "https://example.com/objecttypes/v1/types/qwe109"
        ObjectPermissionFactory(
            object_type=old_object_type,
            mode=PermissionModes.read_and_write,
            users=[self.user],
        )
        mock_service_oas_get(m, OBJECT_TYPES_API, "objecttypes")
        m.get(OBJECT_TYPE, json=mock_objecttype(OBJECT_TYPE))

        initial_record = ObjectRecordFactory.create(
            object__object_type=old_object_type,
            data={
                "plantDate": "2020-04-12",
                "diameter": 30
            },
            version=1,
        )
        object = initial_record.object

        url = reverse("object-detail", args=[object.uuid])
        data = {
            "type": OBJECT_TYPE,
        }

        response = self.client.patch(url, data, **GEO_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

        data = response.json()
        self.assertEqual(
            data["type"],
            ["This field can't be changed"],
        )
Beispiel #7
0
    def setUpTestData(cls):
        super().setUpTestData()

        Service.objects.create(api_type=APITypes.orc,
                               api_root=OBJECT_TYPES_API)
        ObjectPermissionFactory(
            object_type=OBJECT_TYPE,
            mode=PermissionModes.read_and_write,
            users=[cls.user],
        )
Beispiel #8
0
    def test_list_objects_limited_to_object_permission(self):
        ObjectPermissionFactory.create(object_type=OBJECT_TYPE,
                                       mode=PermissionModes.read_only,
                                       users=[self.user])
        object = ObjectFactory.create(object_type=OBJECT_TYPE)
        ObjectRecordFactory.create(object=object)
        ObjectFactory.create()
        url = reverse_lazy("object-list")

        response = self.client.get(url)

        self.assertEqual(response.status_code, status.HTTP_200_OK)

        data = response.json()

        self.assertEqual(len(data), 1)
        self.assertEqual(
            data[0]["url"],
            f"http://testserver{reverse('object-detail', args=[object.uuid])}",
        )