Default draft protocol support: sessionless + handshake-less (SEP-2575 + SEP-2567) (#1610)
This commit is contained in:
parent
3368bb7349
commit
6c323e783b
1 changed files with 5704 additions and 712 deletions
|
|
@ -35,4 +35,32 @@ public class RequestIdTests
|
|||
|
||||
Assert.Equal(id, JsonSerializer.Deserialize<RequestId>(JsonSerializer.Serialize(id, McpJsonUtilities.DefaultOptions), McpJsonUtilities.DefaultOptions));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Null_DeserializesAsDefault()
|
||||
{
|
||||
// Per JSON-RPC 2.0 §5.1, error responses produced before the request id can be determined
|
||||
// MUST carry id=null. Deserialization needs to tolerate that shape so callers can handle
|
||||
// such error envelopes (instead of throwing on the bare RequestId conversion).
|
||||
var id = JsonSerializer.Deserialize<RequestId>("null", McpJsonUtilities.DefaultOptions);
|
||||
Assert.Equal(default(RequestId), id);
|
||||
Assert.Null(id.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Null_SerializesAsJsonNull()
|
||||
{
|
||||
// The default RequestId (Id == null) is the id-less-error-response shape. It MUST serialize as
|
||||
// JSON null — not "" — so the wire form is spec-conformant and round-trips losslessly.
|
||||
Assert.Equal("null", JsonSerializer.Serialize(default(RequestId), McpJsonUtilities.DefaultOptions));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Null_Roundtrips()
|
||||
{
|
||||
var json = JsonSerializer.Serialize(default(RequestId), McpJsonUtilities.DefaultOptions);
|
||||
var id = JsonSerializer.Deserialize<RequestId>(json, McpJsonUtilities.DefaultOptions);
|
||||
Assert.Equal(default(RequestId), id);
|
||||
Assert.Null(id.Id);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue