Spaces:
Sleeping
Sleeping
| 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": [] | |
| } | |
| 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] | |
| 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] | |
| 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] | |
| 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 | |