Skip to main content
Glama

Agentic AI System with MCP Integration

test_exchange_rates.py6.19 kB
import os import pytest import requests from unittest.mock import patch from services.exchange_rates import ( get_exchange_rate, get_currency_time_series, get_digital_currency_exchange_rate, get_digital_currency_time_series ) @pytest.fixture def mock_env_key(): with patch.dict(os.environ, {"ALPHA_VANTAGE_KEY": "TEST_KEY"}): yield @patch('services.exchange_rates.requests.get') def test_get_exchange_rate_success(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {"Realtime Currency Exchange Rate": {"5. Exchange Rate": "1.10"}} data = get_exchange_rate('USD', 'EUR') assert data is not None assert "Realtime Currency Exchange Rate" in data assert "5. Exchange Rate" in data["Realtime Currency Exchange Rate"] mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_exchange_rate_failure(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.side_effect = requests.exceptions.RequestException("API Error") data = get_exchange_rate('USD', 'EUR') assert data is None mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_currency_time_series_success(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {"Meta Data": {}, "Time Series FX (Daily)": {"2025-04-11": {"1. open": "1.08"}}} data = get_currency_time_series('EUR', 'USD') assert data is not None assert "Meta Data" in data assert "Time Series FX (Daily)" in data assert "2025-04-11" in data["Time Series FX (Daily)"] mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_currency_time_series_failure(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.side_effect = requests.exceptions.RequestException("API Error") data = get_currency_time_series('EUR', 'USD') assert data is None mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_digital_currency_exchange_rate_success(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {"Realtime Currency Exchange Rate": {"5. Exchange Rate": "30000.00"}} data = get_digital_currency_exchange_rate('BTC', 'USD') assert data is not None assert "Realtime Currency Exchange Rate" in data assert "5. Exchange Rate" in data["Realtime Currency Exchange Rate"] mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_digital_currency_exchange_rate_failure(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.side_effect = requests.exceptions.RequestException("API Error") data = get_digital_currency_exchange_rate('BTC', 'USD') assert data is None mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_digital_currency_time_series_success(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {"Meta Data": {}, "Time Series (Digital Currency Daily)": {"2025-04-11": {"1a. open (USD)": "29500.00"}}} data = get_digital_currency_time_series('BTC', 'USD') assert data is not None assert "Meta Data" in data assert "Time Series (Digital Currency Daily)" in data assert "2025-04-11" in data["Time Series (Digital Currency Daily)"] mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_digital_currency_time_series_failure(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.side_effect = requests.exceptions.RequestException("API Error") data = get_digital_currency_time_series('BTC', 'USD') assert data is None mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_exchange_rate_empty_response(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {} data = get_exchange_rate('GBP', 'JPY') assert data is not None assert not data mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_currency_time_series_no_data(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {"Meta Data": {}, "Time Series FX (Daily)": {}} data = get_currency_time_series('CAD', 'AUD', interval='daily') assert data is not None assert "Meta Data" in data assert "Time Series FX (Daily)" in data assert not data["Time Series FX (Daily)"] mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_digital_currency_exchange_rate_invalid_market(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {} data = get_digital_currency_exchange_rate('ETH', 'INVALID') assert data is not None assert not data mock_get.assert_called_once() @patch('services.exchange_rates.requests.get') def test_get_digital_currency_time_series_weekly(mock_get, mock_env_key): mock_response = mock_get.return_value mock_response.raise_for_status.return_value = None mock_response.json.return_value = {"Meta Data": {}, "Time Series (Digital Currency Weekly)": {"2025-04-07": {"1a. open (USD)": "28000.00"}}} data = get_digital_currency_time_series('BTC', 'USD', interval='weekly') assert data is not None assert "Meta Data" in data assert "Time Series (Digital Currency Weekly)" in data assert "2025-04-07" in data["Time Series (Digital Currency Weekly)"] mock_get.assert_called_once()

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/pratyush-usc-mba/Designing-an-Agentic-AI-System-with-MCP-Integration'

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