Files
Tobias GesellchenandClaude Opus 4.8 d5b298fc43 test(http-client): pin ignored edges + app/provisioning surface (refs #451)
Two deliberately-unimplemented routes, pinned as "currently ignored" so a future
change to them is conscious:
- GET  /v1/blacklist/{deviceId}  -> 405 (inline stub)
- POST /alexa/certificate        -> 501 (no AWS IoT integration)

App / provisioning surface (app-called, not the speaker data-plane). Shapes come
from the _/mitm capture where one exists, otherwise from the handler (canned /
stub responses):
- GET  /streaming/account/{a}/emailaddress  -> 200 (<emailAddress>, _/mitm)
- GET  /customer/account/{a}                -> 200 (<customer> profile, canned)
- POST /customer/account/{a}                -> 200 (profile update, stub)
- POST /customer/account/{a}/password       -> 200 (password change, stub)

COVERAGE.md gains an app/provisioning section and records the source (mitm vs
handler) for each. make test-http-client: 73 requests, 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 19:11:24 +02:00

18 lines
858 B
HTTP

### GET /streaming/account/{accountId}/emailaddress (app-called account surface)
###
### The SoundTouch app fetches the account email (captured in _/mitm). Not part of
### the speaker data-plane, but part of the frozen app/provisioning contract.
### HandleMargeGetEmailAddress returns an <emailAddress> XML body. App user-agent.
GET {{host}}/streaming/account/{{accountId}}/emailaddress
User-Agent: Mozilla/5.0 (Linux; Android 13) SOUNDTOUCH_MOBILE_APP
Accept: application/vnd.bose.streaming-v1.1+xml
Authorization: Bearer {{token}}
> {%
client.test("Email address returned as XML 200", function() {
client.assert(response.status === 200, "Response status is not 200, got " + response.status);
client.assert(response.body.getElementsByTagName("emailAddress").length > 0,
"Response should contain <emailAddress>");
});
%}