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])}", )
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)
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)
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], )
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)
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"], )
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], )
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])}", )