def test_create_fail_not_unique(self): mock_service_oas_get(self.adapter, APITypes.zrc, "https://externe.catalogus.nl/api/v1/") self.adapter.get( self.besluit, json=get_besluit_response(self.besluit, self.besluittype, self.zaak), ) self.adapter.get(self.zaak, json=get_zaak_response(self.zaak, self.zaaktype)) self.adapter.get(self.zaaktype, json=get_zaak_response(self.catalogus, self.zaaktype)) # The test eio = EnkelvoudigInformatieObjectFactory.create() eio_url = f"http://testserver{reverse(eio)}" ObjectInformatieObject.objects.create(informatieobject=eio_url, besluit=self.besluit, object_type="besluit") response = self.client.post( self.list_url, { "object": self.besluit, "informatieobject": eio_url, "objectType": "besluit", }, ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) error = get_validation_errors(response, "nonFieldErrors") self.assertEqual(error["code"], "unique")
def test_destroy_external_besluit(self): mock_service_oas_get(self.adapter, APITypes.zrc, "https://externe.catalogus.nl/api/v1/") self.adapter.get( self.besluit, json=get_besluit_response(self.besluit, self.besluittype, self.zaak), ) self.adapter.get(self.zaak, json=get_zaak_response(self.zaak, self.zaaktype)) self.adapter.get(self.zaaktype, json=get_zaak_response(self.catalogus, self.zaaktype)) eio = EnkelvoudigInformatieObjectFactory.create() oio = ObjectInformatieObject.objects.create( informatieobject=f"http://testserver{reverse(eio)}", besluit=self.besluit, object_type="besluit", ) url = reverse(oio) self.adapter.register_uri( "GET", self.besluit, json=get_besluit_response(self.besluit, self.besluittype), ) response = self.client.delete(url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(ObjectInformatieObject.objects.count(), 0)
def test_read_external_besluit(self): mock_service_oas_get(self.adapter, APITypes.zrc, "https://externe.catalogus.nl/api/v1/") self.adapter.get( self.besluit, json=get_besluit_response(self.besluit, self.besluittype, self.zaak), ) self.adapter.get(self.zaak, json=get_zaak_response(self.zaak, self.zaaktype)) self.adapter.get(self.zaaktype, json=get_zaak_response(self.catalogus, self.zaaktype)) # The test eio = EnkelvoudigInformatieObjectFactory.create() oio = ObjectInformatieObject.objects.create( informatieobject=f"http://testserver{reverse(eio)}", besluit=self.besluit, object_type="besluit", ) url = reverse(oio) response = self.client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) data = response.json() self.assertEqual(data["object"], self.besluit) self.assertEqual(data["informatieobject"], f"http://testserver{reverse(eio)}")
def test_update_external_zaak_fail_delete_zaakbesluit(self): zaak_old = f"{self.base}zaken/{uuid.uuid4()}" besluit = self._create_besluit(zaak_old) zaaktype = besluit.besluittype.zaaktypen.get() zaaktype_url = f"http://testserver{reverse(zaaktype)}" old_zaakbesluit_url = besluit._zaakbesluit_url # update zaak in the besluit zaak_new = f"{self.base}zaken/{uuid.uuid4()}" zaakbesluit_new_data = get_zaakbesluit_response(zaak_new) besluit_url = f"http://testserver{reverse(besluit)}" with requests_mock.Mocker(real_http=True) as m: mock_service_oas_get(m, APITypes.zrc, self.base) m.get(zaak_old, json=get_zaak_response(zaak_old, zaaktype_url)) m.get(zaak_new, json=get_zaak_response(zaak_new, zaaktype_url)) m.delete(old_zaakbesluit_url, status_code=404, text="not found") m.post(f"{zaak_new}/besluiten", json=zaakbesluit_new_data, status_code=201) response = self.client.patch(besluit_url, {"zaak": zaak_new}) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) error = get_validation_errors(response, "zaak") self.assertEqual(error["code"], "pending-relations")
def test_create_external_besluit(self): mock_service_oas_get(self.adapter, APITypes.zrc, "https://externe.catalogus.nl/api/v1/") self.adapter.get( self.besluit, json=get_besluit_response(self.besluit, self.besluittype, self.zaak), ) self.adapter.get(self.zaak, json=get_zaak_response(self.zaak, self.zaaktype)) self.adapter.get(self.zaaktype, json=get_zaak_response(self.catalogus, self.zaaktype)) # The test eio = EnkelvoudigInformatieObjectFactory.create() eio_path = reverse(eio) eio_url = f"http://testserver{eio_path}" response = self.client.post( self.list_url, { "object": self.besluit, "informatieobject": eio_url, "objectType": "besluit", }, ) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) oio = ObjectInformatieObject.objects.get() self.assertEqual(oio.get_informatieobject_url(), eio_url) self.assertEqual(oio.object, self.besluit)
def test_zaak_external(self): zaak_before = "https://external.documenten.nl/api/v1/zaken/19b702ce-1387-42a3-87d9-b070e8c3f43d" zaak_after = "https://external.documenten.nl/api/v1/zaken/7ef7d016-b766-4456-a90c-8908eeb19b49" zaaktype = "https://external.documenten.nl/api/v1/zaaktype/11b1cfc2-7f7a-4561-aa62-715819ed468c" with requests_mock.Mocker() as m: m.get(zaak_before, json=get_zaak_response(zaak_before, zaaktype)) m.get(zaak_after, json=get_zaak_response(zaak_after, zaaktype)) besluit = BesluitFactory.create(zaak=zaak_before) besluit.zaak = zaak_after besluit.save() self.assertEqual(besluit.previous_zaak, zaak_before)
def test_list_filter_by_external_besluit(self): eio = EnkelvoudigInformatieObjectFactory.create() mock_service_oas_get(self.adapter, APITypes.zrc, "https://externe.catalogus.nl/api/v1/") # Needed for the CMIS adapter zaak1 = "https://externe.catalogus.nl/api/v1/zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" zaak2 = "https://externe.catalogus.nl/api/v1/zaken/b923543f-97aa-4a55-8c20-889b5906cf75" zaaktype1 = "https://externe.catalogus.nl/api/v1/zaaktypen/b71f72ef-198d-44d8-af64-ae1932df830a" zaaktype2 = "https://externe.catalogus.nl/api/v1/zaaktypen/5c4c492b-3548-4258-b17f-0e2e31dcfe25" catalogus1 = "https://externe.catalogus.nl/api/v1/catalogussen/5c4c492b-3548-4258-b17f-0e2e31dcfe25" catalogus2 = "https://externe.catalogus.nl/api/v1/catalogussen/a8e03e86-152d-4e8c-83fc-047645cfc585" besluit1 = "https://externe.catalogus.nl/api/v1/besluiten/1c8e36be-338c-4c07-ac5e-1adf55bec04a" besluit2 = "https://externe.catalogus.nl/api/v1/besluiten/b923543f-97aa-4a55-8c20-889b5906cf75" besluittype1 = "https://externe.catalogus.nl/api/v1/besluittypen/b71f72ef-198d-44d8-af64-ae1932df830a" besluittype2 = "https://externe.catalogus.nl/api/v1/besluittypen/3665b9be-6ac5-4075-8736-d79598e5325c" self.adapter.get(zaak1, json=get_zaak_response(zaak1, zaaktype1)) self.adapter.get(zaaktype1, json=get_zaak_response(catalogus1, zaaktype1)) self.adapter.get(zaak2, json=get_zaak_response(zaak2, zaaktype2)) self.adapter.get(zaaktype2, json=get_zaak_response(catalogus2, zaaktype2)) self.adapter.get(besluit1, json=get_besluit_response(besluit1, besluittype1, zaak1)) self.adapter.get(besluit2, json=get_besluit_response(besluit2, besluittype2, zaak2)) ObjectInformatieObject.objects.create( informatieobject=f"http://testserver{reverse(eio)}", besluit=besluit1, object_type="besluit", ) ObjectInformatieObject.objects.create( informatieobject=f"http://testserver{reverse(eio)}", besluit=besluit2, object_type="besluit", ) url = reverse(ObjectInformatieObject) response = self.client.get(url, {"object": besluit2}) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.data), 1) self.assertEqual(response.data[0]["object"], besluit2)
def test_create_external_zaak(self): zaak = "https://externe.catalogus.nl/api/v1/zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" zaaktype = "https://externe.catalogus.nl/api/v1/zaaktypen/b71f72ef-198d-44d8-af64-ae1932df830a" eio = EnkelvoudigInformatieObjectFactory.create() eio_url = reverse(eio) with requests_mock.Mocker(real_http=True) as m: m.get(zaak, json=get_zaak_response(zaak, zaaktype)) response = self.client.post( self.list_url, { "object": zaak, "informatieobject": f"http://testserver{eio_url}", "objectType": "zaak", }, ) self.assertEqual( response.status_code, status.HTTP_201_CREATED, response.data ) oio = ObjectInformatieObject.objects.get() self.assertEqual(oio.informatieobject, eio.canonical) self.assertEqual(oio.object, zaak)
def test_create_with_external_zaak_fail_create_zaakbesluit(self): besluittype = BesluitTypeFactory.create(concept=False) zaaktype = ZaakTypeFactory.create(concept=False, catalogus=besluittype.catalogus) zaaktype.besluittypen.add(besluittype) zaaktype_url = f"http://testserver{reverse(zaaktype)}" zaak = f"{self.base}zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" url = get_operation_url("besluit_create") with requests_mock.Mocker(real_http=True) as m: mock_service_oas_get(m, APITypes.zrc, self.base) m.get(zaak, json=get_zaak_response(zaak, zaaktype_url)) m.post(f"{zaak}/besluiten", status_code=404, text="Not Found") response = self.client.post( url, { "verantwoordelijke_organisatie": "517439943", "identificatie": "123123", "besluittype": f"http://testserver{reverse(besluittype)}", "datum": "2018-09-06", "toelichting": "Vergunning verleend.", "ingangsdatum": "2018-10-01", "vervaldatum": "2018-11-01", "vervalreden": VervalRedenen.tijdelijk, "zaak": zaak, }, ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) error = get_validation_errors(response, "zaak") self.assertEqual(error["code"], "pending-relations")
def test_delete_with_external_zaak(self): zaak = f"{self.base}zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" besluit = self._create_besluit(zaak) besluit_url = f"http://testserver{reverse(besluit)}" zaakbesluit_url = besluit._zaakbesluit_url zaaktype = besluit.besluittype.zaaktypen.get() zaaktype_url = f"http://testserver{reverse(zaaktype)}" with requests_mock.Mocker(real_http=True) as m: mock_service_oas_get(m, APITypes.zrc, self.base) m.get(zaak, json=get_zaak_response(zaak, zaaktype_url)) m.delete(zaakbesluit_url, status_code=204) response = self.client.delete(besluit_url) self.assertEqual( response.status_code, status.HTTP_204_NO_CONTENT, response.data ) self.assertEqual(Besluit.objects.count(), 0) history_delete = [ req for req in m.request_history if req.method == "DELETE" and req.url == zaakbesluit_url ] self.assertEqual(len(history_delete), 1)
def test_update_external_zaak(self): zaak_old = f"{self.base}zaken/{uuid.uuid4()}" besluit = self._create_besluit(zaak_old) zaaktype = besluit.besluittype.zaaktypen.get() zaaktype_url = f"http://testserver{reverse(zaaktype)}" old_zaakbesluit_url = besluit._zaakbesluit_url # update zaak in the besluit zaak_new = f"{self.base}zaken/{uuid.uuid4()}" zaakbesluit_new_data = get_zaakbesluit_response(zaak_new) besluit_url = f"http://testserver{reverse(besluit)}" with requests_mock.Mocker(real_http=True) as m: mock_service_oas_get(m, APITypes.zrc, self.base) m.get(zaak_old, json=get_zaak_response(zaak_old, zaaktype_url)) m.get(zaak_new, json=get_zaak_response(zaak_new, zaaktype_url)) m.delete(old_zaakbesluit_url, status_code=204) m.post(f"{zaak_new}/besluiten", json=zaakbesluit_new_data, status_code=201) response = self.client.patch(besluit_url, {"zaak": zaak_new}) self.assertEqual(response.status_code, status.HTTP_200_OK, response.data) besluit.refresh_from_db() self.assertEqual(besluit._previous_zaak_url, zaak_old) self.assertEqual(besluit._zaak_url, zaak_new) self.assertEqual(besluit._zaakbesluit_url, zaakbesluit_new_data["url"]) history_post = [ req for req in m.request_history if req.method == "POST" and req.url == f"{zaak_new}/besluiten" ] self.assertEqual(len(history_post), 1) self.assertEqual(history_post[0].json(), {"besluit": besluit_url}) history_delete = [ req for req in m.request_history if req.method == "DELETE" and req.url == old_zaakbesluit_url ] self.assertEqual(len(history_delete), 1)
def test_destroy_external_zaak(self): zaak = "https://externe.catalogus.nl/api/v1/zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" zaaktype = "https://externe.catalogus.nl/api/v1/zaaktypen/b71f72ef-198d-44d8-af64-ae1932df830a" eio = EnkelvoudigInformatieObjectFactory.create() oio = ObjectInformatieObject.objects.create( informatieobject=eio.canonical, zaak=zaak, object_type="zaak") url = reverse(oio) with requests_mock.Mocker(real_http=True) as m: m.get(zaak, json=get_zaak_response(zaak, zaaktype)) response = self.client.delete(url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(ObjectInformatieObject.objects.count(), 0)
def _create_besluit(self, zaak: str) -> Besluit: besluittype = BesluitTypeFactory.create(concept=False, zaaktypen=[]) zaaktype = besluittype.zaaktypen.get() zaaktype_url = f"http://testserver{reverse(zaaktype)}" zaakbesluit_data = get_zaakbesluit_response(zaak) # create besluit with requests_mock.Mocker(real_http=True) as m: m.get(zaak, json=get_zaak_response(zaak, zaaktype_url)) m.post(f"{zaak}/besluiten", json=zaakbesluit_data) besluit = BesluitFactory.create( zaak=zaak, besluittype=besluittype, _zaakbesluit_url=zaakbesluit_data["url"], ) return besluit
def test_delete_with_external_zaak_fail_delete_zaakbesluit(self): zaak = "https://externe.catalogus.nl/api/v1/zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" besluit = self._create_besluit(zaak) besluit_url = f"http://testserver{reverse(besluit)}" zaakbesluit_url = besluit._zaakbesluit_url zaaktype = besluit.besluittype.zaaktypen.get() zaaktype_url = f"http://testserver{reverse(zaaktype)}" with requests_mock.Mocker(real_http=True) as m: m.get(zaak, json=get_zaak_response(zaak, zaaktype_url)) m.delete(zaakbesluit_url, status_code=404, text="Not found") response = self.client.delete(besluit_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST, response.data) error = get_validation_errors(response, "zaak") self.assertEqual(error["code"], "pending-relations")
def test_create_with_external_zaak(self): zaak = f"{self.base}zaken/1c8e36be-338c-4c07-ac5e-1adf55bec04a" besluittype = BesluitTypeFactory.create(concept=False) zaaktype = ZaakTypeFactory.create( concept=False, catalogus=besluittype.catalogus ) zaaktype.besluittypen.add(besluittype) zaaktype_url = f"http://testserver{reverse(zaaktype)}" zaakbesluit_data = get_zaakbesluit_response(zaak) url = get_operation_url("besluit_create") with requests_mock.Mocker(real_http=True) as m: mock_service_oas_get(m, APITypes.zrc, self.base) m.get(zaak, json=get_zaak_response(zaak, zaaktype_url)) m.post(f"{zaak}/besluiten", json=zaakbesluit_data, status_code=201) response = self.client.post( url, { "verantwoordelijke_organisatie": "517439943", "identificatie": "123123", "besluittype": f"http://testserver{reverse(besluittype)}", "datum": "2018-09-06", "toelichting": "Vergunning verleend.", "ingangsdatum": "2018-10-01", "vervaldatum": "2018-11-01", "vervalreden": VervalRedenen.tijdelijk, "zaak": zaak, }, ) self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data) besluit = Besluit.objects.get() besluit_url = f"http://testserver{reverse(besluit)}" self.assertEqual(besluit._zaakbesluit_url, zaakbesluit_data["url"]) history_post = [ req for req in m.request_history if req.method == "POST" and req.url == f"{zaak}/besluiten" ] self.assertEqual(len(history_post), 1) self.assertEqual(history_post[0].json(), {"besluit": besluit_url})