Exemplo n.º 1
0
    def test_delete_zaak_cascades_properly(self):
        """
        Deleting a zaak causes all related objects to be deleted as well.
        """
        zaak = ZaakFactory.create(zaaktype=ZAAKTYPE)

        ZaakFactory.create(hoofdzaak=zaak, zaaktype=ZAAKTYPE)

        ZaakEigenschapFactory.create(zaak=zaak)
        StatusFactory.create(zaak=zaak)
        RolFactory.create(zaak=zaak)
        ResultaatFactory.create(zaak=zaak)
        ZaakObjectFactory.create(zaak=zaak)
        ZaakInformatieObjectFactory.create(zaak=zaak)
        KlantContactFactory.create(zaak=zaak)

        zaak_delete_url = get_operation_url('zaak_delete', uuid=zaak.uuid)

        response = self.client.delete(zaak_delete_url, **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT,
                         response.data)

        self.assertEqual(Zaak.objects.all().count(), 0)

        self.assertEqual(ZaakEigenschap.objects.all().count(), 0)
        self.assertEqual(Status.objects.all().count(), 0)
        self.assertEqual(Rol.objects.all().count(), 0)
        self.assertEqual(Resultaat.objects.all().count(), 0)
        self.assertEqual(ZaakObject.objects.all().count(), 0)
        self.assertEqual(ZaakInformatieObject.objects.all().count(), 0)
        self.assertEqual(KlantContact.objects.all().count(), 0)
Exemplo n.º 2
0
    def test_cannot_change_zaak(self):
        zaak1 = ZaakFactory.create(zaaktype=ZAAKTYPE)
        zaak2 = ZaakFactory.create(zaaktype=ZAAKTYPE)
        zaakeigenschap = ZaakEigenschapFactory.create(
            zaak=zaak1, eigenschap=EIGENSCHAP, waarde="This is a value"
        )

        zaakeigenschap_url = reverse(
            "zaakeigenschap-detail",
            kwargs={"version": 1, "zaak_uuid": zaak1.uuid, "uuid": zaakeigenschap.uuid},
        )
        zaak2_url = reverse(
            "zaak-detail",
            kwargs={"version": 1, "uuid": zaak2.uuid},
        )

        zaakeigenschap_data = {
            "zaak": f"http://example.com{zaak2_url}",
            "eigenschap": EIGENSCHAP,
            "waarde": "This is a changed value",
        }

        response = self.client.patch(zaakeigenschap_url, data=zaakeigenschap_data)

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

        invalid_params = response.json()["invalidParams"]

        self.assertEqual(1, len(invalid_params))

        self.assertIn("zaak", invalid_params[0]["name"])
        self.assertEqual("wijzigen-niet-toegelaten", invalid_params[0]["code"])
