Ejemplo n.º 1
0
    def test_add_autorisatie_zaaktypen_overlap(self):
        zt1 = ZaakTypeFactory.create()
        ZaakTypeFactory.create()

        data = {
            # management form
            "form-TOTAL_FORMS": 2,
            "form-INITIAL_FORMS": 0,
            "form-MIN_NUM_FORMS": 0,
            "form-MAX_NUM_FORMS": 1000,
            "form-0-component": ComponentTypes.zrc,
            "form-0-scopes": ["zaken.lezen"],
            "form-0-related_type_selection": RelatedTypeSelectionMethods.all_current,
            "form-0-vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.beperkt_openbaar,
            "form-1-component": ComponentTypes.zrc,
            "form-1-scopes": ["zaken.aanmaken", "zaken.lezen"],
            "form-1-related_type_selection": RelatedTypeSelectionMethods.manual_select,
            "form-1-zaaktypen": [zt1.id],
            "form-1-vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.beperkt_openbaar,
        }

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

        self.assertEqual(response.status_code, 200)
        self.assertEqual(Autorisatie.objects.count(), 0)
        self.assertEqual(
            response.context_data["formset"]._non_form_errors[0],
            "zaaktypen may not have overlapping scopes.",
        )
Ejemplo n.º 2
0
    def test_new_zt_all_current_and_future_send_notifications(self, m):
        mock_nrc_oas_get(m)
        m.post("https://notificaties-api.vng.cloud/api/v1/notificaties",
               status_code=201)
        data = {
            # management form
            "form-TOTAL_FORMS":
            1,
            "form-INITIAL_FORMS":
            0,
            "form-MIN_NUM_FORMS":
            0,
            "form-MAX_NUM_FORMS":
            1000,
            "form-0-component":
            ComponentTypes.zrc,
            "form-0-scopes": ["zaken.lezen"],
            "form-0-related_type_selection":
            RelatedTypeSelectionMethods.all_current_and_future,
            "form-0-vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.beperkt_openbaar,
        }

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

        self.assertEqual(response.status_code, 302)
        self.assertFalse(Autorisatie.objects.exists())
        self.assertFalse(m.called)

        # create a ZaakType - this should trigger a new autorisatie being installed
        ZaakTypeFactory.create()
        self.assertEqual(self.applicatie.autorisaties.count(), 1)
        self.assertTrue(m.called)
Ejemplo n.º 3
0
    def test_filter_ook_zaaktype(self):
        zaaktype1 = ZaakTypeFactory.create()
        zaaktype2 = ZaakTypeFactory.create()
        zaaktype1_url = reverse(zaaktype1)

        # both in district
        ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595),
                           zaaktype=zaaktype1)
        ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595),
                           zaaktype=zaaktype2)

        url = get_operation_url("zaak__zoek")

        response = self.client.post(
            url,
            {
                "zaakgeometrie": {
                    "within": {
                        "type": "Polygon",
                        "coordinates": [POLYGON_AMSTERDAM_CENTRUM],
                    }
                },
                "zaaktype": f"http://openzaak.nl{zaaktype1_url}",
            },
            **ZAAK_WRITE_KWARGS,
            HTTP_HOST="openzaak.nl",
        )

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

        response_data = response.json()["results"]
        self.assertEqual(len(response_data), 1)
Ejemplo n.º 4
0
    def test_add_autorisatie_all_current_and_future_zaaktypen(self):
        data = {
            # management form
            "form-TOTAL_FORMS":
            1,
            "form-INITIAL_FORMS":
            0,
            "form-MIN_NUM_FORMS":
            0,
            "form-MAX_NUM_FORMS":
            1000,
            "form-0-component":
            ComponentTypes.zrc,
            "form-0-scopes": ["zaken.lezen"],
            "form-0-related_type_selection":
            RelatedTypeSelectionMethods.all_current_and_future,
            "form-0-vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.beperkt_openbaar,
        }

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

        self.assertEqual(response.status_code, 302)
        self.assertFalse(Autorisatie.objects.exists())

        # create a ZaakType - this should trigger a new autorisatie being installed
        ZaakTypeFactory.create()
        self.assertEqual(self.applicatie.autorisaties.count(), 1)
Ejemplo n.º 5
0
    def test_noop_all_current_and_future_besluittypen(self):
        bt = BesluitTypeFactory.create()
        Autorisatie.objects.create(
            applicatie=self.applicatie,
            component=ComponentTypes.brc,
            scopes=["besluiten.lezen"],
            informatieobjecttype=f"http://testserver{bt.get_absolute_api_url()}",
            max_vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.beperkt_openbaar,
        )
        data = {
            # management form
            "form-TOTAL_FORMS": 1,
            "form-INITIAL_FORMS": 0,
            "form-MIN_NUM_FORMS": 0,
            "form-MAX_NUM_FORMS": 1000,
            "form-0-component": ComponentTypes.brc,
            "form-0-scopes": ["besluiten.lezen"],
            "form-0-related_type_selection": RelatedTypeSelectionMethods.all_current_and_future,
        }

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

        self.assertEqual(response.status_code, 302)
        self.assertEqual(self.applicatie.autorisaties.count(), 1)

        # create a InformatieObjectType - this should trigger a new autorisatie
        # being installed
        BesluitTypeFactory.create()
        self.assertEqual(self.applicatie.autorisaties.count(), 2)

        # creating other types should not trigger anything, nor error
        ZaakTypeFactory.create()
        InformatieObjectTypeFactory.create()
        self.assertEqual(self.applicatie.autorisaties.count(), 2)
Ejemplo n.º 6
0
    def test_add_autorisatie_all_current_zaaktypen(self):
        zt1 = ZaakTypeFactory.create(concept=False)
        zt2 = ZaakTypeFactory.create(concept=True)

        data = {
            # management form
            "form-TOTAL_FORMS":
            1,
            "form-INITIAL_FORMS":
            0,
            "form-MIN_NUM_FORMS":
            0,
            "form-MAX_NUM_FORMS":
            1000,
            "form-0-component":
            ComponentTypes.zrc,
            "form-0-scopes": ["zaken.lezen"],
            "form-0-related_type_selection":
            RelatedTypeSelectionMethods.all_current,
            "form-0-vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.beperkt_openbaar,
        }

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

        self.assertEqual(response.status_code, 302)
        self.assertEqual(Autorisatie.objects.count(), 2)
        self.assertEqual(self.applicatie.autorisaties.count(), 2)

        urls = [
            reverse("zaaktype-detail", kwargs={
                "version": 1,
                "uuid": zt1.uuid
            }),
            reverse("zaaktype-detail", kwargs={
                "version": 1,
                "uuid": zt2.uuid
            }),
        ]

        for autorisatie in Autorisatie.objects.all():
            with self.subTest(autorisatie=autorisatie):
                self.assertEqual(autorisatie.component, ComponentTypes.zrc)
                self.assertEqual(autorisatie.scopes, ["zaken.lezen"])
                self.assertEqual(
                    autorisatie.max_vertrouwelijkheidaanduiding,
                    VertrouwelijkheidsAanduiding.beperkt_openbaar,
                )
                self.assertIsInstance(autorisatie.zaaktype, str)
                parsed = urlparse(autorisatie.zaaktype)
                self.assertEqual(parsed.scheme, "http")
                self.assertEqual(parsed.netloc, "testserver")
                self.assertIn(parsed.path, urls)
Ejemplo n.º 7
0
    def test_create_external_relevante_zaak_fail_no_json_url(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = f"http://testserver.com{reverse(zaaktype)}"

        response = self.client.post(
            self.list_url,
            {
                "zaaktype": zaaktype_url,
                "bronorganisatie": "517439943",
                "verantwoordelijkeOrganisatie": "517439943",
                "registratiedatum": "2018-12-24",
                "startdatum": "2018-12-24",
                "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
                "relevanteAndereZaken": [
                    {
                        "url": " http://example.com",
                        "aardRelatie": AardZaakRelatie.vervolg,
                    }
                ],
            },
            **ZAAK_WRITE_KWARGS,
            HTTP_HOST="testserver.com",
        )

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

        error = get_validation_errors(response, "relevanteAndereZaken.0.url")
        self.assertEqual(error["code"], "invalid-resource")
Ejemplo n.º 8
0
    def test_create_external_relevante_andere_zaak(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = f"http://testserver.com{reverse(zaaktype)}"
        zaak_external = (
            "https://externe.zaken.nl/api/v1/zaken/a620b183-d898-4576-ae94-3f21d43cc576"
        )

        with requests_mock.Mocker(real_http=True) as m:
            m.register_uri(
                "GET",
                zaak_external,
                json=get_zaak_response(zaak_external, zaaktype_url),
            )

            response = self.client.post(
                self.list_url,
                {
                    "zaaktype": zaaktype_url,
                    "bronorganisatie": "517439943",
                    "verantwoordelijkeOrganisatie": "517439943",
                    "registratiedatum": "2018-12-24",
                    "startdatum": "2018-12-24",
                    "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
                    "relevanteAndereZaken": [
                        {"url": zaak_external, "aardRelatie": AardZaakRelatie.vervolg,}
                    ],
                },
                **ZAAK_WRITE_KWARGS,
                HTTP_HOST="testserver.com",
            )

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
Ejemplo n.º 9
0
    def test_create_local_relevante_andere_zaak(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = f"http://testserver.com{reverse(zaaktype)}"
        zaak = ZaakFactory.create(zaaktype=zaaktype)
        zaak_url = f"http://testserver.com{reverse(zaak)}"

        response = self.client.post(
            self.list_url,
            {
                "zaaktype": zaaktype_url,
                "bronorganisatie": "517439943",
                "verantwoordelijkeOrganisatie": "517439943",
                "registratiedatum": "2018-12-24",
                "startdatum": "2018-12-24",
                "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
                "relevanteAndereZaken": [
                    {"url": zaak_url, "aardRelatie": AardZaakRelatie.vervolg,}
                ],
            },
            **ZAAK_WRITE_KWARGS,
            HTTP_HOST="testserver.com",
        )

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        self.assertEqual(
            response.data["relevante_andere_zaken"],
            [{"url": zaak_url, "aardRelatie": AardZaakRelatie.vervolg}],
        )
Ejemplo n.º 10
0
    def setUpTestData(cls):
        super().setUpTestData()

        cls.zaaktype = ZaakTypeFactory.create()
        StatusTypeFactory.create(zaaktype=cls.zaaktype)
        statustype_end = StatusTypeFactory.create(zaaktype=cls.zaaktype)
        cls.statustype_end_url = reverse(statustype_end)
    def test_create_aanvraag(self):
        """
        Maak een zaak voor een aanvraag.
        """
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        zaak_create_url = get_operation_url("zaak_create")
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "identificatie": "HLM-straatartiest-42",
            "omschrijving": "Dagontheffing - Station Haarlem",
            "toelichting":
            "Het betreft een clown met grote trom, mondharmonica en cymbalen.",
            "startdatum": "2018-08-15",
        }

        # aanmaken zaak
        response = self.client.post(zaak_create_url, data, **ZAAK_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)
        data = response.json()
        self.assertIn("identificatie", data)
        self.assertEqual(data["registratiedatum"],
                         date.today().strftime("%Y-%m-%d"))
        self.assertEqual(data["startdatum"], "2018-08-15")
Ejemplo n.º 12
0
    def test_create_zaak_causes_archiving_defaults(self):
        """
        Create ZAAK and validate default archive attributes
        """
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        zaak_create_url = get_operation_url("zaak_create")
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "startdatum": "2018-07-25",
            "einddatum": "2018-08-25",
            "einddatumGepland": "2018-08-25",
            "toelichting": "",
            "omschrijving": "",
        }

        response = self.client.post(zaak_create_url, data, **ZAAK_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)
        data = response.json()

        self.assertIsNone(data["archiefnominatie"])
        self.assertEqual(data["archiefstatus"],
                         Archiefstatus.nog_te_archiveren)
        self.assertIsNone(data["archiefactiedatum"])
Ejemplo n.º 13
0
    def test_read_local_relevante_andere_zaak(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaak = ZaakFactory.create(zaaktype=zaaktype)
        zaak_url = f"http://testserver.com{reverse(zaak)}"

        relevante_zaak = ZaakFactory.create(zaaktype=zaaktype)
        relevante_zaak_url = f"http://testserver.com{reverse(relevante_zaak)}"

        RelevanteZaakRelatieFactory.create(
            url=relevante_zaak,
            zaak=zaak,
            aard_relatie=AardZaakRelatie.vervolg)

        response = self.client.get(zaak_url,
                                   **ZAAK_READ_KWARGS,
                                   HTTP_HOST="testserver.com")

        self.assertEqual(response.status_code, status.HTTP_200_OK,
                         response.data)
        self.assertEqual(
            response.data["relevante_andere_zaken"],
            [{
                "url": relevante_zaak_url,
                "aardRelatie": AardZaakRelatie.vervolg
            }],
        )
    def test_notification_config_inaccessible_create(self):
        conf = NotificationsConfig.get_solo()
        conf.api_root = "http://localhost:8001/api/v1/"
        conf.save()

        url = get_operation_url("zaak_create")
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "registratiedatum": "2012-01-13",
            "startdatum": "2012-01-13",
            "toelichting": "Een stel dronken toeristen speelt versterkte "
            "muziek af vanuit een gehuurde boot.",
            "zaakgeometrie": {
                "type": "Point",
                "coordinates": [4.910649523925713, 52.37240093589432],
            },
        }

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

        self.assertEqual(response.status_code,
                         status.HTTP_500_INTERNAL_SERVER_ERROR)
        self.assertFalse(Zaak.objects.exists())
        self.assertFalse(StatusLog.objects.exists())
Ejemplo n.º 15
0
    def test_autorisaties_are_deleted(self):
        applicatie = ApplicatieFactory.create()
        zaaktype = ZaakTypeFactory.create()
        AutorisatieFactory.create(
            applicatie=applicatie,
            component=ComponentTypes.zrc,
            zaaktype=build_absolute_url(zaaktype.get_absolute_api_url()),
            max_vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            openbaar,
        )
        # Different max_vertrouwelijkheidaanduiding compared to the Autorisatie
        autorisatie_spec = AutorisatieSpecFactory.create(
            applicatie=applicatie,
            component=ComponentTypes.zrc,
            max_vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            geheim,
        )

        self.assertEqual(Autorisatie.objects.all().count(), 1)
        autorisatie = Autorisatie.objects.get()
        self.assertEqual(
            autorisatie.max_vertrouwelijkheidaanduiding,
            VertrouwelijkheidsAanduiding.openbaar,
        )

        autorisatie_spec.sync()

        # Check that the autorisatie that doesn't match the AutorisatieSpec is deleted and replaced with a correct one
        self.assertEqual(Autorisatie.objects.all().count(), 1)
        autorisatie = Autorisatie.objects.get()
        self.assertEqual(
            autorisatie.max_vertrouwelijkheidaanduiding,
            VertrouwelijkheidsAanduiding.geheim,
        )
Ejemplo n.º 16
0
    def test_no_changes_no_notifications(self, m):
        zt = ZaakTypeFactory.create()
        Autorisatie.objects.create(
            applicatie=self.applicatie,
            component=ComponentTypes.zrc,
            scopes=["zaken.lezen"],
            zaaktype=f"http://testserver{zt.get_absolute_api_url()}",
            max_vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            beperkt_openbaar,
        )
        data = {
            # management form
            "form-TOTAL_FORMS":
            1,
            "form-INITIAL_FORMS":
            0,
            "form-MIN_NUM_FORMS":
            0,
            "form-MAX_NUM_FORMS":
            1000,
            "form-0-component":
            ComponentTypes.zrc,
            "form-0-scopes": ["zaken.lezen"],
            "form-0-related_type_selection":
            RelatedTypeSelectionMethods.manual_select,
            "form-0-zaaktypen": [zt.id],
            "form-0-vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.beperkt_openbaar,
        }

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

        self.assertEqual(response.status_code, 302)
        self.assertFalse(m.called)
    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")
Ejemplo n.º 18
0
    def test_api_51_status_codes(self):
        with self.subTest(crud="create"):
            zaaktype = ZaakTypeFactory.create(concept=False)
            zaaktype_url = reverse(zaaktype)
            url = reverse("zaak-list")

            response = self.client.post(
                url,
                {
                    "zaaktype": f"http://testserver{zaaktype_url}",
                    "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
                    "bronorganisatie": "517439943",
                    "verantwoordelijkeOrganisatie": "517439943",
                    "registratiedatum": "2018-06-11",
                    "startdatum": "2018-06-11",
                },
                **ZAAK_WRITE_KWARGS,
            )

            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
            self.assertEqual(response["Location"], response.data["url"])

        with self.subTest(crud="read"):
            response_detail = self.client.get(response.data["url"], **ZAAK_READ_KWARGS)
            self.assertEqual(response_detail.status_code, status.HTTP_200_OK)
Ejemplo n.º 19
0
    def _create_zaak(self, **headers):
        base_zaak = "http://testserver/zaken/api/v1/"
        base_zaaktype = "http://testserver/catalogi/api/v1/"

        Service.objects.create(
            api_type=APITypes.zrc,
            api_root=base_zaak,
            label="external zaken",
            auth_type=AuthTypes.no_auth,
        )
        Service.objects.create(
            api_type=APITypes.ztc,
            api_root=base_zaaktype,
            label="external zaaktypen",
            auth_type=AuthTypes.no_auth,
        )
        mock_service_oas_get(self.adapter, APITypes.zrc, base_zaak)
        mock_service_oas_get(self.adapter, APITypes.ztc, base_zaaktype)

        url = reverse(Zaak)
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = f"http://testserver{reverse(zaaktype)}"
        zaak_data = {
            "zaaktype": zaaktype_url,
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": "517439943",
            "registratiedatum": "2018-12-24",
            "startdatum": "2018-12-24",
            "productenOfDiensten": ["https://example.com/product/123"],
        }

        response = self.client.post(url, zaak_data, **ZAAK_WRITE_KWARGS,
                                    **headers)

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

        # Mocking calls for the CMIS adapter, for when it will create a Oio
        zaak = Zaak.objects.get()
        zaak_url = f"http://testserver{reverse(zaak)}"

        self.adapter.get(
            zaak_url,
            json={
                "url": zaak_url,
                "identificatie": zaak.identificatie,
                "zaaktype": zaaktype_url,
            },
        )
        self.adapter.get(
            zaaktype_url,
            json={
                "url": zaaktype_url,
                "identificatie": zaak.zaaktype.identificatie,
                "omschrijving": "Melding Openbare Ruimte",
            },
        )

        return response.data
Ejemplo n.º 20
0
    def registreer_zaak(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        zaak_create_url = get_operation_url("zaak_create")

        created = parser.parse(self.data["datetime"])
        intern_id = self.data["id"]

        response = self.client.post(
            zaak_create_url,
            {
                "zaaktype": f"http://testserver{zaaktype_url}",
                "vertrouwelijkheidaanduiding":
                VertrouwelijkheidsAanduiding.openbaar,
                "bronorganisatie": "517439943",
                "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
                "identificatie": f"WATER_{intern_id}",
                "registratiedatum": created.strftime("%Y-%m-%d"),
                "startdatum": created.strftime("%Y-%m-%d"),
                "toelichting": self.data["text"],
                "zaakgeometrie": self.data["coordinates"],
            },
            **ZAAK_WRITE_KWARGS,
        )

        self.references["zaak_url"] = response.json()["url"]
        self.references["zaaktype"] = zaaktype
Ejemplo n.º 21
0
    def setUpTestData(cls):
        cls.zaaktype = ZaakTypeFactory.create(concept=False)
        cls.zaaktype_url = reverse(cls.zaaktype)
        cls.statustype = StatusTypeFactory.create(zaaktype=cls.zaaktype)
        cls.statustype_url = reverse(cls.statustype)
        cls.statustype2 = StatusTypeFactory.create(zaaktype=cls.zaaktype)
        cls.statustype2_url = reverse(cls.statustype2)

        super().setUpTestData()
Ejemplo n.º 22
0
    def test_create_zaak_zonder_bronorganisatie(self):
        zaaktype = ZaakTypeFactory.create()
        zaaktype_url = reverse(zaaktype)
        url = get_operation_url("zaak_create")
        data = {"zaaktype": zaaktype_url, "registratiedatum": "2018-06-11"}

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

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        error = get_validation_errors(response, "bronorganisatie")
        self.assertEqual(error["code"], "required")
Ejemplo n.º 23
0
    def test_not_allowed_to_change_zaaktype(self):
        zaak = ZaakFactory.create()
        url = reverse(zaak)
        zaaktype = ZaakTypeFactory.create()
        zaaktype_url = reverse(zaaktype)

        response = self.client.patch(
            url, {"zaaktype": f"http://testserver{zaaktype_url}"}, **ZAAK_WRITE_KWARGS
        )

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        validation_error = get_validation_errors(response, "zaaktype")
        self.assertEqual(validation_error["code"], IsImmutableValidator.code)
Ejemplo n.º 24
0
    def test_send_notif_create_zaak(self, mock_client):
        """
        Check if notifications will be send when zaak is created
        """
        client = mock_client.return_value
        url = get_operation_url("zaak_create")
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "registratiedatum": "2012-01-13",
            "startdatum": "2012-01-13",
            "toelichting": "Een stel dronken toeristen speelt versterkte "
            "muziek af vanuit een gehuurde boot.",
            "zaakgeometrie": {
                "type": "Point",
                "coordinates": [4.910649523925713, 52.37240093589432],
            },
        }

        with capture_on_commit_callbacks(execute=True):
            response = self.client.post(url, data, **ZAAK_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        data = response.json()
        client.create.assert_called_once_with(
            "notificaties",
            {
                "kanaal": "zaken",
                "hoofdObject": data["url"],
                "resource": "zaak",
                "resourceUrl": data["url"],
                "actie": "create",
                "aanmaakdatum": "2012-01-14T00:00:00Z",
                "kenmerken": {
                    "bronorganisatie":
                    "517439943",
                    "zaaktype":
                    f"http://testserver{zaaktype_url}",
                    "vertrouwelijkheidaanduiding":
                    VertrouwelijkheidsAanduiding.openbaar,
                },
            },
        )
Ejemplo n.º 25
0
    def test_zaak_create_fail_send_notification_create_db_entry(self):
        url = get_operation_url("zaak_create")
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "registratiedatum": "2012-01-13",
            "startdatum": "2012-01-13",
            "toelichting": "Een stel dronken toeristen speelt versterkte "
            "muziek af vanuit een gehuurde boot.",
            "zaakgeometrie": {
                "type": "Point",
                "coordinates": [4.910649523925713, 52.37240093589432],
            },
        }

        with capture_on_commit_callbacks(execute=True):
            response = self.client.post(url, data, **ZAAK_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        data = response.json()

        self.assertEqual(StatusLog.objects.count(), 1)

        logged_warning = StatusLog.objects.get()
        failed = FailedNotification.objects.get()
        message = {
            "aanmaakdatum": "2019-01-01T12:00:00Z",
            "actie": "create",
            "hoofdObject": data["url"],
            "kanaal": "zaken",
            "kenmerken": {
                "bronorganisatie": data["bronorganisatie"],
                "zaaktype": f"http://testserver{zaaktype_url}",
                "vertrouwelijkheidaanduiding":
                data["vertrouwelijkheidaanduiding"],
            },
            "resource": "zaak",
            "resourceUrl": data["url"],
        }

        self.assertEqual(failed.statuslog_ptr, logged_warning)
        self.assertEqual(failed.message, message)
Ejemplo n.º 26
0
    def test_create_external_relevante_zaak_fail_invalid_schema(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = f"http://testserver.com{reverse(zaaktype)}"
        zaak_external = (
            "https://externe.zaken.nl/api/v1/zaken/a620b183-d898-4576-ae94-3f21d43cc576"
        )
        zaak_data = {
            "url": zaak_external,
            "uuid": "d781cd1b-f100-4051-9543-153b93299da4",
            "identificatie": "ZAAK-2019-0000000001",
            "bronorganisatie": "517439943",
            "omschrijving": "some zaak",
            "zaaktype": zaaktype_url,
        }

        with requests_mock.Mocker(real_http=True) as m:
            m.register_uri("GET", zaak_external, json=zaak_data)

            response = self.client.post(
                self.list_url,
                {
                    "zaaktype":
                    zaaktype_url,
                    "bronorganisatie":
                    "517439943",
                    "verantwoordelijkeOrganisatie":
                    "517439943",
                    "registratiedatum":
                    "2018-12-24",
                    "startdatum":
                    "2018-12-24",
                    "vertrouwelijkheidaanduiding":
                    VertrouwelijkheidsAanduiding.openbaar,
                    "relevanteAndereZaken":
                    [{
                        "url": zaak_external,
                        "aardRelatie": AardZaakRelatie.vervolg,
                    }],
                },
                **ZAAK_WRITE_KWARGS,
                HTTP_HOST="testserver.com",
            )

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

        error = get_validation_errors(response, "relevanteAndereZaken.0.url")
        self.assertEqual(error["code"], "invalid-resource")
Ejemplo n.º 27
0
    def test_inline_zaaktype_autorisaties(self):
        zt = ZaakTypeFactory.create()
        self._add_autorisatie(
            zt,
            component=ComponentTypes.zrc,
            scopes=["zaken.lezen"],
            max_vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.geheim,
        )

        response = self.app.get(self.url)

        self.assertEqual(response.status_code, 200)
        self.assertContains(response, str(zt))
        self.assertContains(
            response,
            VertrouwelijkheidsAanduiding.labels[VertrouwelijkheidsAanduiding.geheim],
        )
Ejemplo n.º 28
0
    def test_create_zaak(self):
        """
        Maak een zaak van een bepaald type.
        """
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        url = get_operation_url("zaak_create")
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding":
            VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "registratiedatum": "2018-06-11",
            "startdatum": "2018-06-11",
            "toelichting": "Een stel dronken toeristen speelt versterkte "
            "muziek af vanuit een gehuurde boot.",
            "zaakgeometrie": {
                "type": "Point",
                "coordinates": [4.910649523925713, 52.37240093589432],
            },
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)
        data = response.json()
        self.assertIn("identificatie", data)

        # verify that the identification has been generated
        self.assertIsInstance(data["identificatie"], str)
        self.assertNotEqual(data["identificatie"], "")
        self.assertIsInstance(data["zaakgeometrie"], dict)  # geojson object

        zaak = Zaak.objects.get()
        self.assertEqual(zaak.zaaktype, zaaktype)
        self.assertEqual(zaak.registratiedatum, date(2018, 6, 11))
        self.assertEqual(
            zaak.toelichting,
            "Een stel dronken toeristen speelt versterkte "
            "muziek af vanuit een gehuurde boot.",
        )
        self.assertEqual(zaak.zaakgeometrie.x, 4.910649523925713)
        self.assertEqual(zaak.zaakgeometrie.y, 52.37240093589432)
Ejemplo n.º 29
0
    def _create_zaak(self, **headers):
        url = reverse(Zaak)
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        zaak_data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": "517439943",
            "registratiedatum": "2018-12-24",
            "startdatum": "2018-12-24",
            "productenOfDiensten": ["https://example.com/product/123"],
        }
        response = self.client.post(url, zaak_data, **ZAAK_WRITE_KWARGS, **headers)

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

        return response.data
Ejemplo n.º 30
0
    def test_zaak_create(self):
        """
        Assert that it's possible to create a zaak with an unpublished zaaktype when
        the feature flag is set.
        """
        zaaktype = ZaakTypeFactory.create(concept=True)
        zaaktype_url = reverse(zaaktype)
        url = reverse(Zaak)
        data = {
            "zaaktype": f"http://testserver{zaaktype_url}",
            "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "123456782",
            "verantwoordelijkeOrganisatie": "123456782",
            "startdatum": "2018-06-11",
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)