Skip to content

Commit 5b529dd

Browse files
committed
👌 [#458] PR Feedback
1 parent 41c8695 commit 5b529dd

File tree

5 files changed

+31
-58
lines changed

5 files changed

+31
-58
lines changed

backend/requirements/base.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ elastic-apm # Elastic APM integration
3636
celery
3737

3838
# Additional libraries
39-
zgw-consumers[setup-configuration] @ git+https://github.com/maykinmedia/zgw-consumers@feature/django-setup-configuration#egg=zgw-consumers
39+
zgw-consumers[setup-configuration]
4040
furl
4141
python-slugify
4242
XlsxWriter
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,11 @@
11
from django_setup_configuration import BaseConfigurationStep
2+
from django_setup_configuration.exceptions import ConfigurationRunFailed
23
from zgw_consumers.models import Service
34

45
from ..models import APIConfig
56
from .models import APIConfigConfigurationModel
67

78

8-
def get_service(slug: str) -> Service:
9-
"""
10-
Try to find a Service and re-raise DoesNotExist with the identifier to make debugging
11-
easier
12-
"""
13-
try:
14-
return Service.objects.get(slug=slug)
15-
except Service.DoesNotExist as e:
16-
raise Service.DoesNotExist(f"{str(e)} (identifier = {slug})")
17-
18-
199
class APIConfigConfigurationStep(BaseConfigurationStep[APIConfigConfigurationModel]):
2010
"""Configure API settings"""
2111

@@ -25,16 +15,16 @@ class APIConfigConfigurationStep(BaseConfigurationStep[APIConfigConfigurationMod
2515
verbose_name = "API Configuration"
2616

2717
def execute(self, model: APIConfigConfigurationModel) -> None:
28-
service = get_service(model.selectielijst_service_identifier)
29-
3018
config = APIConfig.get_solo()
3119

32-
# Idempotent configuration
33-
if (
34-
config.selectielijst_api_service
35-
and service.pk == config.selectielijst_api_service.pk
36-
):
37-
return
38-
39-
config.selectielijst_api_service = service
40-
config.save()
20+
try:
21+
config.selectielijst_api_service = Service.objects.get(
22+
slug=model.selectielijst_service_identifier
23+
)
24+
except Service.DoesNotExist:
25+
raise ConfigurationRunFailed(
26+
f"Could not find an existing `selectielijst` service with identifier `{model.selectielijst_service_identifier}`."
27+
" Make sure it is already configured, manually or by first running the configuration step of `zgw_consumers`."
28+
)
29+
30+
config.save(update_fields=["selectielijst_api_service"])

backend/src/openarchiefbeheer/config/setup_configuration/tests/files/setup_config_api_different_service.yaml

-3
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
from pathlib import Path
2-
from unittest.mock import Mock, patch
32

43
from django.core.cache import cache
54
from django.test import TestCase
65

6+
from django_setup_configuration.exceptions import ConfigurationRunFailed
77
from django_setup_configuration.test_utils import execute_single_step
88
from zgw_consumers.constants import APITypes
9-
from zgw_consumers.models import Service
109
from zgw_consumers.test.factories import ServiceFactory
1110

1211
from ...models import APIConfig
1312
from ..steps import APIConfigConfigurationStep
1413

1514
TEST_FILES = (Path(__file__).parent / "files").resolve()
16-
CONFIG_FILE_PATH_1 = str(TEST_FILES / "setup_config_api.yaml")
17-
CONFIG_FILE_PATH_2 = str(TEST_FILES / "setup_config_api_different_service.yaml")
15+
CONFIG_FILE_PATH = str(TEST_FILES / "setup_config_api.yaml")
1816

1917

2018
class APIConfigConfigurationStepTests(TestCase):
@@ -29,10 +27,13 @@ def test_configure_api_config_create_new(self):
2927
api_type=APITypes.orc,
3028
api_root="https://selectielijst.openzaak.nl/api/v1/",
3129
)
30+
config = APIConfig.get_solo()
3231

33-
execute_single_step(APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH_1)
32+
self.assertIsNone(config.selectielijst_api_service)
3433

35-
config = APIConfig.get_solo()
34+
execute_single_step(APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH)
35+
36+
config.refresh_from_db()
3637

3738
self.assertEqual(service.pk, config.selectielijst_api_service.pk)
3839

@@ -48,36 +49,22 @@ def test_configure_api_config_update_existing(self):
4849
config.selectielijst_api_service = service1
4950
config.save()
5051

51-
execute_single_step(APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH_2)
52+
execute_single_step(
53+
APIConfigConfigurationStep,
54+
object_source={
55+
"api_configuration_enabled": True,
56+
"api_configuration": {
57+
"selectielijst_service_identifier": "selectielijst-new"
58+
},
59+
},
60+
)
5261

5362
config.refresh_from_db()
5463

5564
self.assertEqual(service2.pk, config.selectielijst_api_service.pk)
5665

5766
def test_configure_api_config_missing_service(self):
58-
with self.assertRaises(Service.DoesNotExist):
67+
with self.assertRaises(ConfigurationRunFailed):
5968
execute_single_step(
60-
APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH_1
69+
APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH
6170
)
62-
63-
def test_idempotency(self):
64-
service = ServiceFactory(
65-
slug="selectielijst",
66-
api_type=APITypes.orc,
67-
api_root="https://selectielijst.openzaak.nl/api/v1/",
68-
)
69-
70-
execute_single_step(APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH_1)
71-
72-
mock = Mock()
73-
config = APIConfig(selectielijst_api_service=service)
74-
with patch.object(config, "save", new=mock.method):
75-
with patch(
76-
"openarchiefbeheer.config.setup_configuration.steps.APIConfig.get_solo",
77-
return_value=config,
78-
):
79-
execute_single_step(
80-
APIConfigConfigurationStep, yaml_source=CONFIG_FILE_PATH_1
81-
)
82-
83-
mock.method.assert_not_called()

docker-compose.yml

-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ services:
6767
depends_on:
6868
- db
6969
- redis
70-
- web
7170
networks:
7271
- open-archiefbeheer-dev
7372

0 commit comments

Comments
 (0)