@@ -589,6 +589,43 @@ def test_subscribe_resource_events(self, mock_subscribe, test_client, auth_heade
589
589
# Prompt Management Tests #
590
590
# ----------------------------------------------------- #
591
591
class TestPromptEndpoints :
592
+ @patch ("mcpgateway.main.prompt_service.get_prompt" )
593
+ def test_get_prompt_no_args (self , mock_get , test_client , auth_headers ):
594
+ """Test getting a prompt without arguments."""
595
+ mock_get .return_value = {"name" : "test" , "template" : "Hello" }
596
+ response = test_client .get ("/prompts/test" , headers = auth_headers )
597
+ assert response .status_code == 200
598
+ mock_get .assert_called_once_with (ANY , "test" , {})
599
+
600
+ @patch ("mcpgateway.main.prompt_service.update_prompt" )
601
+ def test_update_prompt_endpoint (self , mock_update , test_client , auth_headers ):
602
+ """Test updating an existing prompt."""
603
+ updated = {** MOCK_PROMPT_READ , "description" : "Updated description" }
604
+ mock_update .return_value = PromptRead (** updated )
605
+ req = {"description" : "Updated description" }
606
+ response = test_client .put ("/prompts/test_prompt" , json = req , headers = auth_headers )
607
+ assert response .status_code == 200
608
+ mock_update .assert_called_once ()
609
+
610
+ @patch ("mcpgateway.main.prompt_service.delete_prompt" )
611
+ def test_delete_prompt_endpoint (self , mock_delete , test_client , auth_headers ):
612
+ """Test deleting a prompt."""
613
+ mock_delete .return_value = None
614
+ response = test_client .delete ("/prompts/test_prompt" , headers = auth_headers )
615
+ assert response .status_code == 200
616
+ assert response .json ()["status" ] == "success"
617
+ mock_delete .assert_called_once ()
618
+
619
+ @patch ("mcpgateway.main.prompt_service.toggle_prompt_status" )
620
+ def test_toggle_prompt_status (self , mock_toggle , test_client , auth_headers ):
621
+ """Test toggling prompt active/inactive status."""
622
+ mock_prompt = MagicMock ()
623
+ mock_prompt .model_dump .return_value = {"id" : 1 , "is_active" : False }
624
+ mock_toggle .return_value = mock_prompt
625
+ response = test_client .post ("/prompts/1/toggle?activate=false" , headers = auth_headers )
626
+ assert response .status_code == 200
627
+ assert response .json ()["status" ] == "success"
628
+ mock_toggle .assert_called_once ()
592
629
"""Tests for prompt template management: creation, rendering, arguments, etc."""
593
630
594
631
@patch ("mcpgateway.main.prompt_service.list_prompts" )
@@ -670,6 +707,62 @@ def test_toggle_prompt_status(self, mock_toggle, test_client, auth_headers):
670
707
# Gateway Federation Tests #
671
708
# ----------------------------------------------------- #
672
709
class TestGatewayEndpoints :
710
+ @patch ("mcpgateway.main.gateway_service.list_gateways" )
711
+ def test_list_gateways_endpoint (self , mock_list , test_client , auth_headers ):
712
+ """Test listing all registered gateways."""
713
+ mock_list .return_value = [MOCK_GATEWAY_READ ]
714
+ response = test_client .get ("/gateways/" , headers = auth_headers )
715
+ assert response .status_code == 200
716
+ data = response .json ()
717
+ assert len (data ) == 1
718
+ mock_list .assert_called_once ()
719
+
720
+ @patch ("mcpgateway.main.gateway_service.register_gateway" )
721
+ def test_create_gateway_endpoint (self , mock_create , test_client , auth_headers ):
722
+ """Test registering a new gateway."""
723
+ mock_create .return_value = MOCK_GATEWAY_READ
724
+ req = {"name" : "test_gateway" , "url" : "http://example.com" }
725
+ response = test_client .post ("/gateways/" , json = req , headers = auth_headers )
726
+ assert response .status_code == 200
727
+ mock_create .assert_called_once ()
728
+
729
+ @patch ("mcpgateway.main.gateway_service.get_gateway" )
730
+ def test_get_gateway_endpoint (self , mock_get , test_client , auth_headers ):
731
+ """Test retrieving a specific gateway."""
732
+ mock_get .return_value = MOCK_GATEWAY_READ
733
+ response = test_client .get ("/gateways/1" , headers = auth_headers )
734
+ assert response .status_code == 200
735
+ assert response .json ()["name" ] == "test_gateway"
736
+ mock_get .assert_called_once ()
737
+
738
+ @patch ("mcpgateway.main.gateway_service.update_gateway" )
739
+ def test_update_gateway_endpoint (self , mock_update , test_client , auth_headers ):
740
+ """Test updating an existing gateway."""
741
+ mock_update .return_value = MOCK_GATEWAY_READ
742
+ req = {"description" : "Updated description" }
743
+ response = test_client .put ("/gateways/1" , json = req , headers = auth_headers )
744
+ assert response .status_code == 200
745
+ mock_update .assert_called_once ()
746
+
747
+ @patch ("mcpgateway.main.gateway_service.delete_gateway" )
748
+ def test_delete_gateway_endpoint (self , mock_delete , test_client , auth_headers ):
749
+ """Test deleting a gateway."""
750
+ mock_delete .return_value = None
751
+ response = test_client .delete ("/gateways/1" , headers = auth_headers )
752
+ assert response .status_code == 200
753
+ assert response .json ()["status" ] == "success"
754
+ mock_delete .assert_called_once ()
755
+
756
+ @patch ("mcpgateway.main.gateway_service.toggle_gateway_status" )
757
+ def test_toggle_gateway_status (self , mock_toggle , test_client , auth_headers ):
758
+ """Test toggling gateway active/inactive status."""
759
+ mock_gateway = MagicMock ()
760
+ mock_gateway .model_dump .return_value = {"id" : "1" , "is_active" : False }
761
+ mock_toggle .return_value = mock_gateway
762
+ response = test_client .post ("/gateways/1/toggle?activate=false" , headers = auth_headers )
763
+ assert response .status_code == 200
764
+ assert response .json ()["status" ] == "success"
765
+ mock_toggle .assert_called_once ()
673
766
"""Tests for gateway federation: registration, discovery, forwarding, etc."""
674
767
675
768
@patch ("mcpgateway.main.gateway_service.list_gateways" )
0 commit comments