@@ -622,6 +622,63 @@ class StreamableHTTPTransportTest < ActiveSupport::TestCase
622622 assert_empty ( response [ 2 ] )
623623 end
624624
625+ test "handles POST request when json-rpc notification object is received" do
626+ notification_request = create_rack_request (
627+ "POST" ,
628+ "/" ,
629+ { "CONTENT_TYPE" => "application/json" } ,
630+ { jsonrpc : "2.0" , method : "some_notification" } . to_json ,
631+ )
632+
633+ response = @transport . handle_request ( notification_request )
634+ assert_equal 202 , response [ 0 ]
635+ assert_empty ( response [ 1 ] )
636+ assert_empty ( response [ 2 ] )
637+ end
638+
639+ test "handles POST request when json-rpc response object with result is received" do
640+ # Test response (has id but no method)
641+ response_request = create_rack_request (
642+ "POST" ,
643+ "/" ,
644+ { "CONTENT_TYPE" => "application/json" } ,
645+ { jsonrpc : "2.0" , id : "123" , result : { content : { type : "text" } } } . to_json ,
646+ )
647+
648+ response = @transport . handle_request ( response_request )
649+ assert_equal 202 , response [ 0 ]
650+ assert_empty ( response [ 1 ] )
651+ assert_empty ( response [ 2 ] )
652+ end
653+
654+ test "handles POST request when json-rpc response object with error is received" do
655+ response_request = create_rack_request (
656+ "POST" ,
657+ "/" ,
658+ { "CONTENT_TYPE" => "application/json" } ,
659+ { jsonrpc : "2.0" , id : "123" , error : { content : { type : "text" } } } . to_json ,
660+ )
661+
662+ response = @transport . handle_request ( response_request )
663+ assert_equal 202 , response [ 0 ]
664+ assert_empty ( response [ 1 ] )
665+ assert_empty ( response [ 2 ] )
666+ end
667+
668+ test "handles POST request when json-rpc error object is received" do
669+ response_request = create_rack_request (
670+ "POST" ,
671+ "/" ,
672+ { "CONTENT_TYPE" => "application/json" } ,
673+ { jsonrpc : "2.0" , id : "123" , error : { content : { type : "text" } } } . to_json ,
674+ )
675+
676+ response = @transport . handle_request ( response_request )
677+ assert_equal 202 , response [ 0 ]
678+ assert_empty ( response [ 1 ] )
679+ assert_empty ( response [ 2 ] )
680+ end
681+
625682 private
626683
627684 def create_rack_request ( method , path , headers , body = nil )
0 commit comments