registry: SecurityPanelController with Arm.Response and its errors
Alexa.SecurityPanelController is described from its page: version 3 (the stub of 1.5.2 said 1), armState and the four alarms, Arm and Disarm. ctx.respond() answers Arm with Arm.Response under the namespace of the interface, its payload checked (exitDelayInSeconds 0 to 255, bypassedEndpoints), and Disarm with a Response. A Disarm carries the PIN the user said when the panel is declared with supportedAuthorizationTypes; the handler checks it and answers UNAUTHORIZED, which goes under Alexa.SecurityPanelController like the five other error types. A panel declared without options lists armState, where 1.5.2 listed no property; alarms are declared. 17 examples of the two pages are saved as fixtures. 215 tests pass, 207 before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
f555a5df70
commit
c59cf3ff10
39 changed files with 1248 additions and 23 deletions
23
test/fixtures/interfaces.js
vendored
23
test/fixtures/interfaces.js
vendored
|
|
@ -15,6 +15,8 @@
|
|||
// chosen true: a declaration lists the properties the device has, an example some of those of the interface
|
||||
// folded the directives whose example the page folds away, so that it was not saved
|
||||
//
|
||||
// A directive is answered with a Response, or with the event responseFor() of its descriptor names.
|
||||
//
|
||||
// test/registry/descriptors.test.js, test/device/discovery.test.js and test/dispatch/interfaces.test.js run the
|
||||
// entries. The first one fails for a descriptor of tier 1 or 2 that has no entry.
|
||||
const { asset, semantics, text } = require("alex2node");
|
||||
|
|
@ -109,6 +111,27 @@ module.exports = [
|
|||
},
|
||||
}],
|
||||
},
|
||||
{
|
||||
namespace: "Alexa.SecurityPanelController",
|
||||
page: "alexa-securitypanelcontroller",
|
||||
chosen: true,
|
||||
declared: [{
|
||||
example: "discovery",
|
||||
options: {
|
||||
...reported,
|
||||
supportedArmStates: ["ARMED_AWAY", "ARMED_STAY", "DISARMED"],
|
||||
supportedAuthorizationTypes: ["FOUR_DIGIT_PIN"],
|
||||
alarms: ["burglaryAlarm", "fireAlarm"],
|
||||
},
|
||||
}],
|
||||
refused: [
|
||||
["Arm", { armState: "ARMED" }, 'payload.armState: expected ARMED_AWAY | ARMED_STAY | ARMED_NIGHT | DISARMED, got "ARMED"'],
|
||||
["Arm", { armState: "ARMED_STAY", bypassType: "BYPASS_SOME" }, 'payload.bypassType: expected BYPASS_ALL, got "BYPASS_SOME"'],
|
||||
["Disarm", { authorization: { type: "FOUR_DIGIT_PIN", value: "12345" } }, 'payload.authorization.value: expected a PIN of four digits, got "12345"'],
|
||||
["Disarm", { authorization: { type: "VOICE", value: "1234" } }, 'payload.authorization.type: expected FOUR_DIGIT_PIN, got "VOICE"'],
|
||||
],
|
||||
unfit: [["armState", "ARMED"], ["burglaryAlarm", "ALARM"], ["fireAlarm", { value: "FIRE" }]],
|
||||
},
|
||||
{ namespace: "Alexa.TemperatureSensor", page: "alexa-temperaturesensor", declared: [{ options: reported, example: "discovery" }] },
|
||||
{
|
||||
namespace: "Alexa.ThermostatController",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue