Fix catalog test sentences and vendor validations
Found while shipping vendor wave W7 (Task 13377). Itemized:
1. A catalog vendor's refusal sentence quotes the field label with its capital, for example "Mapbox rejected the Access token (401)" or "Ramp rejected the Client secret (401)". Lowercase the label mid-sentence unless its first word is an acronym or a brand ("the access token", but "the API key"). Every wave's tests pin the capitalised form, so update them in the same change.
2. Twitch's Test (`GET id.twitch.tv/oauth2/validate`) does not compare the token's `client_id` with the row's Client ID. A mismatched pair passes Test, then every Helix call fails with 401. Add a generic `[test]` check that a response field equals a configured field.
3. Semrush's balance check (`countapiunits.html`) answered a made-up key with 400 JSON on 2026-11-03. Historically it answered "ERROR 120 :: WRONG KEY" as text with HTTP 200. If that comes back, the Test would pass a bad key. Consider a body-text rejection pattern.
Out of scope: new vendors; changing the Test endpoints.
Done means:
- The refusal sentence reads "the access token" and "the API key"; all integration tests are updated and green.
- A Twitch row whose token belongs to another app fails Test with a named reason.
- `./dc check quick` green.
Outcome
Refusal sentences now lowercase the field label ("the access token", "the API key"). Added generic [test] require_equal (Twitch client_id) and rejected_text (Semrush ERROR 120). Fixed the api image build. Quick gate green, 2461 tests pass; PR #7919 queued to the merge lane. Memory: used mem-25288.
Artifacts
Activity
- Created
- Run
- Runner started
- Runner ended (done)