@@ -184,3 +184,88 @@ async def test_context_update_and_patch(subtests):
184184
185185 with subtests .test ("exceed metadata size" ), pytest .raises (HTTPStatusError ):
186186 await context .patch_metadata (metadata = {str (i ): str (i ) for i in range (15 )})
187+
188+
189+ @pytest .mark .usefixtures ("clean_up" , "setup_platform_client" )
190+ async def test_context_provider_filtering (subtests ):
191+ """Test creating contexts with provider_id and filtering by provider_id."""
192+ from a2a .types import AgentCapabilities , AgentCard
193+ from beeai_sdk .platform import Provider
194+
195+ provider1 = None
196+ provider2 = None
197+ context_with_provider1 = None
198+ context_with_provider2 = None
199+ context_without_provider = None
200+
201+ with subtests .test ("create dummy providers" ):
202+ # Create first dummy provider with network URL
203+ agent_card1 = AgentCard (
204+ name = "Test Provider 1" ,
205+ description = "First test provider" ,
206+ url = "http://localhost:9001/" ,
207+ version = "1.0.0" ,
208+ default_input_modes = ["text" ],
209+ default_output_modes = ["text" ],
210+ capabilities = AgentCapabilities (),
211+ skills = [],
212+ )
213+ provider1 = await Provider .create (location = "http://localhost:9001" , agent_card = agent_card1 )
214+ assert provider1 .id is not None
215+
216+ # Create second dummy provider with network URL
217+ agent_card2 = AgentCard (
218+ name = "Test Provider 2" ,
219+ description = "Second test provider" ,
220+ url = "http://localhost:9002/" ,
221+ version = "1.0.0" ,
222+ default_input_modes = ["text" ],
223+ default_output_modes = ["text" ],
224+ capabilities = AgentCapabilities (),
225+ skills = [],
226+ )
227+ provider2 = await Provider .create (location = "http://localhost:9002" , agent_card = agent_card2 )
228+ assert provider2 .id is not None
229+ assert provider1 .id != provider2 .id
230+
231+ with subtests .test ("create contexts with and without provider_id" ):
232+ # Create context associated with provider1
233+ context_with_provider1 = await Context .create (metadata = {"name" : "context_provider1" }, provider_id = provider1 .id )
234+ assert context_with_provider1 .provider_id == provider1 .id
235+
236+ # Create context associated with provider2
237+ context_with_provider2 = await Context .create (metadata = {"name" : "context_provider2" }, provider_id = provider2 .id )
238+ assert context_with_provider2 .provider_id == provider2 .id
239+
240+ # Create context without provider
241+ context_without_provider = await Context .create (metadata = {"name" : "context_no_provider" })
242+ assert context_without_provider .provider_id is None
243+
244+ with subtests .test ("list all contexts without filter" ):
245+ all_contexts = await Context .list ()
246+ assert len (all_contexts .items ) == 3
247+ context_ids = [ctx .id for ctx in all_contexts .items ]
248+ assert context_with_provider1 .id in context_ids
249+ assert context_with_provider2 .id in context_ids
250+ assert context_without_provider .id in context_ids
251+
252+ with subtests .test ("filter contexts by provider1" ):
253+ provider1_contexts = await Context .list (provider_id = provider1 .id )
254+ assert len (provider1_contexts .items ) == 1
255+ assert provider1_contexts .items [0 ].id == context_with_provider1 .id
256+ assert provider1_contexts .items [0 ].provider_id == provider1 .id
257+
258+ with subtests .test ("filter contexts by provider2" ):
259+ provider2_contexts = await Context .list (provider_id = provider2 .id )
260+ assert len (provider2_contexts .items ) == 1
261+ assert provider2_contexts .items [0 ].id == context_with_provider2 .id
262+ assert provider2_contexts .items [0 ].provider_id == provider2 .id
263+
264+ with subtests .test ("filter by non-existent provider returns empty list" ):
265+ nonexistent_provider_id = str (uuid .uuid4 ())
266+ no_contexts = await Context .list (provider_id = nonexistent_provider_id )
267+ assert len (no_contexts .items ) == 0
268+
269+ with subtests .test ("get context includes provider_id" ):
270+ fetched_context = await Context .get (context_with_provider1 .id )
271+ assert fetched_context .provider_id == provider1 .id
0 commit comments