66
77from deepset_mcp .api .client import AsyncDeepsetClient
88from deepset_mcp .api .exceptions import ResourceNotFoundError , UnexpectedAPIError
9- from deepset_mcp .api .secrets .models import Secret , SecretList
9+ from deepset_mcp .api .secrets .models import Secret
1010from deepset_mcp .api .secrets .resource import SecretResource
11- from deepset_mcp .api .shared_models import NoContentResponse
11+ from deepset_mcp .api .shared_models import NoContentResponse , PaginatedResponse
1212
1313pytestmark = pytest .mark .integration
1414
@@ -47,7 +47,7 @@ async def test_create_and_get_secret(
4747 assert create_result .success is True
4848
4949 # List secrets to find our created secret
50- secrets : SecretList = await secret_resource .list ()
50+ secrets : PaginatedResponse [ Secret ] = await secret_resource .list ()
5151
5252 # Find our secret in the list
5353 created_secret = None
@@ -96,7 +96,7 @@ async def test_list_secrets(secret_resource: SecretResource) -> None:
9696 break
9797
9898 # Test listing all secrets
99- all_secrets : SecretList = await secret_resource .list ()
99+ all_secrets : PaginatedResponse [ Secret ] = await secret_resource .list ()
100100 assert len (all_secrets .data ) >= 3
101101
102102 # Verify our created secrets are in the list
@@ -105,12 +105,12 @@ async def test_list_secrets(secret_resource: SecretResource) -> None:
105105 assert name in secret_names
106106
107107 # Test listing with limit
108- limited_secrets : SecretList = await secret_resource .list (limit = 2 )
108+ limited_secrets : PaginatedResponse [ Secret ] = await secret_resource .list (limit = 2 )
109109 assert len (limited_secrets .data ) <= 2
110110
111111 # Test with different sort order
112- asc_secrets : SecretList = await secret_resource .list (order = "ASC" )
113- desc_secrets : SecretList = await secret_resource .list (order = "DESC" )
112+ asc_secrets : PaginatedResponse [ Secret ] = await secret_resource .list (order = "ASC" )
113+ desc_secrets : PaginatedResponse [ Secret ] = await secret_resource .list (order = "DESC" )
114114
115115 # At least verify we got results (can't easily test order without knowing full dataset)
116116 assert len (asc_secrets .data ) >= 0
@@ -139,7 +139,7 @@ async def test_delete_secret(
139139 await secret_resource .create (name = test_secret_name , secret = test_secret_value )
140140
141141 # Find the created secret
142- secrets : SecretList = await secret_resource .list ()
142+ secrets : PaginatedResponse [ Secret ] = await secret_resource .list ()
143143 secret_to_delete = None
144144 for secret in secrets .data :
145145 if secret .name == test_secret_name :
@@ -196,3 +196,59 @@ async def test_delete_nonexistent_secret(secret_resource: SecretResource) -> Non
196196 # This is acceptable behavior for DELETE operations
197197 # API might return 404 or other error codes for nonexistent resources
198198 pass
199+
200+
201+ @pytest .mark .asyncio
202+ async def test_pagination_iteration (
203+ secret_resource : SecretResource ,
204+ ) -> None :
205+ """Test iterating over multiple pages of secrets using the async iterator."""
206+ # Create several test secrets
207+ test_secrets = [
208+ ("test-pagination-secret-1" , "value-1" ),
209+ ("test-pagination-secret-2" , "value-2" ),
210+ ("test-pagination-secret-3" , "value-3" ),
211+ ("test-pagination-secret-4" , "value-4" ),
212+ ("test-pagination-secret-5" , "value-5" ),
213+ ]
214+
215+ created_secret_ids = []
216+
217+ try :
218+ # Create test secrets
219+ for name , value in test_secrets :
220+ await secret_resource .create (name = name , secret = value )
221+ # Find the created secret ID for cleanup
222+ secrets = await secret_resource .list ()
223+ for secret in secrets .data :
224+ if secret .name == name and secret .secret_id not in created_secret_ids :
225+ created_secret_ids .append (secret .secret_id )
226+ break
227+
228+ # Get the first page with a small limit to ensure pagination
229+ paginator = await secret_resource .list (limit = 2 )
230+
231+ # Collect all secrets by iterating through pages
232+ all_secrets = []
233+ async for secret in paginator :
234+ all_secrets .append (secret )
235+
236+ # Verify we got at least our created secrets (might have more from other tests)
237+ assert len (all_secrets ) >= 5
238+
239+ # Verify all secrets are Secret instances
240+ for secret in all_secrets :
241+ assert isinstance (secret , Secret )
242+
243+ # Verify our created secrets are in the results
244+ retrieved_names = [s .name for s in all_secrets ]
245+ for name , _ in test_secrets :
246+ assert name in retrieved_names
247+
248+ finally :
249+ # Clean up created secrets
250+ for secret_id in created_secret_ids :
251+ try :
252+ await secret_resource .delete (secret_id )
253+ except Exception as e :
254+ print (f"Failed to delete test secret { secret_id } : { e } " )
0 commit comments