Files
pygeoapi/tests/test_django.py
T
Peter Garnæs f092cf548e Django server: EDR sanity test (#1530)
* EDR queries without instance id works

Django URL's without instance IDs called a method requiring instance
IDs, resulting in a crash.

Instance ID defaults to None, which is also standard for the provider
that ultimately will be called.

Regression test added

* Use fixtures in django server tests

---------

Co-authored-by: Peter Garnæs <pga@dmi.dk>
2024-02-29 13:48:57 -05:00

42 lines
1.2 KiB
Python

from http import HTTPStatus
import sys
import os
from unittest import mock
import django
import pytest
from django.test import Client
from .util import get_test_file_path
@pytest.fixture
@mock.patch.dict(os.environ, {
"DJANGO_SETTINGS_MODULE": "django_.settings",
"PYGEOAPI_CONFIG": get_test_file_path('pygeoapi-test-config.yml'),
"PYGEOAPI_OPENAPI": get_test_file_path('pygeoapi-test-openapi.yml')
})
@mock.patch.object(sys, "path", sys.path + ["./pygeoapi"])
def django_():
django.setup()
return django
def test_django_landing_page_loads(django_):
response = Client(SERVER_NAME="localhost").get("/")
assert response.status_code == HTTPStatus.OK
assert response.json()["title"] == "pygeoapi default instance"
def test_django_edr_without_instance_id(django_):
edr_position_query = ("/collections/icoads-sst/position?coords="
"POINT(12.779895 55.783523)&f=json")
response = Client(SERVER_NAME="localhost").get(edr_position_query)
assert response.status_code == HTTPStatus.OK
# Validate CoverageJSON is returned
response_json = response.json()
assert response_json["type"] == "Coverage"
assert response_json["domain"]["domainType"] == "Grid"