From d197d800f3af4424996c94a6ba9662cb9e4d3f8b Mon Sep 17 00:00:00 2001 From: phil-accelbyte <225106921+phil-accelbyte@users.noreply.github.com> Date: Tue, 12 May 2026 21:20:15 +0800 Subject: [PATCH 1/2] fix(catalogue): assert x-operationId shape and correct malformed ids MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The catalogue parser used `splitn(5, '/')` to break an `x-operationId` into its five expected segments (service/scope/resource/version/method). When an id contained six or more slashes — e.g. `basic/public/profiles/update/v1/my-zip-code` — the overflow was folded into the final segment. The version parse then failed on the misplaced `"update"`, the operation was dropped without any signal, and the command never appeared on the CLI surface — invisible to Clap, tests, or snapshots because the baseline is generated by this same parser. Replace `splitn` with `split`, require exactly five segments, and `debug_assert!` on both the segment-count mismatch and a non-numeric version. Release builds still skip the bad op so one malformed entry does not poison the whole service. Adds explicit underflow / overflow / non-numeric-version test pairs (panic in debug, skip in release). Also fixes three malformed x-operationIds the new assertion immediately caught in the bundled specs: - basic: `…/profiles/update/v1/my-zip-code` → `…/profiles/v1/update-my-zip-code` (six segments; this previously dropped the `update-my-zip-code` command) - social: `/statCycles/{cycleId}` GET was tagged `…/v1/export`; corrected to `…/v1/get` to match the admin variant and the actual semantics - lobby: `…/blocks/v1/symc` → `…/blocks/v1/sync` (typo) Regenerated tests/fixtures/baselines and docs/reference/cli-command-catalogue.md; operation count 1961 → 1962. --- docs/reference/cli-command-catalogue.md | 9 +- specs/basic.json.gz | Bin 12486 -> 12471 bytes specs/lobby.json.gz | Bin 32643 -> 31143 bytes specs/social.json.gz | Bin 20952 -> 20936 bytes src/catalogue/parser.rs | 127 ++++++++++++++++-- .../baselines/basic_input_contract.json | 15 +++ .../baselines/lobby_input_contract.json | 4 +- .../baselines/social_input_contract.json | 10 +- 8 files changed, 144 insertions(+), 21 deletions(-) diff --git a/docs/reference/cli-command-catalogue.md b/docs/reference/cli-command-catalogue.md index 3338bcb..7f910e2 100644 --- a/docs/reference/cli-command-catalogue.md +++ b/docs/reference/cli-command-catalogue.md @@ -5,7 +5,7 @@ Auto-generated from `specs/*.json.gz` via `scripts/generate_cli_command_catalogu Lists every operation the CLI dispatches. Deprecated operations and the `internal` resource are excluded. Each row corresponds to a concrete `--api-scope` / `--api-version` combination. **Services:** 24 -**Operations:** 1961 +**Operations:** 1962 ## achievement @@ -102,7 +102,7 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna - Spec name: `basic` - Resources: 5 -- Operations: 57 +- Operations: 58 | Resource | Method | Scope | Version | HTTP | Path | Summary | |----------|--------|-------|---------|------|------|---------| @@ -160,6 +160,7 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna | `profiles` | `update-custom-attributes` | public | v1 | PUT | `/basic/v1/public/namespaces/{namespace}/users/{userId}/profiles/customAttributes` | Updates custom attributes for a user | | `profiles` | `update-my` | public | v1 | PUT | `/basic/v1/public/namespaces/{namespace}/users/me/profiles` | Updates my profile | | `profiles` | `update-my-private-custom-attributes` | public | v1 | PUT | `/basic/v1/public/namespaces/{namespace}/users/me/profiles/privateCustomAttributes` | Updates my private custom attributes | +| `profiles` | `update-my-zip-code` | public | v1 | PATCH | `/basic/v1/public/namespaces/{namespace}/users/me/profiles/zipCode` | Updates my zip code | | `profiles` | `update-private-custom-attributes` | admin | v1 | PUT | `/basic/v1/admin/namespaces/{namespace}/users/{userId}/profiles/privateCustomAttributes` | Updates private custom attributes for a user | | `profiles` | `update-status` | admin | v1 | PATCH | `/basic/v1/admin/namespaces/{namespace}/users/{userId}/profiles/status` | Updates user profile status | | `profiles` | `update-status` | public | v1 | PATCH | `/basic/v1/public/namespaces/{namespace}/users/{userId}/profiles/status` | Updates user profile status | @@ -1120,7 +1121,7 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna | Resource | Method | Scope | Version | HTTP | Path | Summary | |----------|--------|-------|---------|------|------|---------| -| `blocks` | `symc` | public | v1 | PATCH | `/lobby/sync/namespaces/{namespace}/me/block` | Syncs the current user's blocked list with linked native first-party platform accounts | +| `blocks` | `sync` | public | v1 | PATCH | `/lobby/sync/namespaces/{namespace}/me/block` | Syncs the current user's blocked list with linked native first-party platform accounts | | `config` | `export` | admin | v1 | GET | `/lobby/v1/admin/config/namespaces/{namespace}/export` | Exports the lobby configuration to a JSON file | | `config` | `get` | admin | v1 | GET | `/lobby/v1/admin/config/namespaces/{namespace}` | Retrieves the configuration for a specified namespace | | `config` | `get-log` | admin | v1 | GET | `/lobby/v1/admin/config/log` | Retrieves the current log configuration | @@ -1963,8 +1964,8 @@ Lists every operation the CLI dispatches. Deprecated operations and the `interna | `stat-cycles` | `create` | admin | v1 | POST | `/social/v1/admin/namespaces/{namespace}/statCycles` | Creates a stat cycle | | `stat-cycles` | `delete` | admin | v1 | DELETE | `/social/v1/admin/namespaces/{namespace}/statCycles/{cycleId}` | Deletes stat cycle | | `stat-cycles` | `export` | admin | v1 | GET | `/social/v1/admin/namespaces/{namespace}/statCycles/export` | Exports all stat cycle configurations | -| `stat-cycles` | `export` | public | v1 | GET | `/social/v1/public/namespaces/{namespace}/statCycles/{cycleId}` | Retrieves a stat cycle | | `stat-cycles` | `get` | admin | v1 | GET | `/social/v1/admin/namespaces/{namespace}/statCycles/{cycleId}` | Retrieves a stat cycle | +| `stat-cycles` | `get` | public | v1 | GET | `/social/v1/public/namespaces/{namespace}/statCycles/{cycleId}` | Retrieves a stat cycle | | `stat-cycles` | `import` | admin | v1 | POST | `/social/v1/admin/namespaces/{namespace}/statCycles/import` | Imports stat cycle configurations | | `stat-cycles` | `list` | admin | v1 | GET | `/social/v1/admin/namespaces/{namespace}/statCycles` | Lists stat cycles | | `stat-cycles` | `list` | public | v1 | GET | `/social/v1/public/namespaces/{namespace}/statCycles` | Lists stat cycles | diff --git a/specs/basic.json.gz b/specs/basic.json.gz index 1f53a1d48608c083cc309e760c34d39c9227236f..03a3b9fa0d0048237944c0b777d0eabcca898081 100644 GIT binary patch delta 4460 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 delta 4475 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 K+77~i4hH~jVz(s# literal 32643 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 delta 10648 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 diff --git a/src/catalogue/parser.rs b/src/catalogue/parser.rs index ad6de1f..7f0bac4 100644 --- a/src/catalogue/parser.rs +++ b/src/catalogue/parser.rs @@ -52,8 +52,20 @@ pub fn parse_spec(service_name: &str, spec: &SwaggerSpec) -> ServiceSchema { continue; }; - let parts: Vec<&str> = x_operation_id.splitn(5, '/').collect(); - if parts.len() < 5 { + // Expect exactly 5 segments: service/scope/resource/version/method. + // Both underflow (too few) and overflow (a stray slash that pushes + // the method into a 6th segment) are spec bugs. Without this + // check, `splitn` would silently fold the overflow into `parts[4]` + // and the version-parse below would fail-and-continue, dropping + // the operation from the CLI surface with no signal. + let parts: Vec<&str> = x_operation_id.split('/').collect(); + if parts.len() != 5 { + debug_assert!( + false, + "x-operationId must have exactly 5 segments \ + (service/scope/resource/version/method), got {} in '{x_operation_id}'", + parts.len(), + ); continue; } let scope = parts[1].to_string(); @@ -62,14 +74,22 @@ pub fn parse_spec(service_name: &str, spec: &SwaggerSpec) -> ServiceSchema { continue; } let method_name = parts[4].to_string(); - // Parse the version integer from "v1", "v2", etc. Skip the - // operation entirely on a non-numeric segment rather than - // coercing to 0 — a `0` here would create a ghost contract - // selectable as `--api-version v0` and could collide with a - // sibling on the duplicate-key panic. + // Parse the version integer from "v1", "v2", etc. A non-numeric + // segment here means the spec is malformed — assert in debug so it + // surfaces during development, skip in release so one bad op does + // not poison the whole service. Coercing to 0 would create a + // ghost contract selectable as `--api-version v0`. let api_version: ApiVersion = match parts[3].parse() { Ok(v) => v, - Err(_) => continue, + Err(_) => { + debug_assert!( + false, + "x-operationId version segment must be numeric (e.g. 'v1' style is allowed \ + only if ApiVersion parses it), got '{}' in '{x_operation_id}'", + parts[3], + ); + continue; + } }; let http_method_upper = http_method_name.to_uppercase(); @@ -749,9 +769,21 @@ mod tests { assert!(names.contains(&"prefs")); } - /// Malformed `x-operationId` values should be skipped instead of panicking. + /// An `x-operationId` with fewer than 5 segments is malformed and should + /// trip the debug assertion so spec drift surfaces during development. + #[test] + #[cfg(debug_assertions)] + #[should_panic(expected = "x-operationId must have exactly 5 segments")] + fn test_parser_underflow_x_operation_id_asserts_in_debug() { + let spec = spec_from(&[("/api/v1/bans", "get", "too/few/parts", false, "")]); + let _ = parse_spec("test", &spec); + } + + /// In release builds, underflow x-operationId values are skipped so one + /// bad entry does not poison the whole service. #[test] - fn test_skips_malformed_x_operation_id() { + #[cfg(not(debug_assertions))] + fn test_parser_underflow_x_operation_id_skips_in_release() { let spec = spec_from(&[ ("/api/v1/bans", "get", "too/few/parts", false, ""), ("/api/v1/users", "get", "svc/admin/users/v1/list", false, ""), @@ -761,6 +793,81 @@ mod tests { assert_eq!(service.resources[0].name, "users"); } + /// An `x-operationId` with more than 5 segments — a real spec bug seen in + /// `basic/public/profiles/update/v1/my-zip-code` where a stray slash split + /// the method name — must trip the debug assertion. Previously this was + /// silently dropped because `splitn(5, '/')` folded the overflow into the + /// last segment and the version-parse fail path skipped the op. + #[test] + #[cfg(debug_assertions)] + #[should_panic(expected = "x-operationId must have exactly 5 segments")] + fn test_parser_overflow_x_operation_id_asserts_in_debug() { + let spec = spec_from(&[( + "/basic/v1/public/namespaces/{namespace}/users/me/profiles/zipCode", + "put", + "basic/public/profiles/update/v1/my-zip-code", + false, + "", + )]); + let _ = parse_spec("basic", &spec); + } + + /// In release builds, overflow x-operationId values are skipped (the + /// operation is omitted from the CLI surface) rather than panicking. + #[test] + #[cfg(not(debug_assertions))] + fn test_parser_overflow_x_operation_id_skips_in_release() { + let spec = spec_from(&[ + ( + "/basic/v1/public/namespaces/{namespace}/users/me/profiles/zipCode", + "put", + "basic/public/profiles/update/v1/my-zip-code", + false, + "", + ), + ( + "/api/v1/users", + "get", + "svc/admin/users/v1/list", + false, + "", + ), + ]); + let service = parse_spec("basic", &spec); + assert_eq!(service.resources.len(), 1); + assert_eq!(service.resources[0].name, "users"); + } + + /// A non-numeric version segment in an otherwise well-shaped (5-segment) + /// `x-operationId` should trip the debug assertion as a spec bug. + #[test] + #[cfg(debug_assertions)] + #[should_panic(expected = "x-operationId version segment must be numeric")] + fn test_parser_non_numeric_version_asserts_in_debug() { + let spec = spec_from(&[( + "/api/v1/bans", + "get", + "svc/admin/bans/vX/list", + false, + "", + )]); + let _ = parse_spec("test", &spec); + } + + /// In release builds, a non-numeric version segment skips the operation + /// instead of panicking — the rest of the service still loads. + #[test] + #[cfg(not(debug_assertions))] + fn test_parser_non_numeric_version_skips_in_release() { + let spec = spec_from(&[ + ("/api/v1/bans", "get", "svc/admin/bans/vX/list", false, ""), + ("/api/v1/users", "get", "svc/admin/users/v1/list", false, ""), + ]); + let service = parse_spec("test", &spec); + assert_eq!(service.resources.len(), 1); + assert_eq!(service.resources[0].name, "users"); + } + /// All non-deprecated versions of a contract should be preserved and the /// highest version should become the default. #[test] diff --git a/tests/fixtures/baselines/basic_input_contract.json b/tests/fixtures/baselines/basic_input_contract.json index 9f7f07b..1a2c707 100644 --- a/tests/fixtures/baselines/basic_input_contract.json +++ b/tests/fixtures/baselines/basic_input_contract.json @@ -986,6 +986,21 @@ "summary": "Updates my private custom attributes", "x_operation_id": "basic/public/profiles/v1/update-my-private-custom-attributes" }, + { + "http_method": "PATCH", + "method": "update-my-zip-code", + "parameters": [ + { + "location": "path", + "name": "namespace", + "required": true + } + ], + "path": "/basic/v1/public/namespaces/{namespace}/users/me/profiles/zipCode", + "permissions": [], + "summary": "Updates my zip code", + "x_operation_id": "basic/public/profiles/v1/update-my-zip-code" + }, { "http_method": "PUT", "method": "update-private-custom-attributes", diff --git a/tests/fixtures/baselines/lobby_input_contract.json b/tests/fixtures/baselines/lobby_input_contract.json index 5422178..ae55424 100644 --- a/tests/fixtures/baselines/lobby_input_contract.json +++ b/tests/fixtures/baselines/lobby_input_contract.json @@ -2,7 +2,7 @@ "blocks": [ { "http_method": "PATCH", - "method": "symc", + "method": "sync", "parameters": [ { "location": "path", @@ -13,7 +13,7 @@ "path": "/lobby/sync/namespaces/{namespace}/me/block", "permissions": [], "summary": "Syncs the current user's blocked list with linked native first-party platform accounts", - "x_operation_id": "lobby/public/blocks/v1/symc" + "x_operation_id": "lobby/public/blocks/v1/sync" } ], "config": [ diff --git a/tests/fixtures/baselines/social_input_contract.json b/tests/fixtures/baselines/social_input_contract.json index 9188764..bd46046 100644 --- a/tests/fixtures/baselines/social_input_contract.json +++ b/tests/fixtures/baselines/social_input_contract.json @@ -204,7 +204,7 @@ }, { "http_method": "GET", - "method": "export", + "method": "get", "parameters": [ { "location": "path", @@ -217,10 +217,10 @@ "required": true } ], - "path": "/social/v1/public/namespaces/{namespace}/statCycles/{cycleId}", + "path": "/social/v1/admin/namespaces/{namespace}/statCycles/{cycleId}", "permissions": [], "summary": "Retrieves a stat cycle", - "x_operation_id": "social/public/stat-cycles/v1/export" + "x_operation_id": "social/admin/stat-cycles/v1/get" }, { "http_method": "GET", @@ -237,10 +237,10 @@ "required": true } ], - "path": "/social/v1/admin/namespaces/{namespace}/statCycles/{cycleId}", + "path": "/social/v1/public/namespaces/{namespace}/statCycles/{cycleId}", "permissions": [], "summary": "Retrieves a stat cycle", - "x_operation_id": "social/admin/stat-cycles/v1/get" + "x_operation_id": "social/public/stat-cycles/v1/get" }, { "http_method": "POST", From 22703d3dcb39a35058446a7554f1f42033ffd044 Mon Sep 17 00:00:00 2001 From: phil-accelbyte <225106921+phil-accelbyte@users.noreply.github.com> Date: Tue, 12 May 2026 21:23:36 +0800 Subject: [PATCH 2/2] style: cargo fmt --- src/catalogue/parser.rs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/catalogue/parser.rs b/src/catalogue/parser.rs index 7f0bac4..ffe5be1 100644 --- a/src/catalogue/parser.rs +++ b/src/catalogue/parser.rs @@ -825,13 +825,7 @@ mod tests { false, "", ), - ( - "/api/v1/users", - "get", - "svc/admin/users/v1/list", - false, - "", - ), + ("/api/v1/users", "get", "svc/admin/users/v1/list", false, ""), ]); let service = parse_spec("basic", &spec); assert_eq!(service.resources.len(), 1); @@ -844,13 +838,7 @@ mod tests { #[cfg(debug_assertions)] #[should_panic(expected = "x-operationId version segment must be numeric")] fn test_parser_non_numeric_version_asserts_in_debug() { - let spec = spec_from(&[( - "/api/v1/bans", - "get", - "svc/admin/bans/vX/list", - false, - "", - )]); + let spec = spec_from(&[("/api/v1/bans", "get", "svc/admin/bans/vX/list", false, "")]); let _ = parse_spec("test", &spec); }