cred_db_mcp / tests /test_cred_db_mcp_server.py
google-labs-jules[bot]
Implement cred_db_mcp_server as a Gradio MCP proxy to CRED_API
8e07f8c
import pytest
from unittest.mock import patch, MagicMock
from cred_db_mcp_server.tools import (
sync_provider_from_npi,
add_or_update_credential,
list_expiring_credentials,
get_provider_snapshot
)
import httpx
# Mock response data
MOCK_PROVIDER = {"id": 1, "npi": "1234567890", "name": "Dr. Test"}
MOCK_CREDENTIAL = {
"id": 10,
"provider_id": 1,
"type": "Medical License",
"issuer": "State Board",
"number": "MD12345",
"expiry_date": "2025-01-01"
}
MOCK_EXPIRING_LIST = [
{
"provider": MOCK_PROVIDER,
"credential": MOCK_CREDENTIAL,
"days_to_expiry": 30,
"risk_score": 0.5
}
]
MOCK_SNAPSHOT = {
"provider": MOCK_PROVIDER,
"credentials": [MOCK_CREDENTIAL],
"alerts": []
}
@patch("cred_db_mcp_server.tools.httpx.Client")
def test_sync_provider_from_npi(mock_client_cls):
mock_client = MagicMock()
mock_client_cls.return_value.__enter__.return_value = mock_client
mock_client.post.return_value.status_code = 200
mock_client.post.return_value.json.return_value = MOCK_PROVIDER
result = sync_provider_from_npi("1234567890")
assert result == MOCK_PROVIDER
mock_client.post.assert_called_once()
assert "sync_from_npi" in mock_client.post.call_args[0][0]
@patch("cred_db_mcp_server.tools.httpx.Client")
def test_add_or_update_credential(mock_client_cls):
mock_client = MagicMock()
mock_client_cls.return_value.__enter__.return_value = mock_client
mock_client.post.return_value.status_code = 200
mock_client.post.return_value.json.return_value = MOCK_CREDENTIAL
result = add_or_update_credential(1, "Medical License", "State Board", "MD12345", "2025-01-01")
assert result == MOCK_CREDENTIAL
mock_client.post.assert_called_once()
assert "add_or_update" in mock_client.post.call_args[0][0]
@patch("cred_db_mcp_server.tools.httpx.Client")
def test_list_expiring_credentials(mock_client_cls):
mock_client = MagicMock()
mock_client_cls.return_value.__enter__.return_value = mock_client
mock_client.post.return_value.status_code = 200
mock_client.post.return_value.json.return_value = MOCK_EXPIRING_LIST
result = list_expiring_credentials(30)
assert result == MOCK_EXPIRING_LIST
mock_client.post.assert_called_once()
assert "expiring" in mock_client.post.call_args[0][0]
@patch("cred_db_mcp_server.tools.httpx.Client")
def test_get_provider_snapshot(mock_client_cls):
mock_client = MagicMock()
mock_client_cls.return_value.__enter__.return_value = mock_client
mock_client.post.return_value.status_code = 200
mock_client.post.return_value.json.return_value = MOCK_SNAPSHOT
result = get_provider_snapshot(provider_id=1)
assert result == MOCK_SNAPSHOT
mock_client.post.assert_called_once()
assert "snapshot" in mock_client.post.call_args[0][0]
def test_get_provider_snapshot_no_args():
result = get_provider_snapshot()
assert "error" in result