@@ -622,6 +622,63 @@ class StreamableHTTPTransportTest < ActiveSupport::TestCase
622
622
assert_empty ( response [ 2 ] )
623
623
end
624
624
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
+
625
682
private
626
683
627
684
def create_rack_request ( method , path , headers , body = nil )
0 commit comments