diff --git a/pyegeria/omvs/data_discovery.py b/pyegeria/omvs/data_discovery.py index 07cc9f63..b3bf4338 100644 --- a/pyegeria/omvs/data_discovery.py +++ b/pyegeria/omvs/data_discovery.py @@ -1725,7 +1725,7 @@ def delete_analysis_report(self, report_guid: str, body: Optional[dict | DeleteE async def _async_get_analysis_reports_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str: """Get analysis reports by name. Async version.""" url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/analysis-reports/by-name" - return await self._async_get_name_request(url, _type="AnalysisReport", _gen_output=self._generate_annotation_output, name=name, start_from=start_from, page_size=page_size, **kwargs) + return await self._async_get_name_request(url, _type="AnalysisReport", _gen_output=self._generate_annotation_output, filter_string=name, start_from=start_from, page_size=page_size, **kwargs) def get_analysis_reports_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str: """Get analysis reports by name.""" diff --git a/pyegeria/omvs/schema_maker.py b/pyegeria/omvs/schema_maker.py index 42a7997c..49b9ffa3 100644 --- a/pyegeria/omvs/schema_maker.py +++ b/pyegeria/omvs/schema_maker.py @@ -486,7 +486,7 @@ def create_schema_attribute_from_template(self, body: dict | TemplateRequestBody async def _async_get_schema_types_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str: """Get schema types by name. Async version.""" url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types/by-name" - return await self._async_get_name_request(url, _type="SchemaType", _gen_output=self._generate_schema_output, name=name, start_from=start_from, page_size=page_size, **kwargs) + return await self._async_get_name_request(url, _type="SchemaType", _gen_output=self._generate_schema_output, filter_string=name, start_from=start_from, page_size=page_size, **kwargs) def get_schema_types_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str: """Get schema types by name.""" @@ -497,7 +497,7 @@ def get_schema_types_by_name(self, name: str, start_from: int = 0, page_size: in async def _async_get_schema_attributes_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str: """Get schema attributes by name. Async version.""" url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-attributes/by-name" - return await self._async_get_name_request(url, _type="SchemaAttribute", _gen_output=self._generate_schema_output, name=name, start_from=start_from, page_size=page_size, **kwargs) + return await self._async_get_name_request(url, _type="SchemaAttribute", _gen_output=self._generate_schema_output, filter_string=name, start_from=start_from, page_size=page_size, **kwargs) def get_schema_attributes_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str: """Get schema attributes by name.""" diff --git a/tests/micro-tests/test_get_by_name_filter_string.py b/tests/micro-tests/test_get_by_name_filter_string.py new file mode 100644 index 00000000..2bb30938 --- /dev/null +++ b/tests/micro-tests/test_get_by_name_filter_string.py @@ -0,0 +1,39 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright Contributors to the ODPi Egeria project. +""" +The shared _async_get_name_request helper takes the name to match as +``filter_string``. Callers that passed it as ``name=`` put it in **kwargs +instead, so the request went out with a null filter and Egeria rejected it +(OPEN-METADATA-400-004 ... getSchemaTypesByName ... is null). Confirmed live +for SchemaMaker.get_schema_types_by_name. +""" +from typing import Any, cast + +import pytest + +from pyegeria.omvs.data_discovery import DataDiscovery +from pyegeria.omvs.schema_maker import SchemaMaker + + +@pytest.mark.asyncio +@pytest.mark.parametrize("cls, method", [ + (SchemaMaker, "_async_get_schema_types_by_name"), + (SchemaMaker, "_async_get_schema_attributes_by_name"), + (DataDiscovery, "_async_get_analysis_reports_by_name"), +]) +async def test_name_is_sent_as_filter_string(cls, method): + captured = {} + + async def fake_get_name_request(url, **kwargs): + captured.update(kwargs) + return [] + + client = cls.__new__(cls) + client.platform_url = "https://localhost:9443" + client.view_server = "qs-view-server" + client._async_get_name_request = fake_get_name_request + + await getattr(cls, method)(cast(Any, client), "QN::Example") + + assert captured["filter_string"] == "QN::Example" + assert "name" not in captured