homebridge-securitysystem 0.0.1-matter
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +46 -0
- package/.github/ISSUE_TEMPLATE/feature-request.yml +17 -0
- package/.github/ISSUE_TEMPLATE/questions-answers.yml +40 -0
- package/.github/demo.jpg +0 -0
- package/.github/dependabot.yml +19 -0
- package/.github/release.yml +36 -0
- package/.github/workflows/build-package.yml +49 -0
- package/.github/workflows/bump-version.yml +59 -0
- package/.github/workflows/dependency-review.yml +26 -0
- package/.github/workflows/publish.yml +155 -0
- package/.github/workflows/stale-activity.yml +27 -0
- package/AGENTS.md +247 -0
- package/CHANGELOG.md +572 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +5 -0
- package/LICENSE +21 -0
- package/README.md +47 -0
- package/SECURITY.md +12 -0
- package/config.schema.json +934 -0
- package/dist/conditions/already-triggered-condition.d.ts +10 -0
- package/dist/conditions/already-triggered-condition.js +22 -0
- package/dist/conditions/already-triggered-condition.js.map +1 -0
- package/dist/conditions/arming-in-progress-condition.d.ts +10 -0
- package/dist/conditions/arming-in-progress-condition.js +21 -0
- package/dist/conditions/arming-in-progress-condition.js.map +1 -0
- package/dist/conditions/arming-lock-condition.d.ts +10 -0
- package/dist/conditions/arming-lock-condition.js +43 -0
- package/dist/conditions/arming-lock-condition.js.map +1 -0
- package/dist/conditions/condition.d.ts +22 -0
- package/dist/conditions/condition.js +19 -0
- package/dist/conditions/condition.js.map +1 -0
- package/dist/conditions/double-knock-condition.d.ts +24 -0
- package/dist/conditions/double-knock-condition.js +73 -0
- package/dist/conditions/double-knock-condition.js.map +1 -0
- package/dist/conditions/not-armed-condition.d.ts +10 -0
- package/dist/conditions/not-armed-condition.js +26 -0
- package/dist/conditions/not-armed-condition.js.map +1 -0
- package/dist/conditions/trigger-already-running-condition.d.ts +10 -0
- package/dist/conditions/trigger-already-running-condition.js +21 -0
- package/dist/conditions/trigger-already-running-condition.js.map +1 -0
- package/dist/constants/default-constant.d.ts +24 -0
- package/dist/constants/default-constant.js +27 -0
- package/dist/constants/default-constant.js.map +1 -0
- package/dist/constants/homekit-constant.d.ts +2 -0
- package/dist/constants/homekit-constant.js +3 -0
- package/dist/constants/homekit-constant.js.map +1 -0
- package/dist/constants/matter-constant.d.ts +21 -0
- package/dist/constants/matter-constant.js +61 -0
- package/dist/constants/matter-constant.js.map +1 -0
- package/dist/handlers/sensor-handler.d.ts +24 -0
- package/dist/handlers/sensor-handler.js +63 -0
- package/dist/handlers/sensor-handler.js.map +1 -0
- package/dist/handlers/state-handler.d.ts +49 -0
- package/dist/handlers/state-handler.js +204 -0
- package/dist/handlers/state-handler.js.map +1 -0
- package/dist/handlers/switch-handler.d.ts +28 -0
- package/dist/handlers/switch-handler.js +95 -0
- package/dist/handlers/switch-handler.js.map +1 -0
- package/dist/handlers/trip-handler.d.ts +44 -0
- package/dist/handlers/trip-handler.js +156 -0
- package/dist/handlers/trip-handler.js.map +1 -0
- package/dist/homekit/homekit-registrar.d.ts +12 -0
- package/dist/homekit/homekit-registrar.js +23 -0
- package/dist/homekit/homekit-registrar.js.map +1 -0
- package/dist/homekit/service-factory.d.ts +12 -0
- package/dist/homekit/service-factory.js +24 -0
- package/dist/homekit/service-factory.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/condition-context-interface.d.ts +14 -0
- package/dist/interfaces/condition-context-interface.js +2 -0
- package/dist/interfaces/condition-context-interface.js.map +1 -0
- package/dist/interfaces/hap-types-interface.d.ts +9 -0
- package/dist/interfaces/hap-types-interface.js +2 -0
- package/dist/interfaces/hap-types-interface.js.map +1 -0
- package/dist/interfaces/mqtt-status-payload-interface.d.ts +6 -0
- package/dist/interfaces/mqtt-status-payload-interface.js +2 -0
- package/dist/interfaces/mqtt-status-payload-interface.js.map +1 -0
- package/dist/interfaces/options-interface.d.ts +87 -0
- package/dist/interfaces/options-interface.js +2 -0
- package/dist/interfaces/options-interface.js.map +1 -0
- package/dist/interfaces/persisted-state-interface.d.ts +6 -0
- package/dist/interfaces/persisted-state-interface.js +2 -0
- package/dist/interfaces/persisted-state-interface.js.map +1 -0
- package/dist/interfaces/service-registry-interface.d.ts +10 -0
- package/dist/interfaces/service-registry-interface.js +2 -0
- package/dist/interfaces/service-registry-interface.js.map +1 -0
- package/dist/interfaces/system-state-interface.d.ts +22 -0
- package/dist/interfaces/system-state-interface.js +2 -0
- package/dist/interfaces/system-state-interface.js.map +1 -0
- package/dist/schemas/arming-lock-schema.d.ts +10 -0
- package/dist/schemas/arming-lock-schema.js +12 -0
- package/dist/schemas/arming-lock-schema.js.map +1 -0
- package/dist/schemas/error-schema.d.ts +4 -0
- package/dist/schemas/error-schema.js +7 -0
- package/dist/schemas/error-schema.js.map +1 -0
- package/dist/schemas/mode-request-schema.d.ts +10 -0
- package/dist/schemas/mode-request-schema.js +18 -0
- package/dist/schemas/mode-request-schema.js.map +1 -0
- package/dist/schemas/status-response-schema.d.ts +7 -0
- package/dist/schemas/status-response-schema.js +10 -0
- package/dist/schemas/status-response-schema.js.map +1 -0
- package/dist/schemas/trip-mode-request-schema.d.ts +9 -0
- package/dist/schemas/trip-mode-request-schema.js +24 -0
- package/dist/schemas/trip-mode-request-schema.js.map +1 -0
- package/dist/security-system-platform.d.ts +19 -0
- package/dist/security-system-platform.js +56 -0
- package/dist/security-system-platform.js.map +1 -0
- package/dist/security-system.d.ts +28 -0
- package/dist/security-system.js +169 -0
- package/dist/security-system.js.map +1 -0
- package/dist/services/command-service.d.ts +16 -0
- package/dist/services/command-service.js +65 -0
- package/dist/services/command-service.js.map +1 -0
- package/dist/services/configuration-service.d.ts +24 -0
- package/dist/services/configuration-service.js +189 -0
- package/dist/services/configuration-service.js.map +1 -0
- package/dist/services/event-bus-service.d.ts +12 -0
- package/dist/services/event-bus-service.js +17 -0
- package/dist/services/event-bus-service.js.map +1 -0
- package/dist/services/matter-service.d.ts +69 -0
- package/dist/services/matter-service.js +363 -0
- package/dist/services/matter-service.js.map +1 -0
- package/dist/services/mqtt-service.d.ts +16 -0
- package/dist/services/mqtt-service.js +97 -0
- package/dist/services/mqtt-service.js.map +1 -0
- package/dist/services/server-service.d.ts +28 -0
- package/dist/services/server-service.js +275 -0
- package/dist/services/server-service.js.map +1 -0
- package/dist/services/storage-service.d.ts +14 -0
- package/dist/services/storage-service.js +70 -0
- package/dist/services/storage-service.js.map +1 -0
- package/dist/services/webhook-service.d.ts +16 -0
- package/dist/services/webhook-service.js +68 -0
- package/dist/services/webhook-service.js.map +1 -0
- package/dist/tests/conditions.test.d.ts +1 -0
- package/dist/tests/conditions.test.js +175 -0
- package/dist/tests/conditions.test.js.map +1 -0
- package/dist/tests/matter-service.test.d.ts +1 -0
- package/dist/tests/matter-service.test.js +475 -0
- package/dist/tests/matter-service.test.js.map +1 -0
- package/dist/tests/mqtt-service.test.d.ts +1 -0
- package/dist/tests/mqtt-service.test.js +168 -0
- package/dist/tests/mqtt-service.test.js.map +1 -0
- package/dist/tests/sensor-handler.test.d.ts +1 -0
- package/dist/tests/sensor-handler.test.js +87 -0
- package/dist/tests/sensor-handler.test.js.map +1 -0
- package/dist/tests/server-service.test.d.ts +1 -0
- package/dist/tests/server-service.test.js +188 -0
- package/dist/tests/server-service.test.js.map +1 -0
- package/dist/tests/state-handler.test.d.ts +1 -0
- package/dist/tests/state-handler.test.js +276 -0
- package/dist/tests/state-handler.test.js.map +1 -0
- package/dist/tests/switch-handler.test.d.ts +1 -0
- package/dist/tests/switch-handler.test.js +186 -0
- package/dist/tests/switch-handler.test.js.map +1 -0
- package/dist/tests/trip-handler.test.d.ts +1 -0
- package/dist/tests/trip-handler.test.js +179 -0
- package/dist/tests/trip-handler.test.js.map +1 -0
- package/dist/timers/timer-manager.d.ts +31 -0
- package/dist/timers/timer-manager.js +118 -0
- package/dist/timers/timer-manager.js.map +1 -0
- package/dist/types/event-payload-map-type.d.ts +15 -0
- package/dist/types/event-payload-map-type.js +2 -0
- package/dist/types/event-payload-map-type.js.map +1 -0
- package/dist/types/event-type.d.ts +44 -0
- package/dist/types/event-type.js +20 -0
- package/dist/types/event-type.js.map +1 -0
- package/dist/types/matter-accessory-key-type.d.ts +7 -0
- package/dist/types/matter-accessory-key-type.js +2 -0
- package/dist/types/matter-accessory-key-type.js.map +1 -0
- package/dist/types/mode-type.d.ts +4 -0
- package/dist/types/mode-type.js +2 -0
- package/dist/types/mode-type.js.map +1 -0
- package/dist/types/origin-type.d.ts +9 -0
- package/dist/types/origin-type.js +11 -0
- package/dist/types/origin-type.js.map +1 -0
- package/dist/types/security-state-type.d.ts +11 -0
- package/dist/types/security-state-type.js +13 -0
- package/dist/types/security-state-type.js.map +1 -0
- package/dist/types/sensor-kind-type.d.ts +2 -0
- package/dist/types/sensor-kind-type.js +2 -0
- package/dist/types/sensor-kind-type.js.map +1 -0
- package/dist/types/service-result-type.d.ts +4 -0
- package/dist/types/service-result-type.js +2 -0
- package/dist/types/service-result-type.js.map +1 -0
- package/dist/utils/arming-util.d.ts +19 -0
- package/dist/utils/arming-util.js +24 -0
- package/dist/utils/arming-util.js.map +1 -0
- package/dist/utils/state-util.d.ts +8 -0
- package/dist/utils/state-util.js +29 -0
- package/dist/utils/state-util.js.map +1 -0
- package/docs/MQTT.md +50 -0
- package/package.json +64 -0
- package/src/@types/homebridge-lib.d.ts +11 -0
- package/src/conditions/already-triggered-condition.ts +24 -0
- package/src/conditions/arming-in-progress-condition.ts +23 -0
- package/src/conditions/arming-lock-condition.ts +50 -0
- package/src/conditions/condition.ts +31 -0
- package/src/conditions/double-knock-condition.ts +84 -0
- package/src/conditions/not-armed-condition.ts +30 -0
- package/src/conditions/trigger-already-running-condition.ts +23 -0
- package/src/constants/default-constant.ts +28 -0
- package/src/constants/homekit-constant.ts +2 -0
- package/src/constants/matter-constant.ts +69 -0
- package/src/handlers/sensor-handler.ts +78 -0
- package/src/handlers/state-handler.ts +257 -0
- package/src/handlers/switch-handler.ts +111 -0
- package/src/handlers/trip-handler.ts +193 -0
- package/src/homekit/homekit-registrar.ts +28 -0
- package/src/homekit/service-factory.ts +35 -0
- package/src/index.ts +9 -0
- package/src/interfaces/condition-context-interface.ts +15 -0
- package/src/interfaces/hap-types-interface.ts +11 -0
- package/src/interfaces/mqtt-status-payload-interface.ts +6 -0
- package/src/interfaces/options-interface.ts +116 -0
- package/src/interfaces/persisted-state-interface.ts +7 -0
- package/src/interfaces/service-registry-interface.ts +11 -0
- package/src/interfaces/system-state-interface.ts +25 -0
- package/src/schemas/arming-lock-schema.ts +12 -0
- package/src/schemas/error-schema.ts +7 -0
- package/src/schemas/mode-request-schema.ts +18 -0
- package/src/schemas/status-response-schema.ts +10 -0
- package/src/schemas/trip-mode-request-schema.ts +24 -0
- package/src/security-system-platform.ts +68 -0
- package/src/security-system.ts +199 -0
- package/src/services/command-service.ts +76 -0
- package/src/services/configuration-service.ts +224 -0
- package/src/services/event-bus-service.ts +21 -0
- package/src/services/matter-service.ts +446 -0
- package/src/services/mqtt-service.ts +123 -0
- package/src/services/server-service.ts +327 -0
- package/src/services/storage-service.ts +80 -0
- package/src/services/webhook-service.ts +77 -0
- package/src/tests/conditions.test.ts +212 -0
- package/src/tests/matter-service.test.ts +610 -0
- package/src/tests/mqtt-service.test.ts +231 -0
- package/src/tests/sensor-handler.test.ts +116 -0
- package/src/tests/server-service.test.ts +238 -0
- package/src/tests/state-handler.test.ts +371 -0
- package/src/tests/switch-handler.test.ts +234 -0
- package/src/tests/trip-handler.test.ts +244 -0
- package/src/timers/timer-manager.ts +141 -0
- package/src/types/event-payload-map-type.ts +25 -0
- package/src/types/event-type.ts +61 -0
- package/src/types/matter-accessory-key-type.ts +33 -0
- package/src/types/mode-type.ts +4 -0
- package/src/types/origin-type.ts +9 -0
- package/src/types/security-state-type.ts +11 -0
- package/src/types/sensor-kind-type.ts +2 -0
- package/src/types/service-result-type.ts +4 -0
- package/src/utils/arming-util.ts +44 -0
- package/src/utils/state-util.ts +32 -0
- package/tsconfig.json +26 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.test.js","sourceRoot":"","sources":["../../src/tests/conditions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
+
import { EventBusService } from '../services/event-bus-service.js';
|
|
3
|
+
import { MatterService } from '../services/matter-service.js';
|
|
4
|
+
import { EventType } from '../types/event-type.js';
|
|
5
|
+
import { OriginType } from '../types/origin-type.js';
|
|
6
|
+
import { SecurityState } from '../types/security-state-type.js';
|
|
7
|
+
// ── Mocks ─────────────────────────────────────────────────────────────────────
|
|
8
|
+
class InvalidInState extends Error {
|
|
9
|
+
}
|
|
10
|
+
class ConstraintError extends Error {
|
|
11
|
+
}
|
|
12
|
+
class Failure extends Error {
|
|
13
|
+
}
|
|
14
|
+
function makeMatterMock() {
|
|
15
|
+
return {
|
|
16
|
+
uuid: { generate: vi.fn((seed) => `matter-uuid-${seed}`) },
|
|
17
|
+
deviceTypes: {
|
|
18
|
+
OnOffSwitch: { name: 'OnOffSwitch' },
|
|
19
|
+
MotionSensor: { name: 'MotionSensor' },
|
|
20
|
+
},
|
|
21
|
+
clusterNames: { OnOff: 'onOff', OccupancySensing: 'occupancySensing' },
|
|
22
|
+
status: {
|
|
23
|
+
InvalidInState,
|
|
24
|
+
ConstraintError,
|
|
25
|
+
Failure,
|
|
26
|
+
isMatterProtocolError: (error) => error instanceof InvalidInState || error instanceof ConstraintError || error instanceof Failure,
|
|
27
|
+
},
|
|
28
|
+
registerPlatformAccessories: vi.fn(async (_pluginIdentifier, _platformName, _accessories) => undefined),
|
|
29
|
+
unregisterPlatformAccessories: vi.fn(async (_pluginIdentifier, _platformName, _accessories) => undefined),
|
|
30
|
+
updateAccessoryState: vi.fn(async (_uuid, _cluster, _attributes) => undefined),
|
|
31
|
+
getAccessoryState: vi.fn(async () => undefined),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
35
|
+
function makeLog() {
|
|
36
|
+
return { info: vi.fn(), warn: vi.fn(), error: vi.fn(), debug: vi.fn() };
|
|
37
|
+
}
|
|
38
|
+
function makeState(overrides = {}) {
|
|
39
|
+
return {
|
|
40
|
+
currentState: SecurityState.OFF,
|
|
41
|
+
targetState: SecurityState.OFF,
|
|
42
|
+
defaultState: SecurityState.OFF,
|
|
43
|
+
availableTargetStates: [SecurityState.HOME, SecurityState.AWAY, SecurityState.NIGHT, SecurityState.OFF],
|
|
44
|
+
isArming: false,
|
|
45
|
+
isTripping: false,
|
|
46
|
+
isKnocked: false,
|
|
47
|
+
serverAuthenticationAttempts: 0,
|
|
48
|
+
pausedCurrentState: null,
|
|
49
|
+
armingLocks: { global: false, home: false, away: false, night: false },
|
|
50
|
+
modeAwayExtended: false,
|
|
51
|
+
...overrides,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function makeOptions(overrides = {}) {
|
|
55
|
+
return {
|
|
56
|
+
serialNumber: 'SEC-1',
|
|
57
|
+
tripSwitchName: 'Trip',
|
|
58
|
+
tripHomeSwitchName: 'Trip Home',
|
|
59
|
+
tripAwaySwitchName: 'Trip Away',
|
|
60
|
+
tripNightSwitchName: 'Trip Night',
|
|
61
|
+
tripOverrideSwitchName: 'Trip Override',
|
|
62
|
+
modeHomeSwitchName: 'Mode Home',
|
|
63
|
+
modeAwaySwitchName: 'Mode Away',
|
|
64
|
+
modeNightSwitchName: 'Mode Night',
|
|
65
|
+
modeOffSwitchName: 'Mode Off',
|
|
66
|
+
modeAwayExtendedSwitchName: 'Mode Away Extended',
|
|
67
|
+
modePauseSwitchName: 'Mode Pause',
|
|
68
|
+
modeSwitches: false,
|
|
69
|
+
modeOffSwitch: false,
|
|
70
|
+
modePauseSwitch: false,
|
|
71
|
+
modeAwayExtendedSwitch: false,
|
|
72
|
+
tripSwitch: false,
|
|
73
|
+
tripOverrideSwitch: false,
|
|
74
|
+
tripModeSwitches: false,
|
|
75
|
+
tripHomeSwitches: [],
|
|
76
|
+
tripAwaySwitches: [],
|
|
77
|
+
tripNightSwitches: [],
|
|
78
|
+
armingLockSwitch: false,
|
|
79
|
+
armingLockSwitches: false,
|
|
80
|
+
armingMotionSensor: false,
|
|
81
|
+
trippedMotionSensor: false,
|
|
82
|
+
resetSensor: false,
|
|
83
|
+
...overrides,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function makeSwitchHandler() {
|
|
87
|
+
return {
|
|
88
|
+
setModeSwitch: vi.fn((_mode, _value) => ({ success: true })),
|
|
89
|
+
setModeOffSwitch: vi.fn((_value) => ({ success: true })),
|
|
90
|
+
setModeAwayExtendedSwitch: vi.fn((_value) => ({ success: true })),
|
|
91
|
+
setModePauseSwitch: vi.fn((_value) => ({ success: true })),
|
|
92
|
+
updateArmingLock: vi.fn((_mode, _value) => ({ success: true })),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function makeSensorHandler() {
|
|
96
|
+
return {
|
|
97
|
+
getMotionState: vi.fn(() => false),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function makeTripHandler() {
|
|
101
|
+
return {
|
|
102
|
+
updateTripSwitch: vi.fn((_value, _origin, _stateChanged) => ({ success: true })),
|
|
103
|
+
triggerIfModeSet: vi.fn((_mode, _value) => ({ success: true })),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function makeService(options, state, switchHandler = makeSwitchHandler(), tripHandler = makeTripHandler(), sensorHandler = makeSensorHandler()) {
|
|
107
|
+
const log = makeLog();
|
|
108
|
+
const matter = makeMatterMock();
|
|
109
|
+
const api = { matter, isMatterEnabled: () => true };
|
|
110
|
+
const service = new MatterService(log, options, api, state, switchHandler, tripHandler, sensorHandler);
|
|
111
|
+
return { log, matter, service, switchHandler, tripHandler, sensorHandler };
|
|
112
|
+
}
|
|
113
|
+
function registeredAccessories(matter) {
|
|
114
|
+
return matter.registerPlatformAccessories.mock.calls[0][2];
|
|
115
|
+
}
|
|
116
|
+
function accessoryByDisplayName(matter, displayName) {
|
|
117
|
+
const accessory = registeredAccessories(matter).find(a => a.displayName === displayName);
|
|
118
|
+
if (!accessory) {
|
|
119
|
+
throw new Error(`No registered accessory with display name ${displayName}`);
|
|
120
|
+
}
|
|
121
|
+
return accessory;
|
|
122
|
+
}
|
|
123
|
+
/** Handlers are always present on switches the plugin registers. */
|
|
124
|
+
function switchOnHandler(accessory) {
|
|
125
|
+
const onOff = accessory.handlers.onOff;
|
|
126
|
+
return onOff.on;
|
|
127
|
+
}
|
|
128
|
+
function switchOffHandler(accessory) {
|
|
129
|
+
const onOff = accessory.handlers.onOff;
|
|
130
|
+
return onOff.off;
|
|
131
|
+
}
|
|
132
|
+
function countSwitchUpdates(matter, uuid, value) {
|
|
133
|
+
return matter.updateAccessoryState.mock.calls.filter(call => call[0] === uuid && call[2].onOff === value).length;
|
|
134
|
+
}
|
|
135
|
+
function makeBus() {
|
|
136
|
+
return new EventBusService();
|
|
137
|
+
}
|
|
138
|
+
// ── Tests ─────────────────────────────────────────────────────────────────────
|
|
139
|
+
describe('MatterService', () => {
|
|
140
|
+
let log;
|
|
141
|
+
beforeEach(() => {
|
|
142
|
+
log = makeLog();
|
|
143
|
+
vi.clearAllMocks();
|
|
144
|
+
});
|
|
145
|
+
it('does nothing when Matter is not enabled, even with accessories configured', async () => {
|
|
146
|
+
const state = makeState();
|
|
147
|
+
const options = makeOptions({ tripSwitch: true });
|
|
148
|
+
const service = new MatterService(log, options, { isMatterEnabled: () => false }, state, makeSwitchHandler(), makeTripHandler(), makeSensorHandler());
|
|
149
|
+
await service.registerAccessories(new Map());
|
|
150
|
+
expect(log.info).toHaveBeenCalledWith('Matter is not enabled on this bridge; skipping Matter accessories.');
|
|
151
|
+
});
|
|
152
|
+
it('registers when Matter is enabled on the bridge', async () => {
|
|
153
|
+
const state = makeState();
|
|
154
|
+
const options = makeOptions({ tripSwitch: true });
|
|
155
|
+
const matter = makeMatterMock();
|
|
156
|
+
const service = new MatterService(log, options, { matter, isMatterEnabled: () => true }, state, makeSwitchHandler(), makeTripHandler(), makeSensorHandler());
|
|
157
|
+
await service.registerAccessories(new Map());
|
|
158
|
+
expect(matter.registerPlatformAccessories).toHaveBeenCalledTimes(1);
|
|
159
|
+
});
|
|
160
|
+
it('registers all configured switches and sensors', async () => {
|
|
161
|
+
const state = makeState();
|
|
162
|
+
const options = makeOptions({
|
|
163
|
+
modeSwitches: true,
|
|
164
|
+
modeOffSwitch: true,
|
|
165
|
+
modeAwayExtendedSwitch: true,
|
|
166
|
+
modePauseSwitch: true,
|
|
167
|
+
tripSwitch: true,
|
|
168
|
+
tripOverrideSwitch: true,
|
|
169
|
+
tripModeSwitches: true,
|
|
170
|
+
armingLockSwitch: true,
|
|
171
|
+
armingLockSwitches: true,
|
|
172
|
+
armingMotionSensor: true,
|
|
173
|
+
trippedMotionSensor: true,
|
|
174
|
+
resetSensor: true,
|
|
175
|
+
tripHomeSwitches: [{ label: 'Kitchen' }],
|
|
176
|
+
});
|
|
177
|
+
const { log, matter, service } = makeService(options, state);
|
|
178
|
+
await service.registerAccessories(new Map());
|
|
179
|
+
expect(log.info).toHaveBeenCalledWith(expect.stringContaining('Matter accessories registered'));
|
|
180
|
+
expect(log.info).toHaveBeenCalledWith(expect.stringContaining('Mode Home'));
|
|
181
|
+
expect(matter.registerPlatformAccessories).toHaveBeenCalledTimes(1);
|
|
182
|
+
const accessories = registeredAccessories(matter);
|
|
183
|
+
const names = accessories.map(a => a.displayName);
|
|
184
|
+
expect(names).toContain('Mode Home');
|
|
185
|
+
expect(names).toContain('Mode Away');
|
|
186
|
+
expect(names).toContain('Mode Night');
|
|
187
|
+
expect(names).toContain('Mode Off');
|
|
188
|
+
expect(names).toContain('Mode Away Extended');
|
|
189
|
+
expect(names).toContain('Mode Pause');
|
|
190
|
+
expect(names).toContain('Trip');
|
|
191
|
+
expect(names).toContain('Trip Override');
|
|
192
|
+
expect(names).toContain('Trip Home');
|
|
193
|
+
expect(names).toContain('Trip Away');
|
|
194
|
+
expect(names).toContain('Trip Night');
|
|
195
|
+
expect(names).toContain('Trip Home Kitchen');
|
|
196
|
+
expect(names).toContain('Arming Lock');
|
|
197
|
+
expect(names).toContain('Arming Lock Home');
|
|
198
|
+
expect(names).toContain('Arming');
|
|
199
|
+
expect(names).toContain('Tripped');
|
|
200
|
+
expect(names).toContain('Triggered Reset');
|
|
201
|
+
const modeHome = accessoryByDisplayName(matter, 'Mode Home');
|
|
202
|
+
expect(modeHome.deviceType).toBe(matter.deviceTypes.OnOffSwitch);
|
|
203
|
+
expect(modeHome.clusters).toEqual({ onOff: { onOff: false } });
|
|
204
|
+
expect(modeHome.handlers?.onOff?.on).toBeDefined();
|
|
205
|
+
const armingSensor = accessoryByDisplayName(matter, 'Arming');
|
|
206
|
+
expect(armingSensor.deviceType).toBe(matter.deviceTypes.MotionSensor);
|
|
207
|
+
expect(armingSensor.clusters).toEqual({
|
|
208
|
+
occupancySensing: { occupancy: { occupied: false }, occupancySensorTypeBitmap: { pir: true } },
|
|
209
|
+
});
|
|
210
|
+
expect(armingSensor.UUID).toMatch(/^matter-uuid-motion-sensor-1$/);
|
|
211
|
+
});
|
|
212
|
+
it('skips accessories disabled in options and disabled modes', async () => {
|
|
213
|
+
const state = makeState({ availableTargetStates: [SecurityState.AWAY, SecurityState.OFF] });
|
|
214
|
+
const options = makeOptions({ tripSwitch: true, tripHomeSwitches: [{ label: 'Kitchen' }] });
|
|
215
|
+
const { matter, service } = makeService(options, state);
|
|
216
|
+
await service.registerAccessories(new Map());
|
|
217
|
+
const names = registeredAccessories(matter).map(a => a.displayName);
|
|
218
|
+
expect(names).toEqual(['Trip']);
|
|
219
|
+
});
|
|
220
|
+
it('does not re-register cached accessories and removes stale ones', async () => {
|
|
221
|
+
const state = makeState();
|
|
222
|
+
const options = makeOptions({ tripSwitch: true });
|
|
223
|
+
const { matter, service } = makeService(options, state);
|
|
224
|
+
const cached = new Map([
|
|
225
|
+
['matter-uuid-switch-1', { UUID: 'matter-uuid-switch-1' }],
|
|
226
|
+
['stale-uuid', { UUID: 'stale-uuid' }],
|
|
227
|
+
]);
|
|
228
|
+
await service.registerAccessories(cached);
|
|
229
|
+
expect(matter.registerPlatformAccessories).not.toHaveBeenCalled();
|
|
230
|
+
expect(matter.unregisterPlatformAccessories).toHaveBeenCalledWith('homebridge-securitysystem', 'security-system', [cached.get('stale-uuid')]);
|
|
231
|
+
});
|
|
232
|
+
it('uses device-type-indexed identities for the uuid and serial number', async () => {
|
|
233
|
+
const state = makeState();
|
|
234
|
+
const options = makeOptions({ modeSwitches: true, trippedMotionSensor: true });
|
|
235
|
+
const { matter, service } = makeService(options, state);
|
|
236
|
+
await service.registerAccessories(new Map());
|
|
237
|
+
const modeHome = accessoryByDisplayName(matter, 'Mode Home');
|
|
238
|
+
expect(modeHome.UUID).toBe('matter-uuid-switch-6');
|
|
239
|
+
expect(modeHome.serialNumber).toBe('switch-6');
|
|
240
|
+
expect(modeHome.context).toEqual({ key: 'mode-home', identity: 'switch-6' });
|
|
241
|
+
const trippedSensor = accessoryByDisplayName(matter, 'Tripped');
|
|
242
|
+
expect(trippedSensor.UUID).toBe('matter-uuid-motion-sensor-2');
|
|
243
|
+
expect(trippedSensor.serialNumber).toBe('motion-sensor-2');
|
|
244
|
+
});
|
|
245
|
+
it('routes mode switch commands to SwitchHandler and blocks with InvalidInState', async () => {
|
|
246
|
+
const state = makeState();
|
|
247
|
+
const options = makeOptions({ modeSwitches: true });
|
|
248
|
+
const switchHandler = makeSwitchHandler();
|
|
249
|
+
switchHandler.setModeSwitch = vi.fn((mode, value) => mode === SecurityState.HOME && value ? { success: true } : { success: false, reason: 'a mode switch can only be turned on' });
|
|
250
|
+
const { log, matter, service } = makeService(options, state, switchHandler, makeTripHandler());
|
|
251
|
+
await service.registerAccessories(new Map());
|
|
252
|
+
const modeHome = accessoryByDisplayName(matter, 'Mode Home');
|
|
253
|
+
const onHandler = switchOnHandler(modeHome);
|
|
254
|
+
const offHandler = switchOffHandler(modeHome);
|
|
255
|
+
expect(() => onHandler()).not.toThrow();
|
|
256
|
+
expect(switchHandler.setModeSwitch).toHaveBeenCalledWith(SecurityState.HOME, true);
|
|
257
|
+
expect(() => offHandler()).toThrow();
|
|
258
|
+
expect(switchHandler.setModeSwitch).toHaveBeenCalledWith(SecurityState.HOME, false);
|
|
259
|
+
expect(log.debug).toHaveBeenCalledWith(expect.stringContaining('Matter command failed (mode-home)'));
|
|
260
|
+
});
|
|
261
|
+
it('routes trip switch commands to TripHandler with the right origin', async () => {
|
|
262
|
+
const state = makeState();
|
|
263
|
+
const options = makeOptions({ tripSwitch: true, tripOverrideSwitch: true, tripModeSwitches: true });
|
|
264
|
+
const tripHandler = makeTripHandler();
|
|
265
|
+
const { matter, service } = makeService(options, state, makeSwitchHandler(), tripHandler);
|
|
266
|
+
await service.registerAccessories(new Map());
|
|
267
|
+
const trip = accessoryByDisplayName(matter, 'Trip');
|
|
268
|
+
switchOnHandler(trip)();
|
|
269
|
+
expect(tripHandler.updateTripSwitch).toHaveBeenCalledWith(true, OriginType.REGULAR_SWITCH, false);
|
|
270
|
+
const tripHome = accessoryByDisplayName(matter, 'Trip Home');
|
|
271
|
+
switchOnHandler(tripHome)();
|
|
272
|
+
expect(tripHandler.triggerIfModeSet).toHaveBeenCalledWith(SecurityState.HOME, true);
|
|
273
|
+
const tripOverride = accessoryByDisplayName(matter, 'Trip Override');
|
|
274
|
+
switchOnHandler(tripOverride)();
|
|
275
|
+
expect(tripHandler.updateTripSwitch).toHaveBeenCalledWith(true, OriginType.OVERRIDE_SWITCH, false);
|
|
276
|
+
});
|
|
277
|
+
it('throws InvalidInState when a trip is blocked by a condition', async () => {
|
|
278
|
+
const state = makeState();
|
|
279
|
+
const options = makeOptions({ tripSwitch: true });
|
|
280
|
+
const tripHandler = makeTripHandler();
|
|
281
|
+
tripHandler.updateTripSwitch = vi.fn(() => ({ success: false, reason: 'system is not armed' }));
|
|
282
|
+
const { matter, service } = makeService(options, state, makeSwitchHandler(), tripHandler);
|
|
283
|
+
await service.registerAccessories(new Map());
|
|
284
|
+
const trip = accessoryByDisplayName(matter, 'Trip');
|
|
285
|
+
expect(() => switchOnHandler(trip)()).toThrowError('system is not armed');
|
|
286
|
+
});
|
|
287
|
+
it('routes arming lock commands to SwitchHandler', async () => {
|
|
288
|
+
const state = makeState();
|
|
289
|
+
const options = makeOptions({ armingLockSwitch: true, armingLockSwitches: true });
|
|
290
|
+
const switchHandler = makeSwitchHandler();
|
|
291
|
+
const { matter, service } = makeService(options, state, switchHandler, makeTripHandler());
|
|
292
|
+
await service.registerAccessories(new Map());
|
|
293
|
+
const globalLock = accessoryByDisplayName(matter, 'Arming Lock');
|
|
294
|
+
switchOnHandler(globalLock)();
|
|
295
|
+
expect(switchHandler.updateArmingLock).toHaveBeenCalledWith('global', true);
|
|
296
|
+
const homeLock = accessoryByDisplayName(matter, 'Arming Lock Home');
|
|
297
|
+
switchOffHandler(homeLock)();
|
|
298
|
+
expect(switchHandler.updateArmingLock).toHaveBeenCalledWith('home', false);
|
|
299
|
+
});
|
|
300
|
+
it('pushes mode switch state on bus events, only when the value changed', async () => {
|
|
301
|
+
const state = makeState({ targetState: SecurityState.HOME });
|
|
302
|
+
const options = makeOptions({ modeSwitches: true, modeOffSwitch: true });
|
|
303
|
+
const { matter, service } = makeService(options, state);
|
|
304
|
+
const bus = makeBus();
|
|
305
|
+
service.attachToBus(bus);
|
|
306
|
+
await service.registerAccessories(new Map());
|
|
307
|
+
// Startup sync: mode-home on, every other mode switch off.
|
|
308
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', true)).toBe(1);
|
|
309
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', false)).toBe(0);
|
|
310
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-7', false)).toBe(1);
|
|
311
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-9', false)).toBe(1);
|
|
312
|
+
bus.emit(EventType.RESET_MODE_SWITCHES, {});
|
|
313
|
+
// Only mode-home changed (on -> off); the others stay untouched.
|
|
314
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', true)).toBe(1);
|
|
315
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', false)).toBe(1);
|
|
316
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-7', false)).toBe(1);
|
|
317
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-9', false)).toBe(1);
|
|
318
|
+
bus.emit(EventType.UPDATE_MODE_SWITCHES, {});
|
|
319
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', true)).toBe(2);
|
|
320
|
+
// Redundant re-emission pushes nothing new.
|
|
321
|
+
bus.emit(EventType.UPDATE_MODE_SWITCHES, {});
|
|
322
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', true)).toBe(2);
|
|
323
|
+
});
|
|
324
|
+
it('resets trip switches to off at startup and after a controller trip', async () => {
|
|
325
|
+
const state = makeState();
|
|
326
|
+
const options = makeOptions({ tripSwitch: true, tripModeSwitches: true, tripHomeSwitches: [{ label: 'Kitchen' }] });
|
|
327
|
+
const { matter, service } = makeService(options, state);
|
|
328
|
+
const bus = makeBus();
|
|
329
|
+
service.attachToBus(bus);
|
|
330
|
+
await service.registerAccessories(new Map());
|
|
331
|
+
// Startup sync pushes every trip switch off (Homebridge would auto-update
|
|
332
|
+
// onOff after a trip, so the reset must be able to push it back).
|
|
333
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-1', false)).toBe(1);
|
|
334
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-16', false)).toBe(1);
|
|
335
|
+
// A controller trip turns the switch on (auto-updated by Homebridge and
|
|
336
|
+
// recorded by the service as if it had happened).
|
|
337
|
+
const trip = accessoryByDisplayName(matter, 'Trip');
|
|
338
|
+
switchOnHandler(trip)();
|
|
339
|
+
// The reset now sees a change and pushes the switch back off.
|
|
340
|
+
bus.emit(EventType.RESET_TRIP_SWITCHES, {});
|
|
341
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-1', false)).toBe(2);
|
|
342
|
+
// An unchanged trip switch is not pushed again.
|
|
343
|
+
bus.emit(EventType.RESET_TRIP_SWITCHES, {});
|
|
344
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-1', false)).toBe(2);
|
|
345
|
+
});
|
|
346
|
+
it('pushes sensor occupancy state on SENSOR_STATE_CHANGED', async () => {
|
|
347
|
+
const state = makeState();
|
|
348
|
+
const options = makeOptions({ trippedMotionSensor: true, resetSensor: true });
|
|
349
|
+
const { matter, service } = makeService(options, state);
|
|
350
|
+
const bus = makeBus();
|
|
351
|
+
service.attachToBus(bus);
|
|
352
|
+
await service.registerAccessories(new Map());
|
|
353
|
+
bus.emit(EventType.SENSOR_STATE_CHANGED, { sensor: 'tripped', value: true });
|
|
354
|
+
bus.emit(EventType.SENSOR_STATE_CHANGED, { sensor: 'tripped', value: true });
|
|
355
|
+
bus.emit(EventType.SENSOR_STATE_CHANGED, { sensor: 'reset', value: false });
|
|
356
|
+
expect(matter.updateAccessoryState).toHaveBeenCalledWith('matter-uuid-motion-sensor-2', 'occupancySensing', { occupancy: { occupied: true } });
|
|
357
|
+
expect(matter.updateAccessoryState).toHaveBeenCalledWith('matter-uuid-motion-sensor-3', 'occupancySensing', { occupancy: { occupied: false } });
|
|
358
|
+
// A repeated reading of the same value is not pushed again. The startup sync
|
|
359
|
+
// pushed an occupied:false once, so only the single occupied:true push counts.
|
|
360
|
+
const occupiedPushes = matter.updateAccessoryState.mock.calls.filter(call => call[0] === 'matter-uuid-motion-sensor-2'
|
|
361
|
+
&& call[2].occupancy?.occupied === true);
|
|
362
|
+
expect(occupiedPushes).toHaveLength(1);
|
|
363
|
+
});
|
|
364
|
+
it('syncs every registered mode switch to the current target state after registration', async () => {
|
|
365
|
+
const state = makeState({ targetState: SecurityState.AWAY });
|
|
366
|
+
const options = makeOptions({ modeSwitches: true });
|
|
367
|
+
const { matter, service } = makeService(options, state);
|
|
368
|
+
await service.registerAccessories(new Map());
|
|
369
|
+
// mode-away (switch-7) on, mode-home (switch-6) off.
|
|
370
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-7', true)).toBe(1);
|
|
371
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', false)).toBe(1);
|
|
372
|
+
});
|
|
373
|
+
it('translates unexpected handler errors into a Matter Failure', async () => {
|
|
374
|
+
const state = makeState();
|
|
375
|
+
const options = makeOptions({ modeSwitches: true });
|
|
376
|
+
const switchHandler = makeSwitchHandler();
|
|
377
|
+
switchHandler.setModeSwitch = vi.fn(() => {
|
|
378
|
+
throw new Error('device exploded');
|
|
379
|
+
});
|
|
380
|
+
const { matter, service } = makeService(options, state, switchHandler, makeTripHandler());
|
|
381
|
+
await service.registerAccessories(new Map());
|
|
382
|
+
const modeHome = accessoryByDisplayName(matter, 'Mode Home');
|
|
383
|
+
let caught;
|
|
384
|
+
try {
|
|
385
|
+
switchOnHandler(modeHome)();
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
caught = error;
|
|
389
|
+
}
|
|
390
|
+
expect(caught).toBeInstanceOf(Failure);
|
|
391
|
+
expect(caught.message).toBe('device exploded');
|
|
392
|
+
});
|
|
393
|
+
it('keeps already-mapped Matter protocol errors intact', async () => {
|
|
394
|
+
const state = makeState();
|
|
395
|
+
const options = makeOptions({ modeSwitches: true });
|
|
396
|
+
const switchHandler = makeSwitchHandler();
|
|
397
|
+
const blocked = new InvalidInState('still arming');
|
|
398
|
+
switchHandler.setModeSwitch = vi.fn(() => {
|
|
399
|
+
throw blocked;
|
|
400
|
+
});
|
|
401
|
+
const { matter, service } = makeService(options, state, switchHandler, makeTripHandler());
|
|
402
|
+
await service.registerAccessories(new Map());
|
|
403
|
+
const modeHome = accessoryByDisplayName(matter, 'Mode Home');
|
|
404
|
+
let caught;
|
|
405
|
+
try {
|
|
406
|
+
switchOnHandler(modeHome)();
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
caught = error;
|
|
410
|
+
}
|
|
411
|
+
expect(caught).toBe(blocked);
|
|
412
|
+
});
|
|
413
|
+
it('keeps the controller state honest when a command is refused', async () => {
|
|
414
|
+
const state = makeState();
|
|
415
|
+
const options = makeOptions({ modeSwitches: true });
|
|
416
|
+
const switchHandler = makeSwitchHandler();
|
|
417
|
+
switchHandler.setModeSwitch = vi.fn(() => ({ success: false, reason: 'arming is blocked by an arming lock switch' }));
|
|
418
|
+
const { matter, service } = makeService(options, state, switchHandler, makeTripHandler());
|
|
419
|
+
await service.registerAccessories(new Map());
|
|
420
|
+
const modeHome = accessoryByDisplayName(matter, 'Mode Home');
|
|
421
|
+
expect(() => switchOnHandler(modeHome)()).toThrow();
|
|
422
|
+
// The startup sync pushed the switch off; the refused command must not
|
|
423
|
+
// record it as on, otherwise the switch would appear stuck on.
|
|
424
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-6', true)).toBe(0);
|
|
425
|
+
});
|
|
426
|
+
it('syncs arming-lock switches from state at registration', async () => {
|
|
427
|
+
const state = makeState({ armingLocks: { global: true, home: false, away: false, night: false } });
|
|
428
|
+
const options = makeOptions({ armingLockSwitch: true, armingLockSwitches: true });
|
|
429
|
+
const { matter, service } = makeService(options, state);
|
|
430
|
+
await service.registerAccessories(new Map());
|
|
431
|
+
// global lock (switch-12) on, mode locks (switch-13..15) off.
|
|
432
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-12', true)).toBe(1);
|
|
433
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-12', false)).toBe(0);
|
|
434
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-13', false)).toBe(1);
|
|
435
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-14', false)).toBe(1);
|
|
436
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-15', false)).toBe(1);
|
|
437
|
+
});
|
|
438
|
+
it('pushes the current sensor reading at registration', async () => {
|
|
439
|
+
const state = makeState();
|
|
440
|
+
const options = makeOptions({ trippedMotionSensor: true, resetSensor: true });
|
|
441
|
+
const sensorHandler = makeSensorHandler();
|
|
442
|
+
// Sync loop only asks for configured sensors: tripped first, then reset.
|
|
443
|
+
sensorHandler.getMotionState.mockReturnValueOnce(true)
|
|
444
|
+
.mockReturnValueOnce(false);
|
|
445
|
+
const { matter, service } = makeService(options, state, makeSwitchHandler(), makeTripHandler(), sensorHandler);
|
|
446
|
+
await service.registerAccessories(new Map());
|
|
447
|
+
expect(matter.updateAccessoryState).toHaveBeenCalledWith('matter-uuid-motion-sensor-2', 'occupancySensing', { occupancy: { occupied: true } });
|
|
448
|
+
expect(matter.updateAccessoryState).toHaveBeenCalledWith('matter-uuid-motion-sensor-3', 'occupancySensing', { occupancy: { occupied: false } });
|
|
449
|
+
});
|
|
450
|
+
it('pushes the trip switch on when a trip fires from the server or webhooks', async () => {
|
|
451
|
+
const state = makeState();
|
|
452
|
+
const options = makeOptions({ tripSwitch: true });
|
|
453
|
+
const { matter, service } = makeService(options, state);
|
|
454
|
+
const bus = makeBus();
|
|
455
|
+
service.attachToBus(bus);
|
|
456
|
+
await service.registerAccessories(new Map());
|
|
457
|
+
bus.emit(EventType.TRIGGER_FIRED, { origin: OriginType.EXTERNAL });
|
|
458
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-1', true)).toBe(1);
|
|
459
|
+
// Controller-initiated trips are auto-updated by Homebridge; nothing to push.
|
|
460
|
+
bus.emit(EventType.TRIGGER_FIRED, { origin: OriginType.REGULAR_SWITCH });
|
|
461
|
+
expect(countSwitchUpdates(matter, 'matter-uuid-switch-1', true)).toBe(1);
|
|
462
|
+
});
|
|
463
|
+
it('exposes pause and away-extended switches even when modeSwitches is off', async () => {
|
|
464
|
+
const state = makeState();
|
|
465
|
+
const options = makeOptions({ modeSwitches: false, modePauseSwitch: true, modeAwayExtendedSwitch: true });
|
|
466
|
+
const { matter, service } = makeService(options, state);
|
|
467
|
+
await service.registerAccessories(new Map());
|
|
468
|
+
const names = registeredAccessories(matter).map(a => a.displayName);
|
|
469
|
+
expect(names).toContain('Mode Pause');
|
|
470
|
+
expect(names).toContain('Mode Away Extended');
|
|
471
|
+
expect(names).not.toContain('Mode Home');
|
|
472
|
+
expect(names).not.toContain('Mode Off');
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
//# sourceMappingURL=matter-service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matter-service.test.js","sourceRoot":"","sources":["../../src/tests/matter-service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|