Skip to main content
Glama
test_tools_lookup.py9.52 kB
import pytest from unittest.mock import patch, MagicMock import yaml from src.tools.lookup import rdm_lookups_list LOOKUP_TYPE = "rdm/lookupTypes/VistaVegetarianOrVegan" TENANT_ID = "test-tenant" @pytest.mark.asyncio class TestRdmLookupsList: """Test cases for the rdm_lookups_list function""" @patch("src.tools.lookup.ActivityLog.execute_and_log_activity") @patch("src.tools.lookup.yaml.dump") @patch("src.tools.lookup.http_request") @patch("src.tools.lookup.validate_connection_security") @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_success(self, mock_request, mock_url, mock_headers, mock_validate, mock_http, mock_dump, mock_activity_log): """Test successful lookup list retrieval""" # Mock the request model mock_request.return_value.lookup_type = LOOKUP_TYPE mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 10 mock_request.return_value.display_name_prefix = "" mock_url.return_value = f"https://reltio.com/lookups/list" mock_headers.return_value = {"Authorization": "Bearer token"} mock_http.return_value = [ {"id": "lookup1", "displayName": "Vegetarian", "value": "VEG"}, {"id": "lookup2", "displayName": "Vegan", "value": "VEGAN"} ] mock_dump.return_value = "yaml_output" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 10, "") assert result == "yaml_output" mock_activity_log.assert_called_once() mock_dump.assert_called_once() @patch("src.tools.lookup.ActivityLog.execute_and_log_activity") @patch("src.tools.lookup.yaml.dump") @patch("src.tools.lookup.http_request") @patch("src.tools.lookup.validate_connection_security") @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_with_prefix(self, mock_request, mock_url, mock_headers, mock_validate, mock_http, mock_dump, mock_activity_log): """Test lookup list retrieval with display name prefix""" # Mock the request model mock_request.return_value.lookup_type = LOOKUP_TYPE mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 5 mock_request.return_value.display_name_prefix = "Veg" mock_url.return_value = f"https://reltio.com/lookups/list" mock_headers.return_value = {"Authorization": "Bearer token"} mock_http.return_value = [ {"id": "lookup1", "displayName": "Vegetarian", "value": "VEG"} ] mock_dump.return_value = "yaml_output" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 5, "Veg") assert result == "yaml_output" mock_activity_log.assert_called_once() mock_dump.assert_called_once() @patch("src.tools.lookup.ActivityLog.execute_and_log_activity") @patch("src.tools.lookup.yaml.dump") @patch("src.tools.lookup.http_request") @patch("src.tools.lookup.validate_connection_security") @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_empty_result(self, mock_request, mock_url, mock_headers, mock_validate, mock_http, mock_dump, mock_activity_log): """Test lookup list retrieval with empty result""" # Mock the request model mock_request.return_value.lookup_type = LOOKUP_TYPE mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 10 mock_request.return_value.display_name_prefix = "" mock_url.return_value = f"https://reltio.com/lookups/list" mock_headers.return_value = {"Authorization": "Bearer token"} mock_http.return_value = [] mock_dump.return_value = "yaml_output" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 10, "") assert result == "yaml_output" mock_activity_log.assert_called_once() mock_dump.assert_called_once() @patch("src.tools.lookup.ActivityLog.execute_and_log_activity", side_effect=Exception("Logging failed")) @patch("src.tools.lookup.yaml.dump") @patch("src.tools.lookup.http_request") @patch("src.tools.lookup.validate_connection_security") @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_success_with_activity_log_failure(self, mock_request, mock_url, mock_headers, mock_validate, mock_http, mock_dump, mock_activity_log): """Test successful lookup list retrieval with activity logging failure""" # Mock the request model mock_request.return_value.lookup_type = LOOKUP_TYPE mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 10 mock_request.return_value.display_name_prefix = "" mock_url.return_value = f"https://reltio.com/lookups/list" mock_headers.return_value = {"Authorization": "Bearer token"} mock_http.return_value = [ {"id": "lookup1", "displayName": "Vegetarian", "value": "VEG"} ] mock_dump.return_value = "yaml_output" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 10, "") assert result == "yaml_output" mock_activity_log.assert_called_once() @patch("src.tools.lookup.LookupListRequest", side_effect=ValueError("Invalid lookup type")) async def test_rdm_lookups_list_validation_error(self, mock_request): """Test lookup list retrieval with validation error""" result = await rdm_lookups_list("invalid-lookup-type", TENANT_ID, 10, "") assert result["error"]["code_key"] == "VALIDATION_ERROR" @patch("src.tools.lookup.validate_connection_security", side_effect=Exception("Auth failed")) @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_authentication_error(self, mock_request, mock_url, mock_headers, mock_validate): """Test lookup list retrieval with authentication error""" # Mock the request model mock_request.return_value.lookup_type = LOOKUP_TYPE mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 10 mock_request.return_value.display_name_prefix = "" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 10, "") assert result["error"]["code_key"] == "AUTHENTICATION_ERROR" @patch("src.tools.lookup.http_request", side_effect=Exception("API error")) @patch("src.tools.lookup.validate_connection_security") @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_api_error(self, mock_request, mock_url, mock_headers, mock_validate, mock_http): """Test lookup list retrieval with API error""" # Mock the request model mock_request.return_value.lookup_type = LOOKUP_TYPE mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 10 mock_request.return_value.display_name_prefix = "" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 10, "") assert result["error"]["code_key"] == "SERVER_ERROR" @patch("src.tools.lookup.LookupListRequest", side_effect=Exception("Unexpected error")) async def test_rdm_lookups_list_unexpected_error(self, mock_request): """Test lookup list retrieval with unexpected error""" result = await rdm_lookups_list(LOOKUP_TYPE, TENANT_ID, 10, "") assert result["error"]["code_key"] == "SERVER_ERROR" @patch("src.tools.lookup.ActivityLog.execute_and_log_activity") @patch("src.tools.lookup.yaml.dump") @patch("src.tools.lookup.http_request") @patch("src.tools.lookup.validate_connection_security") @patch("src.tools.lookup.get_reltio_headers") @patch("src.tools.lookup.get_reltio_url") @patch("src.tools.lookup.LookupListRequest") async def test_rdm_lookups_list_all_lookup_type(self, mock_request, mock_url, mock_headers, mock_validate, mock_http, mock_dump, mock_activity_log): """Test lookup list retrieval with 'all' lookup type""" # Mock the request model mock_request.return_value.lookup_type = "all" mock_request.return_value.tenant_id = TENANT_ID mock_request.return_value.max_results = 10 mock_request.return_value.display_name_prefix = "" mock_url.return_value = f"https://reltio.com/lookups/list" mock_headers.return_value = {"Authorization": "Bearer token"} mock_http.return_value = [ {"id": "lookup1", "displayName": "Vegetarian", "value": "VEG"}, {"id": "lookup2", "displayName": "Vegan", "value": "VEGAN"} ] mock_dump.return_value = "yaml_output" result = await rdm_lookups_list("all", TENANT_ID, 10, "") assert result == "yaml_output" mock_activity_log.assert_called_once() mock_dump.assert_called_once()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reltio-ai/reltio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server