Exemplo n.º 3
0
    def test_filter_on_archiefactiedatum_archiefnominatie_archiefstatus(self):
        zaak_1 = ZaakFactory.create(
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            archiefactiedatum=date(2010, 1, 1),
            archiefstatus=Archiefstatus.nog_te_archiveren,
            zaaktype=ZAAKTYPE,
        )
        zaak_2 = ZaakFactory.create(
            archiefnominatie=Archiefnominatie.vernietigen,
            archiefactiedatum=date(2010, 1, 1),
            archiefstatus=Archiefstatus.nog_te_archiveren,
            zaaktype=ZAAKTYPE,
        )

        zaak_list_url = get_operation_url("zaak_list")

        query_params = {
            "archiefactiedatum__lt":
            date(2015, 1, 1),
            "archiefnominatie":
            Archiefnominatie.blijvend_bewaren,
            "archiefstatus__in":
            ",".join(
                [Archiefstatus.nog_te_archiveren, Archiefstatus.gearchiveerd]),
        }
        query_params = urlencode(query_params, quote_via=quote_plus)

        response = self.client.get(f"{zaak_list_url}?{query_params}",
                                   **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_200_OK,
                         response.data)

        data = response.json()["results"]
        self.assertEqual(len(data), 1)
        self.assertTrue(data[0]["url"].endswith(str(zaak_1.uuid)))
    def test_filter_ook_zaaktype(self):

        # both in district
        ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595),
                           zaaktype='https://example.com/api/v1/zaaktype/1')
        ZaakFactory.create(zaakgeometrie=Point(4.887990, 52.377595),
                           zaaktype='https://example.com/api/v1/zaaktype/2')

        url = get_operation_url('zaak__zoek')

        response = self.client.post(
            url, {
                'zaakgeometrie': {
                    'within': {
                        'type': 'Polygon',
                        'coordinates': [POLYGON_AMSTERDAM_CENTRUM]
                    }
                },
                'zaaktype': 'https://example.com/api/v1/zaaktype/1'
            },
            HTTP_ACCEPT_CRS='EPSG:4326')

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

        response_data = response.json()
        self.assertEqual(len(response_data), 1)
    def test_filter_on_archiefactiedatum_archiefnominatie_archiefstatus(self):
        zaak_1 = ZaakFactory.create(
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            archiefactiedatum=date(2010, 1, 1),
            archiefstatus=Archiefstatus.nog_te_archiveren,
        )
        zaak_2 = ZaakFactory.create(
            archiefnominatie=Archiefnominatie.vernietigen,
            archiefactiedatum=date(2010, 1, 1),
            archiefstatus=Archiefstatus.nog_te_archiveren,
        )

        zaak_list_url = get_operation_url('zaak_list')

        query_params = {
            'archiefactiedatum__lt': date(2015, 1, 1),
            'archiefnominatie': Archiefnominatie.blijvend_bewaren,
            'archiefstatus__in': ','.join([Archiefstatus.nog_te_archiveren, Archiefstatus.gearchiveerd]),
        }
        query_params = urlencode(query_params, quote_via=quote_plus)

        response = self.client.get(f'{zaak_list_url}?{query_params}', **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_200_OK, response.data)

        data = response.json()['results']
        self.assertEqual(len(data), 1)
        self.assertTrue(data[0]['url'].endswith(str(zaak_1.uuid)))
Exemplo n.º 6
0
    def test_filter_startdatum(self):
        ZaakFactory.create(zaaktype=ZAAKTYPE, startdatum='2019-01-01')
        ZaakFactory.create(zaaktype=ZAAKTYPE, startdatum='2019-03-01')
        url = reverse('zaak-list')

        response_gt = self.client.get(url, {'startdatum__gt': '2019-02-01'},
                                      **ZAAK_READ_KWARGS)
        response_lt = self.client.get(url, {'startdatum__lt': '2019-02-01'},
                                      **ZAAK_READ_KWARGS)
        response_gte = self.client.get(url, {'startdatum__gte': '2019-03-01'},
                                       **ZAAK_READ_KWARGS)
        response_lte = self.client.get(url, {'startdatum__lte': '2019-01-01'},
                                       **ZAAK_READ_KWARGS)

        for response in [response_gt, response_lt, response_gte, response_lte]:
            self.assertEqual(response.status_code, status.HTTP_200_OK)
            self.assertEqual(response.data['count'], 1)

        self.assertEqual(response_gt.data['results'][0]['startdatum'],
                         '2019-03-01')
        self.assertEqual(response_lt.data['results'][0]['startdatum'],
                         '2019-01-01')
        self.assertEqual(response_gte.data['results'][0]['startdatum'],
                         '2019-03-01')
        self.assertEqual(response_lte.data['results'][0]['startdatum'],
                         '2019-01-01')
