From f972109eae08fed551249ddcddc78257b9796ab3 Mon Sep 17 00:00:00 2001 From: Paul Schilling Date: Mon, 4 Dec 2023 12:27:39 +0100 Subject: [PATCH] [#1890] Require API root for KvK config --- src/open_inwoner/contrib/kvk/client.py | 5 +++- .../0002_alter_kvkconfig_api_root.py | 22 ++++++++++++++++++ src/open_inwoner/contrib/kvk/models.py | 1 - .../contrib/kvk/tests/test_api.py | 23 +++++++++++++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/open_inwoner/contrib/kvk/migrations/0002_alter_kvkconfig_api_root.py diff --git a/src/open_inwoner/contrib/kvk/client.py b/src/open_inwoner/contrib/kvk/client.py index 614b66a3d4..4c29667975 100644 --- a/src/open_inwoner/contrib/kvk/client.py +++ b/src/open_inwoner/contrib/kvk/client.py @@ -34,7 +34,10 @@ def _build_request_kwargs(self) -> dict: return request_kwargs - def _request(self, endpoint: str, params: dict) -> list: + def _request(self, endpoint: str, params: dict) -> dict: + if not self.config or not self.config.api_root: + return {} + url = self._build_url(endpoint, params=params) request_kwargs = self._build_request_kwargs() diff --git a/src/open_inwoner/contrib/kvk/migrations/0002_alter_kvkconfig_api_root.py b/src/open_inwoner/contrib/kvk/migrations/0002_alter_kvkconfig_api_root.py new file mode 100644 index 0000000000..f8515354a7 --- /dev/null +++ b/src/open_inwoner/contrib/kvk/migrations/0002_alter_kvkconfig_api_root.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.20 on 2023-12-04 12:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("kvk", "0001_initial"), + ] + + operations = [ + migrations.AlterField( + model_name="kvkconfig", + name="api_root", + field=models.URLField( + help_text="The root of the API (e.g. https://api.kvk.nl/api/v1)", + max_length=128, + verbose_name="API root", + ), + ), + ] diff --git a/src/open_inwoner/contrib/kvk/models.py b/src/open_inwoner/contrib/kvk/models.py index 47ff4b3f88..c648e658a7 100644 --- a/src/open_inwoner/contrib/kvk/models.py +++ b/src/open_inwoner/contrib/kvk/models.py @@ -11,7 +11,6 @@ class KvKConfig(SingletonModel): api_root = models.URLField( verbose_name=_("API root"), max_length=128, - blank=True, help_text=_("The root of the API (e.g. https://api.kvk.nl/api/v1)"), ) api_key = models.CharField( diff --git a/src/open_inwoner/contrib/kvk/tests/test_api.py b/src/open_inwoner/contrib/kvk/tests/test_api.py index 37e831a6bd..0481a43dec 100644 --- a/src/open_inwoner/contrib/kvk/tests/test_api.py +++ b/src/open_inwoner/contrib/kvk/tests/test_api.py @@ -94,6 +94,29 @@ def test_search_by_kvk_extra_params(self): }, ) + def test_no_search_without_config(self): + config = None + kvk_client = KvKClient(config) + + company = kvk_client.search(kvk="69599084") + + self.assertEqual(company, {}) + + def test_no_search_with_empty_api_root(self): + """Sentry 343407""" + + config = KvKConfig( + api_root="", + api_key="12345", + client_certificate=CLIENT_CERT, + server_certificate=SERVER_CERT, + ) + kvk_client = KvKClient(config) + + company = kvk_client.search(kvk="69599084") + + self.assertEqual(company, {}) + # # requests interface #