bluesky-social / atproto

Social networking technology created by Bluesky
Other
6.17k stars 432 forks source link

Handle empty bodies in lexicon validation #2746

Open dholms opened 1 month ago

dholms commented 1 month ago

There's a weird edge case in lexicon validation around a schema moving from having no output schema to having an output schema with all optional properties. This is allowed in Lexicon. And it actually works with the current code but not for the reasons we expect.

The existing code will parse the body as an empty array and then treat it as an object and do lexicon checks against it as if it is the parsed JSON of the response.

Instead, we parse an empty body with no content type as undefined, and then in the higher level lexicon assertions (for validating output/input/params), pass instead pass the undefined through as an empty JSON object.