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