Пример #1
0
    def test_unknown_query_params_give_error(self):
        EigenschapFactory.create_batch(2)
        eigenschap_list_url = get_operation_url("eigenschap_list")

        response = self.client.get(eigenschap_list_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")
Пример #2
0
    def setUp(self):
        super().setUp()

        self.zaaktype = ZaakTypeFactory.create(
            maakt_deel_uit_van=self.catalogus)

        specificatie = EigenschapSpecificatieFactory.create(
            kardinaliteit='1',
            lengte='1',
            groep='groep',
        )
        self.eigenschap_one = EigenschapFactory.create(
            eigenschapnaam='Beoogd product',
            is_van=self.zaaktype,
            specificatie_van_eigenschap=specificatie)

        referentie = EigenschapReferentieFactory.create(
            x_path_element='x_path_element',
            namespace='namespace',
        )
        self.eigenschap_two = EigenschapFactory.create(
            eigenschapnaam='Aard product',
            is_van=self.zaaktype,
            referentie_naar_eigenschap=referentie)

        self.eigenschap_list_url = reverse('api:eigenschap-list',
                                           kwargs={
                                               'version': self.API_VERSION,
                                               'catalogus_pk':
                                               self.catalogus.pk,
                                               'zaaktype_pk': self.zaaktype.pk
                                           })
        self.eigenschap_one_detail_url = reverse('api:eigenschap-detail',
                                                 kwargs={
                                                     'version':
                                                     self.API_VERSION,
                                                     'catalogus_pk':
                                                     self.catalogus.pk,
                                                     'zaaktype_pk':
                                                     self.zaaktype.pk,
                                                     'pk':
                                                     self.eigenschap_one.pk
                                                 })
        self.eigenschap_two_detail_url = reverse('api:eigenschap-detail',
                                                 kwargs={
                                                     'version':
                                                     self.API_VERSION,
                                                     'catalogus_pk':
                                                     self.catalogus.pk,
                                                     'zaaktype_pk':
                                                     self.zaaktype.pk,
                                                     'pk':
                                                     self.eigenschap_two.pk
                                                 })
Пример #3
0
    def test_filter_eigenschap_status_alles(self):
        EigenschapFactory.create(zaaktype__concept=True)
        EigenschapFactory.create(zaaktype__concept=False)
        eigenschap_list_url = reverse("eigenschap-list")

        response = self.client.get(eigenschap_list_url, {"status": "alles"})
        self.assertEqual(response.status_code, 200)

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

        self.assertEqual(len(data), 2)
    def test_pagination_default(self):
        EigenschapFactory.create_batch(2, zaaktype__concept=False)
        eigenschap_list_url = reverse('eigenschap-list')

        response = self.client.get(eigenschap_list_url)

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

        response_data = response.json()
        self.assertEqual(response_data['count'], 2)
        self.assertIsNone(response_data['previous'])
        self.assertIsNone(response_data['next'])
Пример #5
0
    def test_pagination_page_param(self):
        EigenschapFactory.create_batch(2, zaaktype__concept=False)
        eigenschap_list_url = reverse("eigenschap-list")

        response = self.client.get(eigenschap_list_url, {"page": 1})

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

        response_data = response.json()
        self.assertEqual(response_data["count"], 2)
        self.assertIsNone(response_data["previous"])
        self.assertIsNone(response_data["next"])
    def test_filter_eigenschap_status_concept(self):
        eigenschap1 = EigenschapFactory.create(zaaktype__concept=True)
        eigenschap2 = EigenschapFactory.create(zaaktype__concept=False)
        eigenschap_list_url = reverse('eigenschap-list')
        eigenschap1_url = reverse('eigenschap-detail',
                                  kwargs={'uuid': eigenschap1.uuid})

        response = self.client.get(eigenschap_list_url, {'status': 'concept'})
        self.assertEqual(response.status_code, 200)

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

        self.assertEqual(len(data), 1)
        self.assertEqual(data[0]['url'], f'http://testserver{eigenschap1_url}')
Пример #7
0
    def test_filter_eigenschap_status_definitief(self):
        eigenschap1 = EigenschapFactory.create(zaaktype__concept=True)
        eigenschap2 = EigenschapFactory.create(zaaktype__concept=False)
        eigenschap_list_url = reverse("eigenschap-list")
        eigenschap2_url = reverse(
            "eigenschap-detail", kwargs={"uuid": eigenschap2.uuid}
        )

        response = self.client.get(eigenschap_list_url, {"status": "definitief"})
        self.assertEqual(response.status_code, 200)

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

        self.assertEqual(len(data), 1)
        self.assertEqual(data[0]["url"], f"http://testserver{eigenschap2_url}")
Пример #8
0
    def test_get_detail_reference(self):
        referentie = EigenschapReferentieFactory.create(
            x_path_element="x_path_element", namespace="namespace"
        )
        eigenschap = EigenschapFactory.create(
            eigenschapnaam="Aard product", referentie_naar_eigenschap=referentie
        )
        eigenschap_detail_url = reverse(
            "eigenschap-detail", kwargs={"uuid": eigenschap.uuid}
        )

        response = self.api_client.get(eigenschap_detail_url)

        self.assertEqual(response.status_code, 200)

        data = response.json()

        self.assertIsNone(data["specificatie"])
        self.assertEqual(
            data["referentie"],
            {
                "pathElement": "x_path_element",
                "informatiemodel": None,
                "namespace": "namespace",
                "entiteittype": "",
                "schemalocatie": "",
                "objecttype": None,
            },
        )
    def test_conditional_get_stale(self):
        eigenschap = EigenschapFactory.create(with_etag=True)

        response = self.client.get(reverse(eigenschap),
                                   HTTP_IF_NONE_MATCH=f'"not-an-md5"')

        self.assertEqual(response.status_code, status.HTTP_200_OK)
    def test_get_detail_reference(self):
        referentie = EigenschapReferentieFactory.create(
            x_path_element='x_path_element',
            namespace='namespace',
        )
        eigenschap = EigenschapFactory.create(
            eigenschapnaam='Aard product',
            referentie_naar_eigenschap=referentie)
        eigenschap_detail_url = reverse('eigenschap-detail',
                                        kwargs={'uuid': eigenschap.uuid})

        response = self.api_client.get(eigenschap_detail_url)

        self.assertEqual(response.status_code, 200)

        data = response.json()

        self.assertIsNone(data['specificatie'])
        self.assertEqual(
            data['referentie'],
            {
                'pathElement': 'x_path_element',
                'informatiemodel': None,
                'namespace': 'namespace',
                'entiteittype': '',
                'schemalocatie': '',
                'objecttype': None
            },
        )
    def test_get_detail(self):
        zaaktype = ZaakTypeFactory.create(catalogus=self.catalogus)
        zaaktype_url = reverse('zaaktype-detail',
                               kwargs={'uuid': zaaktype.uuid})
        specificatie = EigenschapSpecificatieFactory.create(
            kardinaliteit='1',
            lengte='1',
            groep='groep',
        )
        eigenschap = EigenschapFactory.create(
            eigenschapnaam='Beoogd product',
            zaaktype=zaaktype,
            specificatie_van_eigenschap=specificatie)
        eigenschap_detail_url = reverse('eigenschap-detail',
                                        kwargs={'uuid': eigenschap.uuid})

        response = self.api_client.get(eigenschap_detail_url)

        self.assertEqual(response.status_code, 200)

        expected = {
            'url': 'http://testserver{}'.format(eigenschap_detail_url),
            'naam': 'Beoogd product',
            'definitie': '',
            'specificatie': {
                'formaat': '',
                'groep': 'groep',
                'kardinaliteit': '1',
                'lengte': '1',
                'waardenverzameling': []
            },
            'toelichting': '',
            'zaaktype': 'http://testserver{}'.format(zaaktype_url),
        }
        self.assertEqual(expected, response.json())
Пример #12
0
    def test_update_eigenschap_add_relation_to_non_concept_zaaktype_fails(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        zaaktype_url = reverse(zaaktype)
        eigenschap = EigenschapFactory.create()
        eigenschap_url = reverse(eigenschap)

        data = {
            "naam": "aangepast",
            "definitie": "test",
            "toelichting": "",
            "zaaktype": zaaktype_url,
            "specificatie": {
                "groep": "test",
                "formaat": "tekst",
                "lengte": "5",
                "kardinaliteit": "1",
                "waardenverzameling": [],
            },
        }

        response = self.client.put(eigenschap_url, data)

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

        error = get_validation_errors(response, "nonFieldErrors")
        self.assertEqual(error["code"], ZaakTypeConceptValidator.code)
Пример #13
0
    def test_get_detail(self):
        zaaktype = ZaakTypeFactory.create(catalogus=self.catalogus)
        zaaktype_url = reverse("zaaktype-detail", kwargs={"uuid": zaaktype.uuid})
        specificatie = EigenschapSpecificatieFactory.create(
            kardinaliteit="1", lengte="1", groep="groep"
        )
        eigenschap = EigenschapFactory.create(
            eigenschapnaam="Beoogd product",
            zaaktype=zaaktype,
            specificatie_van_eigenschap=specificatie,
        )
        eigenschap_detail_url = reverse(
            "eigenschap-detail", kwargs={"uuid": eigenschap.uuid}
        )

        response = self.api_client.get(eigenschap_detail_url)

        self.assertEqual(response.status_code, 200)

        expected = {
            "url": "http://testserver{}".format(eigenschap_detail_url),
            "naam": "Beoogd product",
            "definitie": "",
            "specificatie": {
                "formaat": "",
                "groep": "groep",
                "kardinaliteit": "1",
                "lengte": "1",
                "waardenverzameling": [],
            },
            "toelichting": "",
            "zaaktype": "http://testserver{}".format(zaaktype_url),
        }
        self.assertEqual(expected, response.json())
Пример #14
0
    def test_delete_eigenschap(self):
        eigenschap = EigenschapFactory.create()
        eigenschap_url = reverse("eigenschap-detail", kwargs={"uuid": eigenschap.uuid})

        response = self.client.delete(eigenschap_url)

        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertFalse(Eigenschap.objects.filter(id=eigenschap.id))
Пример #15
0
    def test_partial_update_eigenschap(self):
        eigenschap = EigenschapFactory.create()
        eigenschap_url = reverse(eigenschap)

        response = self.client.patch(eigenschap_url, {"naam": "aangepast"})

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data["naam"], "aangepast")

        eigenschap.refresh_from_db()
        self.assertEqual(eigenschap.eigenschapnaam, "aangepast")
Пример #16
0
    def test_partial_update_eigenschap_fail_not_concept_zaaktype(self):
        zaaktype = ZaakTypeFactory.create(concept=False)
        eigenschap = EigenschapFactory.create(zaaktype=zaaktype)
        eigenschap_url = reverse(eigenschap)

        response = self.client.patch(eigenschap_url, {"naam": "aangepast"})

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

        error = get_validation_errors(response, "nonFieldErrors")
        self.assertEqual(error["code"], ZaakTypeConceptValidator.code)
Пример #17
0
    def test_delete_eigenschap_fail_not_concept_zaaktype(self):
        eigenschap = EigenschapFactory.create(zaaktype__concept=False)
        informatieobjecttypee_url = reverse(
            "eigenschap-detail", kwargs={"uuid": eigenschap.uuid}
        )

        response = self.client.delete(informatieobjecttypee_url)

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

        error = get_validation_errors(response, "nonFieldErrors")
        self.assertEqual(error["code"], "non-concept-zaaktype")
    def test_delete_eigenschap_fail_not_concept_zaaktype(self):
        eigenschap = EigenschapFactory.create(zaaktype__concept=False)
        informatieobjecttypee_url = reverse('eigenschap-detail',
                                            kwargs={'uuid': eigenschap.uuid})

        response = self.client.delete(informatieobjecttypee_url)

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

        data = response.json()
        self.assertEqual(data['detail'],
                         'Alleen concepten kunnen worden verwijderd.')
    def test_no_changes_gives_304(self):
        """
        Because no changes are made to the eigenschap, a code 304 should be
        returned
        """
        eigenschap = EigenschapFactory.create(toelichting="bla")
        eigenschap._etag = calculate_etag(eigenschap)
        eigenschap.save(update_fields=["_etag"])
        etag = eigenschap._etag

        response = self.client.get(reverse(eigenschap),
                                   HTTP_IF_NONE_MATCH=f'"{etag}"')
        self.assertEqual(response.status_code, status.HTTP_304_NOT_MODIFIED)
    def test_invalidate_etag_after_change(self):
        """
        Because changes are made to the eigenschap, a code 200 should be
        returned
        """
        eigenschap = EigenschapFactory.create(toelichting="bla",
                                              with_etag=True)
        eigenschap._etag = calculate_etag(eigenschap)
        eigenschap.save(update_fields=["_etag"])
        etag = eigenschap._etag

        eigenschap.toelichting = "same"
        eigenschap.save()

        response = self.client.get(reverse(eigenschap),
                                   HTTP_IF_NONE_MATCH=f'"{etag}"')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Пример #21
0
    def test_update_eigenschap(self):
        zaaktype = ZaakTypeFactory.create()
        zaaktype_url = reverse(zaaktype)
        specificatie = EigenschapSpecificatieFactory.create()
        eigenschap = EigenschapFactory.create(specificatie_van_eigenschap=specificatie)
        eigenschap_url = reverse(eigenschap)

        data = {
            "naam": "aangepast",
            "definitie": "test",
            "toelichting": "",
            "zaaktype": zaaktype_url,
            "specificatie": {
                "groep": "test",
                "formaat": "tekst",
                "lengte": "5",
                "kardinaliteit": "1",
                "waardenverzameling": [],
            },
        }

        response = self.client.put(eigenschap_url, data)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data["naam"], "aangepast")

        eigenschap.refresh_from_db()
        self.assertEqual(eigenschap.eigenschapnaam, "aangepast")

        specificatie = EigenschapSpecificatie.objects.get()
        self.assertEqual(specificatie, eigenschap.specificatie_van_eigenschap)

        self.assertEqual(specificatie.groep, "test")
        self.assertEqual(specificatie.formaat, "tekst")
        self.assertEqual(specificatie.lengte, "5")
        self.assertEqual(specificatie.kardinaliteit, "1")
        self.assertEqual(specificatie.waardenverzameling, [])
