@@ -337,60 +337,70 @@ async def test_admin_tool_name_conflict(self, client: AsyncClient, mock_settings
337
337
class TestAdminResourceAPIs :
338
338
"""Test admin resource management endpoints."""
339
339
340
- async def test_admin_list_resources_empty (self , client : AsyncClient , mock_settings ):
341
- """Test GET /admin/resources returns empty list initially."""
342
- response = await client .get ("/admin/resources" , headers = TEST_AUTH_HEADER )
343
- assert response .status_code == 200
344
- assert response .json () == []
345
-
346
- async def test_admin_resource_lifecycle (self , client : AsyncClient , mock_settings ):
347
- """Test complete resource lifecycle through admin UI."""
348
- # Create a resource via form submission
340
+ async def test_admin_add_resource (self , client : AsyncClient , mock_settings ):
341
+ """Test adding a resource via the admin UI."""
349
342
form_data = {
350
- "uri" : "admin/test/resource" ,
351
- "name" : "test_admin_resource " ,
352
- "description" : "Test resource via admin " ,
343
+ "uri" : mock_settings . default_resource_uri ,
344
+ "name" : "Test Resource " ,
345
+ "description" : "A test resource " ,
353
346
"mimeType" : "text/plain" ,
354
- "content" : "Admin test content" ,
347
+ "content" : "Sample content" ,
355
348
}
356
-
357
- # POST to /admin/resources should redirect
358
- response = await client .post ("/admin/resources" , data = form_data , headers = TEST_AUTH_HEADER , follow_redirects = False )
359
- assert response .status_code == 303
360
-
361
- # List resources to verify creation
362
- response = await client .get ("/admin/resources" , headers = TEST_AUTH_HEADER )
363
- resources = response .json ()
364
- assert len (resources ) == 1
365
- resource = resources [0 ]
366
- assert resource ["name" ] == "test_admin_resource"
367
- resource_id = resource ["id" ]
368
-
369
- # Get individual resource
370
- encoded_uri = quote (form_data ["uri" ], safe = "" )
371
- response = await client .get (f"/admin/resources/{ encoded_uri } " , headers = TEST_AUTH_HEADER )
349
+ response = await client .post ("/admin/resources" , data = form_data , headers = TEST_AUTH_HEADER )
372
350
assert response .status_code == 200
373
- data = response .json ()
374
- assert "resource" in data
375
- assert "content " in data
351
+ result = response .json ()
352
+ assert result [ "success" ] is True
353
+ assert "message " in result and "Add resource registered successfully!" in result [ "message" ]
376
354
377
- # Edit resource
378
- edit_data = {
379
- "name" : "updated_admin_resource" ,
380
- "description " : "Updated description " ,
381
- "mimeType " : "text/markdown " ,
382
- "content" : "Updated admin content" ,
355
+ async def test_admin_add_resource_missing_fields ( self , client : AsyncClient , mock_settings ):
356
+ """Test adding a resource with missing required fields."""
357
+ form_data = {
358
+ "name " : "Test Resource1 " ,
359
+ "description " : "A test resource " ,
360
+ # Missing 'uri', 'mimeType', and 'content'
383
361
}
384
- response = await client .post (f"/admin/resources/{ encoded_uri } /edit" , data = edit_data , headers = TEST_AUTH_HEADER , follow_redirects = False )
385
- assert response .status_code == 303
386
-
387
- # Toggle resource status
388
- response = await client .post (f"/admin/resources/{ resource_id } /toggle" , data = {"activate" : "false" }, headers = TEST_AUTH_HEADER , follow_redirects = False )
389
- assert response .status_code == 303
390
-
391
- # Delete resource
392
- response = await client .post (f"/admin/resources/{ encoded_uri } /delete" , headers = TEST_AUTH_HEADER , follow_redirects = False )
393
- assert response .status_code == 303
362
+ response = await client .post ("/admin/resources" , data = form_data , headers = TEST_AUTH_HEADER )
363
+ assert response .status_code == 500
364
+ # result = response.json()
365
+ # assert result["success"] is False
366
+ # assert "error" in result
367
+
368
+ async def test_admin_add_resource_invalid_mime_type (self , client : AsyncClient , mock_settings ):
369
+ """Test adding a resource with an invalid MIME type."""
370
+ form_data = {
371
+ "uri" : mock_settings .default_resource_uri ,
372
+ "name" : "Test Resource" ,
373
+ "description" : "A test resource" ,
374
+ "mimeType" : "invalid/type" ,
375
+ "content" : "Sample content" ,
376
+ }
377
+ response = await client .post ("/admin/resources" , data = form_data , headers = TEST_AUTH_HEADER )
378
+ assert response .status_code == 422
379
+ # result = response.json()
380
+ # assert result["success"] is False
381
+ # assert "error" in result
382
+
383
+ async def test_admin_add_resource_duplicate_uri (self , client : AsyncClient , mock_settings ):
384
+ """Test adding a resource with a duplicate URI."""
385
+ form_data = {
386
+ "uri" : mock_settings .default_resource_uri ,
387
+ "name" : "Test Resource" ,
388
+ "description" : "A test resource" ,
389
+ "mimeType" : "text/plain" ,
390
+ "content" : "Sample content" ,
391
+ }
392
+ # Add the resource for the first time
393
+ response = await client .post ("/admin/resources" , data = form_data , headers = TEST_AUTH_HEADER )
394
+ assert response .status_code == 200
395
+ # result = response.json()
396
+ # assert result["success"] is True
397
+
398
+ # Try adding the same resource again
399
+ response = await client .post ("/admin/resources" , data = form_data , headers = TEST_AUTH_HEADER )
400
+ assert response .status_code == 409
401
+ # result = response.json()
402
+ # assert result["success"] is False
403
+ # assert "error" in result
394
404
395
405
396
406
# -------------------------
0 commit comments