Skip to content

Commit 5b74014

Browse files
committed
fix API deletion on not found items in backend
1 parent 2bcb9ba commit 5b74014

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

pygeoapi/api/itemtypes.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@
5959
from pygeoapi.openapi import get_oas_30_parameters
6060
from pygeoapi.plugin import load_plugin, PLUGINS
6161
from pygeoapi.provider.base import (
62-
ProviderGenericError, ProviderTypeError, SchemaType)
62+
ProviderGenericError, ProviderItemNotFoundError,
63+
ProviderTypeError, SchemaType)
6364

6465
from pygeoapi.util import (filter_providers_by_type, to_json,
6566
filter_dict_by_key_value, str2bool,
@@ -834,6 +835,13 @@ def manage_collection_item(
834835

835836
if action == 'delete':
836837
LOGGER.debug('Deleting item')
838+
try:
839+
_ = p.get(identifier)
840+
except ProviderItemNotFoundError as err:
841+
return api.get_exception(
842+
err.http_status_code, headers, request.format,
843+
err.ogc_exception_code, err.message)
844+
837845
try:
838846
_ = p.delete(identifier)
839847
except ProviderGenericError as err:

tests/provider/test_postgresql_provider.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,13 @@ def test_transaction_basic_workflow(pg_api_, data):
892892
identifier=123)
893893
assert code == HTTPStatus.OK
894894

895+
# delete again (item should not be in backend)
896+
req = mock_api_request(data=data)
897+
headers, code, content = manage_collection_item(
898+
pg_api_, req, action='delete', dataset='hot_osm_waterways',
899+
identifier=123)
900+
assert code == HTTPStatus.BAD_REQUEST
901+
895902

896903
def test_transaction_create_handles_invalid_input_data(pg_api_, data):
897904
data_parsed = json.loads(data)

0 commit comments

Comments
 (0)