15
15
local test = require " integration_test"
16
16
test .add_package_capability (" lockAlarm.yml" )
17
17
local t_utils = require " integration_test.utils"
18
+ local capabilities = require " st.capabilities"
18
19
local clusters = require " st.matter.clusters"
19
20
20
21
local mock_device_record = {
@@ -41,58 +42,75 @@ local mock_device_record = {
41
42
local mock_device = test .mock_device .build_test_matter_device (mock_device_record )
42
43
43
44
local mock_device_record_level = {
44
- profile = t_utils .get_profile_definition (" lock-nocodes-notamper-batteryLevel.yml" ),
45
- manufacturer_info = {vendor_id = 0x129F , product_id = 0x0001 }, -- Level Lock Plus
46
- endpoints = {
47
- {
48
- endpoint_id = 2 ,
49
- clusters = {
50
- {cluster_id = clusters .Basic .ID , cluster_type = " SERVER" },
51
- },
52
- device_types = {
53
- device_type_id = 0x0016 , device_type_revision = 1 , -- RootNode
54
- }
45
+ profile = t_utils .get_profile_definition (" lock-nocodes-notamper-batteryLevel.yml" ),
46
+ manufacturer_info = {vendor_id = 0x129F , product_id = 0x0001 }, -- Level Lock Plus
47
+ endpoints = {
48
+ {
49
+ endpoint_id = 2 ,
50
+ clusters = {
51
+ {cluster_id = clusters .Basic .ID , cluster_type = " SERVER" },
55
52
},
56
- {
57
- endpoint_id = 10 ,
58
- clusters = {
59
- {cluster_id = clusters .DoorLock .ID , cluster_type = " SERVER" , feature_map = 0x0000 },
60
- },
53
+ device_types = {
54
+ device_type_id = 0x0016 , device_type_revision = 1 , -- RootNode
55
+ }
56
+ },
57
+ {
58
+ endpoint_id = 10 ,
59
+ clusters = {
60
+ {cluster_id = clusters .DoorLock .ID , cluster_type = " SERVER" , feature_map = 0x0000 },
61
61
},
62
62
},
63
+ },
63
64
}
64
65
65
66
local mock_device_level = test .mock_device .build_test_matter_device (mock_device_record_level )
66
67
67
68
local function test_init ()
68
- local subscribe_request = clusters .DoorLock .attributes .LockState :subscribe (mock_device )
69
- subscribe_request :merge (clusters .DoorLock .events .DoorLockAlarm :subscribe (mock_device ))
70
- subscribe_request :merge (clusters .DoorLock .events .LockOperation :subscribe (mock_device ))
71
- subscribe_request :merge (clusters .DoorLock .events .LockUserChange :subscribe (mock_device ))
72
- test .socket [" matter" ]:__expect_send ({mock_device .id , subscribe_request })
73
- test .mock_device .add_test_device (mock_device )
69
+ test .disable_startup_messages ()
70
+ test .mock_device .add_test_device (mock_device )
71
+ test .socket .device_lifecycle :__queue_receive ({ mock_device .id , " added" })
72
+ test .socket .capability :__expect_send (
73
+ mock_device :generate_test_message (" main" , capabilities .tamperAlert .tamper .clear ())
74
+ )
75
+ test .socket .capability :__expect_send (
76
+ mock_device :generate_test_message (" main" , capabilities .lockCodes .lockCodes (" []" , {visibility = {displayed = false }}))
77
+ )
78
+ local req = clusters .DoorLock .attributes .MaxPINCodeLength :read (mock_device , 10 )
79
+ req :merge (clusters .DoorLock .attributes .MinPINCodeLength :read (mock_device , 10 ))
80
+ req :merge (clusters .DoorLock .attributes .NumberOfPINUsersSupported :read (mock_device , 10 ))
81
+ test .socket .matter :__expect_send ({mock_device .id , req })
82
+ test .socket .device_lifecycle :__queue_receive ({ mock_device .id , " init" })
83
+ local subscribe_request = clusters .DoorLock .attributes .LockState :subscribe (mock_device )
84
+ subscribe_request :merge (clusters .DoorLock .events .DoorLockAlarm :subscribe (mock_device ))
85
+ subscribe_request :merge (clusters .DoorLock .events .LockOperation :subscribe (mock_device ))
86
+ subscribe_request :merge (clusters .DoorLock .events .LockUserChange :subscribe (mock_device ))
87
+ test .socket [" matter" ]:__expect_send ({mock_device .id , subscribe_request })
88
+ test .mock_device .add_test_device (mock_device )
89
+
74
90
75
- local subscribe_request_level = clusters .DoorLock .attributes .LockState :subscribe (mock_device_level )
76
- test .socket [" matter" ]:__expect_send ({mock_device_level .id , subscribe_request_level })
77
- test .mock_device .add_test_device (mock_device_level )
91
+ test .mock_device .add_test_device (mock_device_level )
92
+ test .socket .device_lifecycle :__queue_receive ({ mock_device_level .id , " added" })
93
+ test .socket .device_lifecycle :__queue_receive ({ mock_device_level .id , " init" })
94
+ local subscribe_request_level = clusters .DoorLock .attributes .LockState :subscribe (mock_device_level )
95
+ test .socket [" matter" ]:__expect_send ({mock_device_level .id , subscribe_request_level })
78
96
end
79
97
test .set_test_init_function (test_init )
80
98
81
99
test .register_coroutine_test (
82
- " doConfigure lifecycle event for base-lock-nobattery" ,
83
- function ()
84
- test .socket .device_lifecycle :__queue_receive ({ mock_device .id , " doConfigure" })
85
- mock_device :expect_metadata_update ({ profile = " base-lock-nobattery" })
86
- mock_device :expect_metadata_update ({ provisioning_state = " PROVISIONED" })
87
- end
100
+ " doConfigure lifecycle event for base-lock-nobattery" ,
101
+ function ()
102
+ test .socket .device_lifecycle :__queue_receive ({ mock_device .id , " doConfigure" })
103
+ mock_device :expect_metadata_update ({ profile = " base-lock-nobattery" })
104
+ mock_device :expect_metadata_update ({ provisioning_state = " PROVISIONED" })
105
+ end
88
106
)
89
107
90
108
test .register_coroutine_test (
91
- " doConfigure lifecycle event for Level Lock Plus profile" ,
92
- function ()
93
- test .socket .device_lifecycle :__queue_receive ({ mock_device_level .id , " doConfigure" })
94
- mock_device_level :expect_metadata_update ({ provisioning_state = " PROVISIONED" })
95
- end
109
+ " doConfigure lifecycle event for Level Lock Plus profile" ,
110
+ function ()
111
+ test .socket .device_lifecycle :__queue_receive ({ mock_device_level .id , " doConfigure" })
112
+ mock_device_level :expect_metadata_update ({ provisioning_state = " PROVISIONED" })
113
+ end
96
114
)
97
115
98
116
test .run_registered_tests ()
0 commit comments