|
130 | 130 | assert_rpc_error expected_error: { |
131 | 131 | code: -32600, |
132 | 132 | message: "Invalid Request", |
133 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 133 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
134 | 134 | } |
135 | 135 | end |
136 | 136 |
|
|
160 | 160 | assert_rpc_error expected_error: { |
161 | 161 | code: -32600, |
162 | 162 | message: "Invalid Request", |
163 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 163 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
164 | 164 | } |
165 | 165 | end |
166 | 166 |
|
|
170 | 170 | assert_rpc_error expected_error: { |
171 | 171 | code: -32600, |
172 | 172 | message: "Invalid Request", |
173 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 173 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
174 | 174 | } |
175 | 175 | end |
176 | 176 |
|
|
180 | 180 | assert_rpc_error expected_error: { |
181 | 181 | code: -32600, |
182 | 182 | message: "Invalid Request", |
183 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 183 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
184 | 184 | } |
185 | 185 | end |
186 | 186 |
|
|
190 | 190 | assert_rpc_error expected_error: { |
191 | 191 | code: -32600, |
192 | 192 | message: "Invalid Request", |
193 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 193 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
194 | 194 | } |
195 | 195 | end |
196 | 196 |
|
|
200 | 200 | assert_rpc_error expected_error: { |
201 | 201 | code: -32600, |
202 | 202 | message: "Invalid Request", |
203 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 203 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
| 204 | + } |
| 205 | + end |
| 206 | + |
| 207 | + # MCP narrows JSON-RPC here: "Requests MUST include a string or integer ID" and "the ID MUST NOT be null". |
| 208 | + it "returns an error and does not call the method when id is null" do |
| 209 | + called = false |
| 210 | + register("add") { called = true } |
| 211 | + |
| 212 | + handle jsonrpc: "2.0", id: nil, method: "add", params: { a: 1, b: 2 } |
| 213 | + |
| 214 | + assert_rpc_error expected_error: { |
| 215 | + code: -32600, |
| 216 | + message: "Invalid Request", |
| 217 | + data: "Request ID must not be null", |
| 218 | + } |
| 219 | + assert_nil @response[:id] |
| 220 | + refute called |
| 221 | + end |
| 222 | + |
| 223 | + it "names the accepted id types without the pattern when none is given" do |
| 224 | + @response = JsonRpcHandler.handle({ jsonrpc: "2.0", id: 3.14, method: "add" }, id_validation_pattern: nil) { |_name, _id| nil } |
| 225 | + |
| 226 | + assert_rpc_error expected_error: { |
| 227 | + code: -32600, |
| 228 | + message: "Invalid Request", |
| 229 | + data: "Request ID must be a string or an integer", |
204 | 230 | } |
205 | 231 | end |
206 | 232 |
|
|
323 | 349 | assert_rpc_error expected_error: { |
324 | 350 | code: -32600, |
325 | 351 | message: "Invalid Request", |
326 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 352 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
327 | 353 | } |
328 | 354 | assert_nil @response[:id] |
329 | 355 | end |
|
735 | 761 | assert_rpc_error expected_error: { |
736 | 762 | code: -32600, |
737 | 763 | message: "Invalid Request", |
738 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 764 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
739 | 765 | } |
740 | 766 | end |
741 | 767 |
|
|
748 | 774 | assert_rpc_error expected_error: { |
749 | 775 | code: -32600, |
750 | 776 | message: "Invalid Request", |
751 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 777 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
752 | 778 | } |
753 | 779 | end |
754 | 780 |
|
|
776 | 802 | assert_rpc_error expected_error: { |
777 | 803 | code: -32600, |
778 | 804 | message: "Invalid Request", |
779 | | - data: "Request ID must match validation pattern, or be an integer or null", |
| 805 | + data: "Request ID must be a string matching the validation pattern, or an integer", |
780 | 806 | } |
781 | 807 | end |
782 | 808 |
|
|
0 commit comments