From a2035a580a614ca41eaf139f7529367822bf0f2c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 02:10:14 +0000 Subject: [PATCH 1/3] Initial plan From d034f62dbb367cf5c5c249266c78a19c5b66e6d3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 02:11:49 +0000 Subject: [PATCH 2/3] fix(http-specs): accept 2022-08-26T18:38:00.0000000Z in ModelWithDatetime XML scenario Co-authored-by: weidongxu-microsoft <53292327+weidongxu-microsoft@users.noreply.github.com> --- .../http-specs/specs/payload/xml/mockapi.ts | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/http-specs/specs/payload/xml/mockapi.ts b/packages/http-specs/specs/payload/xml/mockapi.ts index de2d3f85834..cb86927daf4 100644 --- a/packages/http-specs/specs/payload/xml/mockapi.ts +++ b/packages/http-specs/specs/payload/xml/mockapi.ts @@ -146,6 +146,15 @@ const modelWithDatetimeNoMs = ` `; +// Some clients (e.g. .NET) serialize UTC datetimes with 7 fractional digit ticks. +// "2022-08-26T18:38:00.0000000Z" is a valid representation of the same instant; accept it too. +const modelWithDatetimeWindowsMs = ` + + 2022-08-26T18:38:00.0000000Z + Fri, 26 Aug 2022 14:38:00 GMT + +`; + function createServerTests(uri: string, data?: any) { return { get: passOnSuccess({ @@ -280,7 +289,8 @@ Scenarios.Payload_Xml_ModelWithDatetimeValue_put = passOnSuccess({ }, handler: (req: MockRequest) => { req.expect.containsHeader("content-type", "application/xml"); - // Accept both "2022-08-26T18:38:00.000Z" and "2022-08-26T18:38:00Z" as equivalent UTC datetimes. + // Accept "2022-08-26T18:38:00.000Z", "2022-08-26T18:38:00Z", and + // "2022-08-26T18:38:00.0000000Z" as equivalent UTC datetimes. let firstError: unknown; try { req.expect.xmlBodyEquals(modelWithDatetime); @@ -288,7 +298,15 @@ Scenarios.Payload_Xml_ModelWithDatetimeValue_put = passOnSuccess({ firstError = e; } if (firstError !== undefined) { - req.expect.xmlBodyEquals(modelWithDatetimeNoMs); + let secondError: unknown; + try { + req.expect.xmlBodyEquals(modelWithDatetimeNoMs); + } catch (e) { + secondError = e; + } + if (secondError !== undefined) { + req.expect.xmlBodyEquals(modelWithDatetimeWindowsMs); + } } return { status: 204, From ebf682a2523f6d163adc3659904bb07fd9e53e00 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 09:20:58 +0000 Subject: [PATCH 3/3] chore: add changelog entry for 7-digit fractional seconds datetime workaround Co-authored-by: weidongxu-microsoft <53292327+weidongxu-microsoft@users.noreply.github.com> --- .../add-workaround-for-test-acceptance-2026-3-15-9-20-0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/add-workaround-for-test-acceptance-2026-3-15-9-20-0.md diff --git a/.chronus/changes/add-workaround-for-test-acceptance-2026-3-15-9-20-0.md b/.chronus/changes/add-workaround-for-test-acceptance-2026-3-15-9-20-0.md new file mode 100644 index 00000000000..4f577e58f0e --- /dev/null +++ b/.chronus/changes/add-workaround-for-test-acceptance-2026-3-15-9-20-0.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-specs" +--- + +Accept `2022-08-26T18:38:00.0000000Z` (7 fractional digit ticks, as emitted by .NET clients) as a valid RFC3339 UTC datetime form in the `ModelWithDatetime` XML scenario.