diff --git a/test/test_gap.py b/test/test_gap.py new file mode 100644 index 0000000000000000000000000000000000000000..c2a60279c3b66b0dd9d72b9a8eab49e48f3aca42 --- /dev/null +++ b/test/test_gap.py @@ -0,0 +1,81 @@ +from unittest.mock import patch, MagicMock + +from inventory_provider import gap + + +def test_get_token_endpoint(): + with patch('inventory_provider.gap.requests.get') as mock_get: + mock_response = MagicMock() + mock_response.json.return_value = {'token_endpoint': 'http://example.com/token'} + mock_response.raise_for_status = MagicMock() + mock_get.return_value = mock_response + + discovery_endpoint_url = 'http://example.com/aai' + token_endpoint = gap.get_token_endpoint(discovery_endpoint_url) + assert token_endpoint == 'http://example.com/token' + + +def test_get_token(): + with patch('inventory_provider.gap.requests.post') as mock_post, patch( + 'inventory_provider.gap.get_token_endpoint') as mock_get_token_endpoint: + mock_get_token_endpoint.return_value = 'http://example.com/token' + mock_response = MagicMock() + mock_response.json.return_value = {'access_token': 'test_token'} + mock_response.raise_for_status = MagicMock() + mock_post.return_value = mock_response + + aai_config = { + 'discovery_endpoint_url': 'http://example.com/aai', + 'inventory_provider': {'client_id': 'test_id', 'secret': 'test_secret'} + } + token = gap.get_token(aai_config) + assert token == 'test_token' + + +def test_extract_router_info(): + device = { + 'product': {'tag': 'RTR'}, + 'subscriptionId': 'test_subscription_id' + } + with patch('inventory_provider.gap.make_request') as mock_make_request: + mock_response = { + 'data': { + 'subscriptions': { + 'page': [{ + 'productBlockInstances': [{ + 'productBlockInstanceValues': [ + {'field': 'routerFqdn', 'value': 'test_fqdn'}, + {'field': 'vendor', 'value': 'test_vendor'} + ] + }] + }] + } + } + } + mock_make_request.return_value = mock_response + + router_info = gap.extract_router_info(device) + assert router_info == {'fqdn': 'test_fqdn', 'vendor': 'test_vendor'} + + +def test_load_routers_from_orchestrator(): + with patch('inventory_provider.gap.make_request') as mock_make_request, patch( + 'inventory_provider.gap.extract_router_info') as mock_extract_router_info: + mock_response = { + 'data': { + 'subscriptions': { + 'page': [ + {'subscriptionId': '1', 'product': {'tag': 'RTR'}}, + {'subscriptionId': '2', 'product': {'tag': 'OFFICE_ROUTER'}} + ] + } + } + } + mock_make_request.return_value = mock_response + mock_extract_router_info.side_effect = [ + {'fqdn': 'fqdn1', 'vendor': 'vendor1'}, + {'fqdn': 'fqdn2', 'vendor': 'vendor2'} + ] + + routers = gap.load_routers_from_orchestrator() + assert routers == {'fqdn1': 'vendor1', 'fqdn2': 'vendor2'}