diff --git a/tests/files/setup_config_services_all_fields.yaml b/tests/files/setup_config_services_all_fields.yaml new file mode 100644 index 0000000..a7f7682 --- /dev/null +++ b/tests/files/setup_config_services_all_fields.yaml @@ -0,0 +1,20 @@ +zgw_consumers_config_enable: True +zgw_consumers: + services: + - identifier: objecten-test + label: Objecten API test + api_root: http://objecten.local/api/v1/ + api_connection_check_path: objects + api_type: orc + auth_type: api_key + header_key: Authorization + header_value: Token foo + client_id: client + secret: super-secret + nlx: http://some-outway-adress.local:8080/ + user_id: open-formulieren + user_representation: Open Formulieren + timeout: 5 + # NOT SUPPORTED YET + # client_certificatie: ... + # server_certificatie: ... \ No newline at end of file diff --git a/tests/files/setup_config_services_required_fields.yaml b/tests/files/setup_config_services_required_fields.yaml new file mode 100644 index 0000000..f742ace --- /dev/null +++ b/tests/files/setup_config_services_required_fields.yaml @@ -0,0 +1,7 @@ +zgw_consumers_config_enable: True +zgw_consumers: + services: + - identifier: objecten-test + label: Objecten API test + api_root: http://objecten.local/api/v1/ + api_type: orc diff --git a/tests/test_configuration_steps.py b/tests/test_configuration_steps.py index 2f46345..6144e98 100644 --- a/tests/test_configuration_steps.py +++ b/tests/test_configuration_steps.py @@ -1,11 +1,16 @@ import pytest from django_setup_configuration.test_utils import load_step_config_from_source +from zgw_consumers.constants import APITypes, AuthTypes from zgw_consumers.contrib.setup_configuration.steps import ServiceConfigurationStep from zgw_consumers.models import Service from zgw_consumers.test.factories import ServiceFactory CONFIG_FILE_PATH = "tests/files/setup_config_services.yaml" +CONFIG_FILE_PATH_REQUIRED_FIELDS = ( + "tests/files/setup_config_services_required_fields.yaml" +) +CONFIG_FILE_PATH_ALL_FIELDS = "tests/files/setup_config_services_all_fields.yaml" @pytest.fixture() @@ -28,8 +33,8 @@ def test_execute_configuration_step_success(step_config_model): assert objects_service.slug == "objecten-test" assert objects_service.label == "Objecten API test" assert objects_service.api_root == "http://objecten.local/api/v1/" - assert objects_service.api_type == "orc" - assert objects_service.auth_type == "api_key" + assert objects_service.api_type == APITypes.orc + assert objects_service.auth_type == AuthTypes.api_key assert objects_service.header_key == "Authorization" assert objects_service.header_value == "Token foo" assert objects_service.timeout == 10 @@ -37,8 +42,8 @@ def test_execute_configuration_step_success(step_config_model): assert zaken_service.slug == "zaken-test" assert zaken_service.label == "Zaken API test" assert zaken_service.api_root == "http://zaken.local/api/v1/" - assert zaken_service.api_type == "zrc" - assert zaken_service.auth_type == "zgw" + assert zaken_service.api_type == APITypes.zrc + assert zaken_service.auth_type == AuthTypes.zgw assert zaken_service.client_id == "client" assert zaken_service.secret == "super-secret" assert zaken_service.timeout == 10 @@ -69,3 +74,57 @@ def test_execute_configuration_step_update_existing(step_config_model): assert zaken_service.slug == "zaken-test" assert zaken_service.label == "Zaken API test" assert zaken_service.api_root == "http://zaken.local/api/v1/" + + +@pytest.mark.django_db +def test_execute_configuration_step_with_required_fields(): + step_config_model = load_step_config_from_source( + ServiceConfigurationStep, CONFIG_FILE_PATH_REQUIRED_FIELDS + ) + step = ServiceConfigurationStep() + + assert not step.is_configured(step_config_model) + + step.execute(step_config_model) + + assert Service.objects.count() == 1 + + objects_service = Service.objects.get() + + assert objects_service.slug == "objecten-test" + assert objects_service.label == "Objecten API test" + assert objects_service.api_root == "http://objecten.local/api/v1/" + assert objects_service.api_type == APITypes.orc + assert objects_service.auth_type == AuthTypes.zgw + assert objects_service.timeout == 10 + + +@pytest.mark.django_db +def test_execute_configuration_step_with_all_fields(): + step_config_model = load_step_config_from_source( + ServiceConfigurationStep, CONFIG_FILE_PATH_ALL_FIELDS + ) + step = ServiceConfigurationStep() + + assert not step.is_configured(step_config_model) + + step.execute(step_config_model) + + assert Service.objects.count() == 1 + + objects_service = Service.objects.get() + + assert objects_service.slug == "objecten-test" + assert objects_service.label == "Objecten API test" + assert objects_service.api_root == "http://objecten.local/api/v1/" + assert objects_service.api_type == APITypes.orc + assert objects_service.auth_type == AuthTypes.api_key + assert objects_service.api_connection_check_path == "objects" + assert objects_service.header_key == "Authorization" + assert objects_service.header_value == "Token foo" + assert objects_service.client_id == "client" + assert objects_service.secret == "super-secret" + assert objects_service.nlx == "http://some-outway-adress.local:8080/" + assert objects_service.user_id == "open-formulieren" + assert objects_service.user_representation == "Open Formulieren" + assert objects_service.timeout == 5