Пример #22
0
    def test_partial_update_eigenschap_specificatie(self):
        zaaktype = ZaakTypeFactory.create()
        zaaktype_url = reverse(zaaktype)
        specificatie = EigenschapSpecificatieFactory.create()
        eigenschap = EigenschapFactory.create()
        eigenschap_url = reverse(eigenschap)

        data = {
            "naam": "aangepast",
            "specificatie": {
                "groep": "test",
            },
        }

        response = self.client.patch(eigenschap_url, data)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data["naam"], "aangepast")

        eigenschap.refresh_from_db()
        self.assertEqual(eigenschap.eigenschapnaam, "aangepast")

        specificatie = eigenschap.specificatie_van_eigenschap
        self.assertEqual(specificatie.groep, "test")
    def test_list_eigenschappen(self):
        zaaktype = ZaakTypeFactory.create()

        eigenschap1 = EigenschapFactory.create(
            eigenschapnaam='objecttype',
            is_van=zaaktype,
            specificatie_van_eigenschap=EigenschapSpecificatieFactory.create(
                formaat=FormaatChoices.tekst,
                lengte=255,
                kardinaliteit='1',
                waardenverzameling=['boot', 'zwerfvuil']))

        EigenschapFactory.create(
            eigenschapnaam='boot.naam',
            is_van=zaaktype,
            specificatie_van_eigenschap=EigenschapSpecificatieFactory.create(
                groep='boot',
                formaat=FormaatChoices.tekst,
                lengte=255,
                kardinaliteit='1',
            ))

        EigenschapFactory.create(
            eigenschapnaam='boot.rederij',
            is_van=zaaktype,
            specificatie_van_eigenschap=EigenschapSpecificatieFactory.create(
                groep='boot',
                formaat=FormaatChoices.tekst,
                lengte=255,
                kardinaliteit='1',
            ))

        url = get_operation_url('eigenschap_list',
                                catalogus_uuid=zaaktype.catalogus.uuid,
                                zaaktype_uuid=zaaktype.uuid)

        response = self.client.get(url)

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

        self.assertEqual(len(response_data), 3)
        self.assertResponseTypes(
            response_data[0], {
                ('url', str),
                ('naam', str),
                ('definitie', str),
                ('specificatie', dict),
                ('toelichting', str),
                ('ingangsdatumObject', str),
                ('einddatumObject', type(None)),
                ('zaaktype', str),
            })

        eigenschap_objecttype = next(
            (eig for eig in response_data if eig['naam'] == 'objecttype'))

        zaaktype_url = get_operation_url(
            'zaaktype_read',
            catalogus_uuid=zaaktype.catalogus.uuid,
            uuid=zaaktype.uuid,
        )
        detail_url = get_operation_url(
            'eigenschap_read',
            catalogus_uuid=zaaktype.catalogus.uuid,
            zaaktype_uuid=zaaktype.uuid,
            uuid=eigenschap1.uuid,
        )
        self.assertEqual(
            eigenschap_objecttype, {
                'url':
                f'http://testserver{detail_url}',
                'naam':
                'objecttype',
                'definitie':
                '',
                'einddatumObject':
                None,
                'ingangsdatumObject':
                zaaktype.datum_begin_geldigheid.strftime("%Y-%m-%d"),
                'zaaktype':
                f'http://testserver{zaaktype_url}',
                'toelichting':
                '',
                'specificatie': {
                    'formaat': FormaatChoices.tekst,
                    'groep': '',
                    'kardinaliteit': '1',
                    'lengte': '255',
                    'waardenverzameling': [
                        'boot',
                        'zwerfvuil',
                    ]
                }
            })
    def test_conditional_get_304(self):
        eigenschap = EigenschapFactory.create(with_etag=True)
        response = self.client.get(reverse(eigenschap),
                                   HTTP_IF_NONE_MATCH=f'"{eigenschap._etag}"')

        self.assertEqual(response.status_code, status.HTTP_304_NOT_MODIFIED)
    def test_eigenschap_head_cache_header(self):
        eigenschap = EigenschapFactory.create()

        self.assertHeadHasETag(reverse(eigenschap))
    def test_eigenschap_get_cache_header(self):
        eigenschap = EigenschapFactory.create()

        response = self.client.get(reverse(eigenschap))

        self.assertHasETag(response)
