fix(mgmt): version-agnostic OpenAPI drift test + regenerate the 0.5.0 snapshot
The snapshot comparison now normalizes info.version on both sides and compares structurally — a version bump alone can never invalidate the checked-in spec again (the 0.5.0 release tripped on exactly this; the API surface is what drift-control protects). Snapshot regenerated so the docs-site copy shows the current version. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -10,7 +10,7 @@
|
||||
"name": "MIT OR Apache-2.0",
|
||||
"identifier": "MIT OR Apache-2.0"
|
||||
},
|
||||
"version": "0.4.2"
|
||||
"version": "0.5.0"
|
||||
},
|
||||
"paths": {
|
||||
"/api/v1/clients": {
|
||||
|
||||
@@ -2310,11 +2310,17 @@ mod tests {
|
||||
);
|
||||
|
||||
let checked_in = include_str!("../../../api/openapi.json");
|
||||
// Compare content, not line-ending style: the generated `json` is LF (serde_json), but git
|
||||
// may check the file out CRLF on Windows.
|
||||
// Compare STRUCTURALLY with `info.version` normalized on both sides: the served document
|
||||
// stamps the live crate version, but a version bump alone must never invalidate the
|
||||
// snapshot — the API *surface* is what drift-control protects (the 0.5.0 release tripped
|
||||
// on exactly this). Structural comparison also makes line endings a non-issue (git may
|
||||
// check the file out CRLF on Windows).
|
||||
let mut generated = doc;
|
||||
let mut snapshot: serde_json::Value = serde_json::from_str(checked_in).unwrap();
|
||||
generated["info"]["version"] = serde_json::json!("<any>");
|
||||
snapshot["info"]["version"] = serde_json::json!("<any>");
|
||||
assert_eq!(
|
||||
json.trim().replace('\r', ""),
|
||||
checked_in.trim().replace('\r', ""),
|
||||
generated, snapshot,
|
||||
"api/openapi.json is stale — regenerate with: \
|
||||
cargo run -p punktfunk-host -- openapi > api/openapi.json"
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user