Skip to content

Commit

Permalink
Merge pull request #163 from open-zaak/issue/external-url-not-json
Browse files Browse the repository at this point in the history
fix external fk for non-JSON urls
  • Loading branch information
joeribekker committed Nov 5, 2019
2 parents 65a60ef + 514eb3a commit 1c4ac93
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
29 changes: 28 additions & 1 deletion src/openzaak/components/besluiten/tests/test_besluit_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
from rest_framework.test import APITestCase
from vng_api_common.tests import TypeCheckMixin, get_validation_errors, reverse

from openzaak.components.catalogi.tests.factories import BesluitTypeFactory
from openzaak.components.catalogi.tests.factories import (
BesluitTypeFactory,
CatalogusFactory,
)
from openzaak.components.documenten.tests.factories import (
EnkelvoudigInformatieObjectFactory,
)
Expand Down Expand Up @@ -215,3 +218,27 @@ def test_create_external_besluittype(self):
)

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

def test_create_external_besluittype_fail_bad_url(self):
url = reverse(Besluit)

response = self.client.post(
url,
{
"verantwoordelijke_organisatie": "517439943", # RSIN
"identificatie": "123123",
"besluittype": "http://example.com",
"datum": "2018-09-06",
"toelichting": "Vergunning verleend.",
"ingangsdatum": "2018-10-01",
"vervaldatum": "2018-11-01",
"vervalreden": VervalRedenen.tijdelijk,
},
)

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

error = get_validation_errors(response, "besluittype")
self.assertEqual(error["code"], "bad-url")
10 changes: 9 additions & 1 deletion src/openzaak/loaders.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import json

import requests
from django_loose_fk.loaders import BaseLoader, FetchError

Expand All @@ -18,4 +20,10 @@ def fetch_object(url: str) -> dict:
response.raise_for_status()
except requests.HTTPError as exc:
raise FetchError(exc.args[0]) from exc
return response.json()

try:
data = response.json()
except json.JSONDecodeError as exc:
raise FetchError(exc.args[0]) from exc

return data

0 comments on commit 1c4ac93

Please sign in to comment.