Пример #27
0
    def test_list_eigenschappen(self):
        zaaktype = ZaakTypeFactory.create(concept=False)

        eigenschap1 = EigenschapFactory.create(
            eigenschapnaam="objecttype",
            zaaktype=zaaktype,
            specificatie_van_eigenschap=EigenschapSpecificatieFactory.create(
                formaat=FormaatChoices.tekst,
                lengte=255,
                kardinaliteit="1",
                waardenverzameling=["boot", "zwerfvuil"],
            ),
        )

        EigenschapFactory.create(
            eigenschapnaam="boot.naam",
            zaaktype=zaaktype,
            specificatie_van_eigenschap=EigenschapSpecificatieFactory.create(
                groep="boot",
                formaat=FormaatChoices.tekst,
                lengte=255,
                kardinaliteit="1",
            ),
        )

        EigenschapFactory.create(
            eigenschapnaam="boot.rederij",
            zaaktype=zaaktype,
            specificatie_van_eigenschap=EigenschapSpecificatieFactory.create(
                groep="boot",
                formaat=FormaatChoices.tekst,
                lengte=255,
                kardinaliteit="1",
            ),
        )

        url = get_operation_url(
            "eigenschap_list",
            catalogus_uuid=zaaktype.catalogus.uuid,
            zaaktype_uuid=zaaktype.uuid,
        )

        response = self.client.get(url)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        response_data = response.json()["results"]

        self.assertEqual(len(response_data), 3)
        self.assertResponseTypes(
            response_data[0],
            {
                ("url", str),
                ("naam", str),
                ("definitie", str),
                ("specificatie", dict),
                ("toelichting", str),
                ("zaaktype", str),
            },
        )

        eigenschap_objecttype = next(
            (eig for eig in response_data if eig["naam"] == "objecttype"))

        zaaktype_url = get_operation_url(
            "zaaktype_read",
            catalogus_uuid=zaaktype.catalogus.uuid,
            uuid=zaaktype.uuid)
        detail_url = get_operation_url(
            "eigenschap_read",
            catalogus_uuid=zaaktype.catalogus.uuid,
            zaaktype_uuid=zaaktype.uuid,
            uuid=eigenschap1.uuid,
        )
        self.assertEqual(
            eigenschap_objecttype,
            {
                "url": f"http://testserver{detail_url}",
                "naam": "objecttype",
                "definitie": "",
                "zaaktype": f"http://testserver{zaaktype_url}",
                "toelichting": "",
                "specificatie": {
                    "formaat": FormaatChoices.tekst,
                    "groep": "",
                    "kardinaliteit": "1",
                    "lengte": "255",
                    "waardenverzameling": ["boot", "zwerfvuil"],
                },
            },
        )