示例#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)
    def test_list_zaakobject_limited_to_authorized_zaken(self):
        url = reverse('zaakobject-list')
        # must show up
        zaakobject = ZaakObjectFactory.create(
            zaak__zaaktype='https://zaaktype.nl/ok',
            zaak__vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            openbaar)
        # must not show up
        ZaakObjectFactory.create(
            zaak__zaaktype='https://zaaktype.nl/ok',
            zaak__vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            vertrouwelijk)
        # must not show up
        ZaakObjectFactory.create(
            zaak__zaaktype='https://zaaktype.nl/not_ok',
            zaak__vertrouwelijkheidaanduiding=VertrouwelijkheidsAanduiding.
            openbaar)

        response = self.client.get(url)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        response_data = response.json()
        self.assertEqual(len(response_data), 1)
        self.assertEqual(response_data[0]['url'],
                         f"http://testserver{reverse(zaakobject)}")
    def test_validate_unknown_query_params(self):
        ZaakObjectFactory.create_batch(2,
                                       object="http://example.com/objects/1")
        url = get_operation_url("zaakobject_list")

        response = self.client.get(url, {"someparam": "somevalue"})

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

        error = get_validation_errors(response, "nonFieldErrors")
        self.assertEqual(error["code"], "unknown-parameters")
    def test_filter_object(self):
        zaakobject1 = ZaakObjectFactory.create(
            object="http://example.com/objects/1")
        zaakobject2 = ZaakObjectFactory.create(
            object="http://example.com/objects/2")
        zaakobject1_url = get_operation_url("zaakobject_read",
                                            uuid=zaakobject1.uuid)
        url = get_operation_url("zaakobject_list")

        response = self.client.get(url,
                                   {"object": "http://example.com/objects/1"})

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

        data = response.json()["results"]

        self.assertEqual(len(data), 1)
        self.assertEqual(data[0]["url"], f"http://testserver{zaakobject1_url}")
    def test_filter_type(self):
        zaakobject1 = ZaakObjectFactory.create(
            object_type=ZaakobjectTypes.besluit)
        zaakobject2 = ZaakObjectFactory.create(
            object_type=ZaakobjectTypes.adres)
        zaakobject1_url = get_operation_url("zaakobject_read",
                                            uuid=zaakobject1.uuid)
        url = get_operation_url("zaakobject_list")

        response = self.client.get(url,
                                   {"objectType": ZaakobjectTypes.besluit})

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

        data = response.json()["results"]

        self.assertEqual(len(data), 1)
        self.assertEqual(data[0]["url"], f"http://testserver{zaakobject1_url}")
    def test_filter_zaak(self):
        zaakobject1 = ZaakObjectFactory.create()
        zaakobject2 = ZaakObjectFactory.create()
        zaak = zaakobject1.zaak
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        zaakobject1_url = get_operation_url("zaakobject_read",
                                            uuid=zaakobject1.uuid)
        url = get_operation_url("zaakobject_list")

        response = self.client.get(
            url,
            {"zaak": f"http://testserver.com{zaak_url}"},
            HTTP_HOST="testserver.com",
        )

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

        data = response.json()["results"]

        self.assertEqual(len(data), 1)
        self.assertEqual(data[0]["url"],
                         f"http://testserver.com{zaakobject1_url}")
    def test_add_resultaat_on_zaak_with_zaakobject_causes_archiefactiedatum_to_be_set(
            self):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)

        zaak_object = ZaakObjectFactory.create(zaak=zaak)

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

        responses = {
            zaak_object.object: {
                'einddatum': isodatetime(2019, 1, 1)
            },
            RESULTAATTYPE: {
                'url': RESULTAATTYPE,
                'archiefactietermijn': 'P10Y',
                'archiefnominatie': Archiefnominatie.blijvend_bewaren,
                'brondatumArchiefprocedure': {
                    'afleidingswijze':
                    BrondatumArchiefprocedureAfleidingswijze.zaakobject,
                    'datumkenmerk': 'einddatum',
                    'objecttype': zaak_object.object_type,
                    'procestermijn': None,
                }
            }
        }

        with mock_client(responses):
            response = self.client.post(resultaat_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))
    def test_cannot_read_without_correct_scope(self):
        zaak = ZaakFactory.create()
        status = StatusFactory.create()
        zaak_object = ZaakObjectFactory.create()
        resultaat = ResultaatFactory.create()
        urls = [
            reverse('zaak-list'),
            reverse(zaak),
            reverse('status-list'),
            reverse(status),
            reverse('status-list'),
            reverse(resultaat),
            reverse('zaakobject-list'),
            reverse(zaak_object),
        ]

        for url in urls:
            with self.subTest(url=url):
                self.assertForbidden(url,
                                     method='get',
                                     request_kwargs=ZAAK_READ_KWARGS)
示例#9
0
    def test_send_notif_update_zaakobject(self, mock_client):
        """
        Check if notifications will be send when zaakobject is updated
        """

        client = mock_client.return_value
        zaak = ZaakFactory.create(zaaktype=ZAAKTYPE)
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        zaakobject = ZaakObjectFactory.create(zaak=zaak,
                                              relatieomschrijving="old")
        zaakobject_url = get_operation_url("zaakobject_update",
                                           uuid=zaakobject.uuid)

        with capture_on_commit_callbacks(execute=True):
            response = self.client.patch(zaakobject_url,
                                         {"relatieomschrijving": "new"})

        self.assertEqual(response.status_code, status.HTTP_200_OK,
                         response.data)
        client.create.assert_called_once_with(
            "notificaties",
            {
                "kanaal": "zaken",
                "hoofdObject": f"http://testserver{zaak_url}",
                "resource": "zaakobject",
                "resourceUrl": f"http://testserver{zaakobject_url}",
                "actie": "partial_update",
                "aanmaakdatum": "2012-01-14T00:00:00Z",
                "kenmerken": {
                    "bronorganisatie":
                    zaak.bronorganisatie,
                    "zaaktype":
                    zaak.zaaktype,
                    "vertrouwelijkheidaanduiding":
                    zaak.vertrouwelijkheidaanduiding,
                },
            },
        )
    def test_add_resultaat_on_zaak_with_zaakobject_causes_archiefactiedatum_to_be_set(
            self):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create(zaaktype=ZAAKTYPE)
        zaak_url = get_operation_url('zaak_read', uuid=zaak.uuid)
        zaak_object = ZaakObjectFactory.create(zaak=zaak)
        responses = {
            zaak_object.object: {
                'einddatum': isodatetime(2019, 1, 1)
            },
            RESULTAATTYPE: {
                'url': RESULTAATTYPE,
                'archiefactietermijn': 'P10Y',
                'archiefnominatie': Archiefnominatie.blijvend_bewaren,
                'brondatumArchiefprocedure': {
                    'afleidingswijze':
                    BrondatumArchiefprocedureAfleidingswijze.zaakobject,
                    'datumkenmerk': 'einddatum',
                    'objecttype': zaak_object.object_type,
                    'procestermijn': None,
                }
            },
            STATUSTYPE: {
                'url': STATUSTYPE,
                'volgnummer': 2,
                'isEindstatus': True,
            }
        }

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

        with mock_client(responses):
            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')
        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))