Skip to content

fix(ses): emit result node in SES v1 Query-protocol write responses#1926

Merged
vieiralucas merged 1 commit into
mainfrom
worktree-ses-v1-result-node
Jun 24, 2026
Merged

fix(ses): emit result node in SES v1 Query-protocol write responses#1926
vieiralucas merged 1 commit into
mainfrom
worktree-ses-v1-result-node

Conversation

@vieiralucas

@vieiralucas vieiralucas commented Jun 24, 2026

Copy link
Copy Markdown
Member

Summary

The SES v1 (Query/XML) protocol always wraps a response in a <{Action}Result> element -- empty for actions with no output members. The xml_metadata_only helper emitted only <{Action}Response> + <ResponseMetadata> with no result node, so the AWS SDK failed to deserialize every no-output SES v1 write action with "{Action}Result node not found" (e.g. CreateConfigurationSet, the verify/delete/set identity actions).

This emits an empty <{Action}Result/> node (via query_response_xml with an empty body) so the response matches the protocol shape. It unblocks the apply path for the SES v1 acceptance tests, which previously errored at the very first create.

The remaining per-resource SES v1 gaps -- deterministic verification tokens, the v1 identity delete/notification state model, receipt-rule wiring, configuration-set last_fresh_start / reputation options -- are separate follow-ups, so SES v1 is not yet wired into the tfacc harness (it would be red). This PR is the foundational correctness fix that every SES v1 write action needed.

No new public API surface (response-shape correctness fix).

Test plan

  • New unit test v1_write_action_response_includes_result_node asserts the result node is present.
  • cargo test -p fakecloud-ses (251 pass), cargo clippy --all-targets -D warnings, cargo fmt clean.
  • Confirmed locally: with the fix, the SES v1 acceptance tests progress past create (real multi-second apply durations) instead of failing instantly on the malformed response.

Summary by cubic

Ensure SES v1 Query responses include an empty <{Action}Result> node for no-output write actions. This fixes AWS SDK deserialization errors and lets actions like CreateConfigurationSet proceed.

  • Bug Fixes
    • Updated xml_metadata_only to use query_response_xml with an empty body, emitting <{Action}Result/> as required by the protocol.
    • Added unit test v1_write_action_response_includes_result_node to verify the result node is present.

Written for commit 780fdd6. Summary will update on new commits.

Review in cubic

The SES v1 (Query/XML) protocol always wraps a response in a
`<{Action}Result>` element, empty for actions with no output members. The
`xml_metadata_only` helper emitted only `<{Action}Response>` +
`<ResponseMetadata>` with no result node, so the AWS SDK failed to deserialize
every no-output SES v1 write action with "{Action}Result node not found" --
e.g. CreateConfigurationSet, the verify/delete/set identity actions, etc.

Emit an empty `<{Action}Result/>` node (via query_response_xml with an empty
body) so the response matches the protocol shape. This unblocks the apply path
for the SES v1 acceptance tests (they previously errored at create); the
remaining per-resource SES v1 gaps -- deterministic verification tokens, the
v1 identity delete/notification state model, receipt-rule wiring, configuration
set last_fresh_start / reputation options -- are separate follow-ups, so SES v1
is not yet wired into the tfacc harness.

Owning-crate unit test asserts the result node is present.
@vieiralucas vieiralucas merged commit ebfb09f into main Jun 24, 2026
93 checks passed
@vieiralucas vieiralucas deleted the worktree-ses-v1-result-node branch June 24, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant