import json from typing import Tuple import pytest from _pytest.monkeypatch import MonkeyPatch from pytest_mock import MockerFixture from owslib.enums import Environment from owslib.services import discover_service_url, get_dev_service_mapping @pytest.mark.parametrize( "environment, service_name, expected", [ ( Environment.QA, "ows-permissions", (Environment.QA, "https://qa-ows-permissions.theorchard.io"), ), ( Environment.PROD, "ows-permissions", (Environment.PROD, "https://prod-ows-permissions.theorchard.io"), ), ( Environment.DEV, "ows-dmp", (Environment.QA, "https://qa-ows-dmp.theorchard.io"), ), ], ) def test_discover_service_url( environment: Environment, service_name: str, expected: Tuple[Environment, str] ) -> None: service_url = discover_service_url(environment, service_name) assert service_url == expected def test_get_dev_service_mapping( monkeypatch: MonkeyPatch, ) -> None: service_mapping = { "ows-dmp": "http://localhost:5001", } monkeypatch.setenv("OWSREQUEST_SERVICE_MAP", json.dumps(service_mapping)) assert get_dev_service_mapping() == service_mapping def test_get_dev_service_mapping_empty( monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setenv("OWSREQUEST_SERVICE_MAP", "") assert get_dev_service_mapping() == {} def test_get_dev_service_mapping_invalid( monkeypatch: MonkeyPatch, ) -> None: monkeypatch.setenv("OWSREQUEST_SERVICE_MAP", "invalid") assert get_dev_service_mapping() == {} def test_discover_service_url_dev(mocker: MockerFixture) -> None: mocker.patch( "owslib.services.dev_service_mapping", new={ "ows-dmp": "http://localhost:5001", }, ) environment, service_url = discover_service_url(Environment.DEV, "ows-dmp") assert environment == Environment.DEV assert service_url == "http://localhost:5001"