Exemplo n.º 7
0
    def test_filter_ook_zaaktype(self):

        # both in district
        ZaakFactory.create(
            zaakgeometrie=Point(4.887990, 52.377595),
            zaaktype="https://example.com/api/v1/zaaktype/1",
        )
        ZaakFactory.create(
            zaakgeometrie=Point(4.887990, 52.377595),
            zaaktype="https://example.com/api/v1/zaaktype/2",
        )

        url = get_operation_url("zaak__zoek")

        response = self.client.post(
            url,
            {
                "zaakgeometrie": {
                    "within": {
                        "type": "Polygon",
                        "coordinates": [POLYGON_AMSTERDAM_CENTRUM],
                    }
                },
                "zaaktype": "https://example.com/api/v1/zaaktype/1",
            },
            **ZAAK_WRITE_KWARGS,
        )

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

        response_data = response.json()["results"]
        self.assertEqual(len(response_data), 1)
    def test_anoniem_binnen_ams_centrum_district(self):
        """
        Test dat zaken binnen een bepaald gebied kunnen opgevraagd worden.
        """
        # in district
        zaak = ZaakFactory.create(zaakgeometrie=Point(4.887990,
                                                      52.377595))  # LONG LAT
        # outside of district
        ZaakFactory.create(zaakgeometrie=Point(4.905650, 52.357621))
        # no geo set
        ZaakFactory.create()

        url = get_operation_url('zaak__zoek')

        response = self.client.post(url, {
            'zaakgeometrie': {
                'within': {
                    'type': 'Polygon',
                    'coordinates': [POLYGON_AMSTERDAM_CENTRUM]
                }
            }
        },
                                    HTTP_ACCEPT_CRS='EPSG:4326')

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

        response_data = response.json()
        self.assertEqual(len(response_data), 1)
        detail_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        self.assertEqual(response_data[0]['url'],
                         f"http://testserver{detail_url}")
    def test_add_resultaat_on_zaak_with_hoofdzaak_causes_archiefactiedatum_to_be_set(
            self):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        hoofd_zaak = ZaakFactory.create(einddatum=date(2019, 1, 1),
                                        zaaktype=ZAAKTYPE)

        zaak = ZaakFactory.create(hoofdzaak=hoofd_zaak, zaaktype=ZAAKTYPE)
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)

        # add resultaat
        resultaat_create_url = get_operation_url('resultaat_create')
        data = {
            'zaak': zaak_url,
            'resultaatType': RESULTAATTYPE,
            'toelichting': '',
        }

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

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

        # add final status to the case to close it and to calculate archive parameters
        status_create_url = get_operation_url('status_create')
        responses = {
            RESULTAATTYPE: {
                'url': RESULTAATTYPE,
                'archiefactietermijn': 'P10Y',
                'archiefnominatie': Archiefnominatie.blijvend_bewaren,
                'brondatumArchiefprocedure': {
                    'afleidingswijze':
                    BrondatumArchiefprocedureAfleidingswijze.hoofdzaak,
                    'datumkenmerk': None,
                    'objecttype': None,
                    'procestermijn': None,
                }
            },
            STATUSTYPE: {
                'url': STATUSTYPE,
                'volgnummer': 2,
                'isEindstatus': True,
            }
        }
        data = {
            'zaak': zaak_url,
            'statusType': STATUSTYPE,
            'datumStatusGezet': '2018-10-18T20:00:00Z',
        }

        with mock_client(responses):
            response = self.client.post(status_create_url, data)

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

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefactiedatum, date(2029, 1, 1))
Exemplo n.º 10
0
    def test_deelzaken(self):
        hoofdzaak = ZaakFactory.create(zaaktype=ZAAKTYPE)
        deelzaak = ZaakFactory.create(hoofdzaak=hoofdzaak, zaaktype=ZAAKTYPE)
        detail_url = reverse(hoofdzaak)
        deelzaak_url = reverse(deelzaak)

        response = self.client.get(detail_url, **ZAAK_READ_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.json()['deelzaken'],
                         [f"http://testserver{deelzaak_url}"])
    def test_delete_deel_zaak(self):
        """
        Deleting a deel zaak only deletes the deel zaak, and not the hoofd zaak.
        """
        zaak = ZaakFactory.create()
        deel_zaak = ZaakFactory.create(hoofdzaak=zaak)

        zaak_delete_url = get_operation_url('zaak_delete', uuid=deel_zaak.uuid)

        response = self.client.delete(zaak_delete_url, **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT, response.data)

        self.assertEqual(Zaak.objects.all().count(), 1)
        self.assertEqual(Zaak.objects.get().pk, zaak.pk)
    def test_read_superuser(self):
        """
        superuser read everything
        """
        self.applicatie.heeft_alle_autorisaties = True
        self.applicatie.save()

        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar)
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/not_ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar)
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            zeer_geheim)
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/not_ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            zeer_geheim)
        url = reverse('zaak-list')

        response = self.client.get(url, **ZAAK_READ_KWARGS)

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

        results = response.data['results']

        self.assertEqual(len(results), 4)
    def test_zaak_list(self):
        """
        Assert you can only list ZAAKen of the zaaktypes and vertrouwelijkheidaanduiding
        of your authorization
        """
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar)
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/not_ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.openbaar)
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            zeer_geheim)
        ZaakFactory.create(
            zaaktype='https://zaaktype.nl/not_ok',
            vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            zeer_geheim)
        url = reverse('zaak-list')

        response = self.client.get(url, **ZAAK_READ_KWARGS)

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

        results = response.data['results']

        self.assertEqual(len(results), 1)
        self.assertEqual(results[0]['zaaktype'], 'https://zaaktype.nl/ok')
        self.assertEqual(results[0]['vertrouwelijkheidaanduiding'],
                         VertrouwelijkheidsAanduiding.openbaar)
