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'}