Align x-mcp-header implementation with SEP-2243 spec clarifications (#1619)
Co-authored-by: Tarek Mahmoud Sayed <tarekms@ntdev.microsoft.com>
This commit is contained in:
parent
719eade5e0
commit
ed19286a08
2 changed files with 1035 additions and 116 deletions
|
|
@ -9,6 +9,9 @@ public class McpHeaderAttributeTests
|
|||
[InlineData("TenantId")]
|
||||
[InlineData("Priority")]
|
||||
[InlineData("X-Custom")]
|
||||
[InlineData("x!header")]
|
||||
[InlineData("x#header")]
|
||||
[InlineData("x~header")]
|
||||
public void Constructor_ValidHeaderName_Succeeds(string name)
|
||||
{
|
||||
var attr = new McpHeaderAttribute(name);
|
||||
|
|
@ -27,6 +30,23 @@ public class McpHeaderAttributeTests
|
|||
Assert.Throws<ArgumentException>(() => new McpHeaderAttribute("Region:Primary"));
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("Region(1)")]
|
||||
[InlineData("path/to")]
|
||||
[InlineData("key=value")]
|
||||
[InlineData("name@host")]
|
||||
[InlineData("with,comma")]
|
||||
[InlineData("with;semi")]
|
||||
[InlineData("with[bracket")]
|
||||
[InlineData("with{brace")]
|
||||
[InlineData("with\"quote")]
|
||||
[InlineData("with\\backslash")]
|
||||
[InlineData("with?question")]
|
||||
public void Constructor_NonTcharCharacter_Throws(string name)
|
||||
{
|
||||
Assert.Throws<ArgumentException>(() => new McpHeaderAttribute(name));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Constructor_NullName_Throws()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1221,6 +1221,15 @@ public partial class McpServerToolTests
|
|||
McpServerTool.Create(typeof(McpHeaderToolType).GetMethod(nameof(McpHeaderToolType.ToolWithNonPrimitiveHeader))!));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_WithMcpHeaderOnUInt64Type_ThrowsInvalidOperationException()
|
||||
{
|
||||
// ulong is excluded per SEP-2243 because its domain extends beyond the JavaScript safe
|
||||
// integer range (and beyond long), so it cannot be represented as a signed integer header.
|
||||
Assert.Throws<InvalidOperationException>(() =>
|
||||
McpServerTool.Create(typeof(McpHeaderToolType).GetMethod(nameof(McpHeaderToolType.ToolWithUInt64Header))!));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_WithMcpHeaderOnNumericType_AddsExtension()
|
||||
{
|
||||
|
|
@ -1308,5 +1317,10 @@ public partial class McpServerToolTests
|
|||
[McpServerTool]
|
||||
public static string ToolWithoutHeaders(string region, string query)
|
||||
=> "result";
|
||||
|
||||
[McpServerTool]
|
||||
public static string ToolWithUInt64Header(
|
||||
[McpHeader("Count")] ulong count)
|
||||
=> "result";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue