1919 MockSnapshotView ,
2020 MockBenchmarkView ,
2121 MockBlueprintView ,
22+ MockGatewayConfigView ,
2223 MockNetworkPolicyView ,
2324 create_mock_httpx_response ,
2425)
3839 AsyncSnapshotOps ,
3940 AsyncBenchmarkOps ,
4041 AsyncBlueprintOps ,
42+ AsyncGatewayConfig ,
4143 AsyncNetworkPolicy ,
4244 AsyncStorageObject ,
45+ AsyncGatewayConfigOps ,
4346 AsyncNetworkPolicyOps ,
4447 AsyncStorageObjectOps ,
4548)
@@ -1313,6 +1316,81 @@ async def test_list_multiple(self, mock_async_client: AsyncMock) -> None:
13131316 mock_async_client .network_policies .list .assert_awaited_once ()
13141317
13151318
1319+ class TestAsyncGatewayConfigOps :
1320+ """Tests for AsyncGatewayConfigOps class."""
1321+
1322+ @pytest .mark .asyncio
1323+ async def test_create (self , mock_async_client : AsyncMock , gateway_config_view : MockGatewayConfigView ) -> None :
1324+ """Test create method."""
1325+ mock_async_client .gateway_configs .create = AsyncMock (return_value = gateway_config_view )
1326+
1327+ ops = AsyncGatewayConfigOps (mock_async_client )
1328+ gateway_config = await ops .create (
1329+ name = "test-gateway-config" ,
1330+ endpoint = "https://api.example.com" ,
1331+ auth_mechanism = {"type" : "bearer" },
1332+ )
1333+
1334+ assert isinstance (gateway_config , AsyncGatewayConfig )
1335+ assert gateway_config .id == "gwc_123"
1336+ mock_async_client .gateway_configs .create .assert_awaited_once ()
1337+
1338+ def test_from_id (self , mock_async_client : AsyncMock ) -> None :
1339+ """Test from_id method."""
1340+ ops = AsyncGatewayConfigOps (mock_async_client )
1341+ gateway_config = ops .from_id ("gwc_123" )
1342+
1343+ assert isinstance (gateway_config , AsyncGatewayConfig )
1344+ assert gateway_config .id == "gwc_123"
1345+
1346+ @pytest .mark .asyncio
1347+ async def test_list_empty (self , mock_async_client : AsyncMock ) -> None :
1348+ """Test list method with empty results."""
1349+ page = SimpleNamespace (gateway_configs = [])
1350+ mock_async_client .gateway_configs .list = AsyncMock (return_value = page )
1351+
1352+ ops = AsyncGatewayConfigOps (mock_async_client )
1353+ gateway_configs = await ops .list (limit = 10 )
1354+
1355+ assert len (gateway_configs ) == 0
1356+ mock_async_client .gateway_configs .list .assert_awaited_once ()
1357+
1358+ @pytest .mark .asyncio
1359+ async def test_list_single (self , mock_async_client : AsyncMock , gateway_config_view : MockGatewayConfigView ) -> None :
1360+ """Test list method with single result."""
1361+ page = SimpleNamespace (gateway_configs = [gateway_config_view ])
1362+ mock_async_client .gateway_configs .list = AsyncMock (return_value = page )
1363+
1364+ ops = AsyncGatewayConfigOps (mock_async_client )
1365+ gateway_configs = await ops .list (
1366+ limit = 10 ,
1367+ starting_after = "gwc_000" ,
1368+ )
1369+
1370+ assert len (gateway_configs ) == 1
1371+ assert isinstance (gateway_configs [0 ], AsyncGatewayConfig )
1372+ assert gateway_configs [0 ].id == "gwc_123"
1373+ mock_async_client .gateway_configs .list .assert_awaited_once ()
1374+
1375+ @pytest .mark .asyncio
1376+ async def test_list_multiple (self , mock_async_client : AsyncMock ) -> None :
1377+ """Test list method with multiple results."""
1378+ gateway_config_view1 = MockGatewayConfigView (id = "gwc_001" , name = "gateway-1" )
1379+ gateway_config_view2 = MockGatewayConfigView (id = "gwc_002" , name = "gateway-2" )
1380+ page = SimpleNamespace (gateway_configs = [gateway_config_view1 , gateway_config_view2 ])
1381+ mock_async_client .gateway_configs .list = AsyncMock (return_value = page )
1382+
1383+ ops = AsyncGatewayConfigOps (mock_async_client )
1384+ gateway_configs = await ops .list (limit = 10 )
1385+
1386+ assert len (gateway_configs ) == 2
1387+ assert isinstance (gateway_configs [0 ], AsyncGatewayConfig )
1388+ assert isinstance (gateway_configs [1 ], AsyncGatewayConfig )
1389+ assert gateway_configs [0 ].id == "gwc_001"
1390+ assert gateway_configs [1 ].id == "gwc_002"
1391+ mock_async_client .gateway_configs .list .assert_awaited_once ()
1392+
1393+
13161394class TestAsyncRunloopSDK :
13171395 """Tests for AsyncRunloopSDK class."""
13181396
@@ -1323,6 +1401,7 @@ def test_init(self) -> None:
13231401 assert isinstance (runloop .agent , AsyncAgentOps )
13241402 assert isinstance (runloop .benchmark , AsyncBenchmarkOps )
13251403 assert isinstance (runloop .devbox , AsyncDevboxOps )
1404+ assert isinstance (runloop .gateway_config , AsyncGatewayConfigOps )
13261405 assert isinstance (runloop .network_policy , AsyncNetworkPolicyOps )
13271406 assert isinstance (runloop .scorer , AsyncScorerOps )
13281407 assert isinstance (runloop .snapshot , AsyncSnapshotOps )
0 commit comments