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")
Esempio n. 10
0
    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
Esempio n. 14
0
    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")
Esempio n. 15
0
    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})