Exemplo n.º 14
0
    def test_deelzaken(self):
        hoofdzaak = ZaakFactory.create()
        deelzaak = ZaakFactory.create(hoofdzaak=hoofdzaak)
        detail_url = reverse(hoofdzaak)
        deelzaak_url = reverse(deelzaak)

        token = generate_jwt(scopes=self.scopes,
                             zaaktypes=[hoofdzaak.zaaktype])
        self.client.credentials(HTTP_AUTHORIZATION=token)

        response = self.client.get(detail_url, **ZAAK_READ_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.json()['deelzaken'],
                         [f"http://testserver{deelzaak_url}"])
    def test_cannot_have_multiple_levels(self):
        """
        Deelzaak kan enkel deelzaak zijn van hoofdzaak en niet andere deelzaken.
        """
        url = reverse('zaak-list')
        hoofdzaak = ZaakFactory.create()
        deelzaak = ZaakFactory.create(hoofdzaak=hoofdzaak)
        deelzaak_url = reverse('zaak-detail', kwargs={'uuid': deelzaak.uuid})

        response = self.client.post(url, {'hoofdzaak': deelzaak_url},
                                    **ZAAK_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        error = get_validation_errors(response, 'hoofdzaak')
        self.assertEqual(error['code'], 'deelzaak-als-hoofdzaak')
    def test_zet_verantwoordelijk(self):
        url = get_operation_url('rol_create')
        betrokkene = 'https://example.com/orc/api/v1/vestigingen/waternet'
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        data = {
            'zaak': zaak_url,
            'betrokkene': betrokkene,
            'betrokkeneType': 'Vestiging',
            'rolomschrijving': 'Behandelaar',
            'roltoelichting': 'Baggeren van gracht',
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        response_data = response.json()
        rol = Rol.objects.get()
        self.assertEqual(rol.zaak, zaak)
        self.assertEqual(rol.betrokkene, betrokkene)
        detail_url = get_operation_url('rol_read', uuid=rol.uuid)
        self.assertEqual(
            response_data,
            {
                'url': f"http://testserver{detail_url}",
                'zaak': f"http://testserver{zaak_url}",
                'betrokkene': betrokkene,
                'betrokkeneType': 'Vestiging',
                'rolomschrijving': 'Behandelaar',
                'roltoelichting': 'Baggeren van gracht',
            }
        )
    def test_zet_stadsdeel(self):
        url = get_operation_url('zaakobject_create')
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        data = {
            'zaak': zaak_url,
            'object': STADSDEEL,
            'type': 'VerblijfsObject',
            'relatieomschrijving': 'Afgeleid gebied',
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        response_data = response.json()
        zaakobject = ZaakObject.objects.get()
        self.assertEqual(zaakobject.zaak, zaak)
        detail_url = get_operation_url('zaakobject_read', uuid=zaakobject.uuid)
        self.assertEqual(
            response_data,
            {
                'url': f"http://testserver{detail_url}",
                'zaak': f"http://testserver{zaak_url}",
                'object': STADSDEEL,
                'type': 'VerblijfsObject',
                'relatieomschrijving': 'Afgeleid gebied',
            }
        )
    def test_create_klantcontact(self):
        url = get_operation_url('klantcontact_create')
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        data = {
            'zaak': zaak_url,
            'datumtijd': isodatetime(2018, 6, 11, 13, 47, 55),
            'kanaal': 'Webformulier',
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        response_data = response.json()
        klantcontact = KlantContact.objects.get()
        self.assertIsInstance(klantcontact.identificatie, str)
        self.assertNotEqual(klantcontact.identificatie, '')
        self.assertEqual(klantcontact.zaak, zaak)
        detail_url = get_operation_url('klantcontact_read', uuid=klantcontact.uuid)
        self.assertEqual(
            response_data,
            {
                'url': f"http://testserver{detail_url}",
                'zaak': f"http://testserver{zaak_url}",
                'identificatie': klantcontact.identificatie,
                'datumtijd': '2018-06-11T13:47:55Z',
                'kanaal': 'Webformulier',
            }
        )
    def test_zet_adres_binnenland(self):
        """
        Het adres van de melding moet in de zaak beschikbaar zijn.
        """
        url = get_operation_url('zaakobject_create')
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        data = {
            'zaak': zaak_url,
            'object': OBJECT_MET_ADRES,
            'type': 'VerblijfsObject',
            'relatieomschrijving': 'Het adres waar de overlast vastgesteld werd.',
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        response_data = response.json()
        zaakobject = ZaakObject.objects.get()
        self.assertEqual(zaakobject.zaak, zaak)
        detail_url = get_operation_url('zaakobject_read', uuid=zaakobject.uuid)
        self.assertEqual(
            response_data,
            {
                'url': f"http://testserver{detail_url}",
                'zaak': f"http://testserver{zaak_url}",
                'object': OBJECT_MET_ADRES,
                'type': 'VerblijfsObject',
                'relatieomschrijving': 'Het adres waar de overlast vastgesteld werd.',
            }
        )
    def test_zet_zaakstatus(self):
        """
        De actuele status van een zaak moet gezet worden bij het aanmaken
        van de zaak.
        """
        url = get_operation_url('status_create')
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        data = {
            'zaak': zaak_url,
            'statusType': STATUS_TYPE,
            'datumStatusGezet': isodatetime(2018, 6, 6, 17, 23, 43),
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        response_data = response.json()
        status_ = Status.objects.get()
        self.assertEqual(status_.zaak, zaak)
        detail_url = get_operation_url('status_read', uuid=status_.uuid)
        self.assertEqual(
            response_data,
            {
                'url': f"http://testserver{detail_url}",
                'zaak': f"http://testserver{zaak_url}",
                'statusType': STATUS_TYPE,
                'datumStatusGezet': '2018-06-06T17:23:43Z',  # UTC
                'statustoelichting': '',
            }
        )
    def test_meerdere_coordinatoren_verboden(self):
        """
        Uit RGBZ 2.0, deel 2, Attribuutsoort Rolomschrijving (bij relatieklasse
        ROL):

        Bij een ZAAK kan maximaal één ROL met als Rolomschrijving generiek
        'Initiator' voor komen.
        """
        zaak = ZaakFactory.create()
        RolFactory.create(zaak=zaak,
                          betrokkene_type=RolTypes.natuurlijk_persoon,
                          rolomschrijving=RolOmschrijving.zaakcoordinator)
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        url = get_operation_url('rol_create')

        response = self.client.post(
            url, {
                'zaak': zaak_url,
                'betrokkene': WATERNET,
                'betrokkeneType': RolTypes.organisatorische_eenheid,
                'rolomschrijving': RolOmschrijving.zaakcoordinator,
                'roltoelichting': 'Melder',
            })

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
    def test_update_zaak(self):
        zaak = ZaakFactory.create()
        zaak_url = reverse('zaak-detail',
                           kwargs={
                               'version': '1',
                               'uuid': zaak.uuid,
                           })

        zio = ZaakInformatieObjectFactory.create(
            informatieobject=INFORMATIEOBJECT)
        zio_detail_url = reverse('zaakinformatieobject-detail',
                                 kwargs={
                                     'version': '1',
                                     'uuid': zio.uuid,
                                 })

        response = self.client.patch(
            zio_detail_url, {
                'zaak': f'http://testserver{zaak_url}',
                'informatieobject': 'https://bla.com',
            })

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

        for field in ['zaak', 'informatieobject']:
            with self.subTest(field=field):
                error = get_validation_errors(response, field)
                self.assertEqual(error['code'], IsImmutableValidator.code)
    def test_update_zaak_with_kenmerken(self):
        zaak = ZaakFactory.create(zaaktype=ZAAKTYPE)
        kenmerk_1 = zaak.zaakkenmerk_set.create(kenmerk='kenmerk 1',
                                                bron='bron 1')
        self.assertEqual(zaak.zaakkenmerk_set.count(), 1)

        zaak_read_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        response = self.client.get(zaak_read_url, **ZAAK_WRITE_KWARGS)

        data = response.json()

        zaak_update_url = get_operation_url('zaak_update', uuid=zaak.uuid)
        data['kenmerken'].append({
            'kenmerk': 'kenmerk 2',
            'bron': 'bron 2',
        })
        data['verlenging'] = None
        data['opschorting'] = None

        response = self.client.put(zaak_update_url, data, **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_200_OK,
                         response.data)

        zaak = Zaak.objects.get(identificatie=zaak.identificatie)
        self.assertEqual(zaak.zaakkenmerk_set.count(), 2)

        # All objects are deleted, and (re)created.
        self.assertFalse(
            kenmerk_1.pk in zaak.zaakkenmerk_set.values_list('pk', flat=True))
    def test_ophalen_alle_betrokkenen(self):
        """
        Test dat alle betrokkenen kunnen opgehaald worden, onafhankelijk van rol.

        Zie https://github.com/VNG-Realisatie/gemma-zaakregistratiecomponent/pull/9#issuecomment-407882637
        """
        zaak1 = ZaakFactory.create()
        rollen1 = RolFactory.create_batch(3, zaak=zaak1)
        rol2 = RolFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak1.uuid)
        rollen_list_url = get_operation_url('rol_list')

        response = self.client.get(rollen_list_url, {
            'zaak': f"http://testserver{zaak_url}",
        })

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        response_data = response.json()

        self.assertEqual(len(response_data), 3)

        expected_urls = {
            f"http://testserver{get_operation_url('rol_read', uuid=rol.uuid)}"
            for rol in rollen1
        }

        received_urls = {rol['url'] for rol in response_data}
        self.assertEqual(received_urls, expected_urls)

        rol2_url = f"http://testserver{get_operation_url('rol_read', uuid=rol2.uuid)}"
        self.assertNotIn(rol2_url, received_urls)
    def test_cannot_set_archiefstatus_when_not_all_documents_are_gearchiveerd(
            self):
        zaak = ZaakFactory.create(
            archiefnominatie=Archiefnominatie.vernietigen,
            archiefactiedatum=date.today(),
            zaaktype=ZAAKTYPE)
        zio = ZaakInformatieObjectFactory.create(
            zaak=zaak,
            informatieobject=ENKELVOUDIGINFORMATIEOBJECT,
        )

        zaak_patch_url = get_operation_url('zaak_partial_update',
                                           uuid=zaak.uuid)

        data = {'archiefstatus': Archiefstatus.gearchiveerd}

        responses = {
            ENKELVOUDIGINFORMATIEOBJECT: {
                'url': ENKELVOUDIGINFORMATIEOBJECT,
                'status': 'in_bewerking',
            },
        }

        with mock_client(responses):
            response = self.client.patch(zaak_patch_url, data,
                                         **ZAAK_WRITE_KWARGS)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST,
                         response.data)
Exemplo n.º 26
0
    def test_create_rol_with_identificatie(self):
        url = get_operation_url('rol_create')
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        data = {
            'zaak': f'http://testserver{zaak_url}',
            'betrokkene_type': RolTypes.natuurlijk_persoon,
            'rolomschrijving': 'Initiator',
            'roltoelichting': 'awerw',
            'betrokkeneIdentificatie': {
                'nummerAnderNatuurlijkPersoon': '12345',
            }
        }

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

        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(Rol.objects.count(), 1)
        self.assertEqual(NatuurlijkPersoon.objects.count(), 1)
        self.assertEqual(NietNatuurlijkPersoon.objects.count(), 0)

        rol = Rol.objects.get()
        natuurlijk_persoon = NatuurlijkPersoon.objects.get()

        self.assertEqual(rol.natuurlijkpersoon, natuurlijk_persoon)
        self.assertEqual(natuurlijk_persoon.nummer_ander_natuurlijk_persoon,
                         '12345')
    def test_update_zaak(self, *mocks):
        zaak = ZaakFactory.create()
        zaak_url = reverse("zaak-detail",
                           kwargs={
                               "version": "1",
                               "uuid": zaak.uuid
                           })

        zio = ZaakInformatieObjectFactory.create(
            informatieobject=INFORMATIEOBJECT)
        zio_detail_url = reverse("zaakinformatieobject-detail",
                                 kwargs={
                                     "version": "1",
                                     "uuid": zio.uuid
                                 })

        response = self.client.patch(
            zio_detail_url,
            {
                "zaak": f"http://testserver{zaak_url}",
                "informatieobject": "https://bla.com",
            },
        )

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

        for field in ["zaak", "informatieobject"]:
            with self.subTest(field=field):
                error = get_validation_errors(response, field)
                self.assertEqual(error["code"], IsImmutableValidator.code)
    def test_zet_behandelaar(self):
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        url = get_operation_url('rol_create')

        response = self.client.post(
            url, {
                'zaak': zaak_url,
                'betrokkene': WATERNET,
                'betrokkeneType': RolTypes.organisatorische_eenheid,
                'rolomschrijving': RolOmschrijving.behandelaar,
                'roltoelichting':
                'Verantwoordelijke behandelaar voor de melding',
            })

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

        response_data = response.json()
        self.assertIn('url', response_data)
        del response_data['url']
        self.assertEqual(
            response_data, {
                'zaak': f'http://testserver{zaak_url}',
                'betrokkene': WATERNET,
                'betrokkeneType': RolTypes.organisatorische_eenheid,
                'rolomschrijving': RolOmschrijving.behandelaar,
                'roltoelichting':
                'Verantwoordelijke behandelaar voor de melding',
            })
    def test_sync_create_fails(self):
        self.mocked_sync_create.side_effect = SyncError("Sync failed")

        zaak = ZaakFactory.create(zaaktype=ZAAKTYPE)
        zaak_url = reverse("zaak-detail",
                           kwargs={
                               "version": "1",
                               "uuid": zaak.uuid
                           })

        content = {
            "informatieobject": INFORMATIEOBJECT,
            "zaak": f"http://testserver{zaak_url}",
        }

        # Send to the API
        with mock_client(RESPONSES):
            response = self.client.post(self.list_url, content)

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

        # transaction must be rolled back
        self.assertFalse(ZaakInformatieObject.objects.exists())
Exemplo n.º 30
0
    def test_meerdere_coordinatoren_verboden(self, *mocks):
        """
        Uit RGBZ 2.0, deel 2, Attribuutsoort Rolomschrijving (bij relatieklasse
        ROL):

        Bij een ZAAK kan maximaal één ROL met als Rolomschrijving generiek
        'Initiator' voor komen.
        """
        zaak = ZaakFactory.create(zaaktype=ZAAKTYPE)
        RolFactory.create(
            zaak=zaak,
            betrokkene_type=RolTypes.natuurlijk_persoon,
            omschrijving=RolOmschrijving.zaakcoordinator,
            omschrijving_generiek=RolOmschrijving.zaakcoordinator,
        )
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        url = get_operation_url("rol_create")

        with requests_mock.Mocker() as m:
            m.get(ROLTYPE3, json=ROLTYPE3_RESPONSE)
            with mock_client({ROLTYPE3: ROLTYPE3_RESPONSE}):
                response = self.client.post(
                    url,
                    {
                        "zaak": zaak_url,
                        "betrokkene": WATERNET,
                        "betrokkeneType": RolTypes.organisatorische_eenheid,
                        "roltype": ROLTYPE3,
                        "roltoelichting": "Melder",
                    },
                )

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