summaryrefslogtreecommitdiff
path: root/tests/secure/test_secure.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/secure/test_secure.cpp')
-rw-r--r--tests/secure/test_secure.cpp81
1 files changed, 32 insertions, 49 deletions
diff --git a/tests/secure/test_secure.cpp b/tests/secure/test_secure.cpp
index b7c51b0bd2..6ca98d78f3 100644
--- a/tests/secure/test_secure.cpp
+++ b/tests/secure/test_secure.cpp
@@ -27,28 +27,13 @@ class Secure : public TestFixture {
27 void SetUp() override { 27 void SetUp() override {
28 secure_lock(); 28 secure_lock();
29 } 29 }
30 // Convenience function to tap `key`.
31 void TapKey(KeymapKey key) {
32 key.press();
33 run_one_scan_loop();
34 key.release();
35 run_one_scan_loop();
36 }
37
38 // Taps in order each key in `keys`.
39 template <typename... Ts>
40 void TapKeys(Ts... keys) {
41 for (KeymapKey key : {keys...}) {
42 TapKey(key);
43 }
44 }
45}; 30};
46 31
47TEST_F(Secure, test_lock) { 32TEST_F(Secure, test_lock) {
48 TestDriver driver; 33 TestDriver driver;
49 34
50 // Allow any number of empty reports. 35 // Don't allow empty reports.
51 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); 36 EXPECT_NO_REPORT(driver);
52 37
53 EXPECT_FALSE(secure_is_unlocked()); 38 EXPECT_FALSE(secure_is_unlocked());
54 secure_unlock(); 39 secure_unlock();
@@ -64,8 +49,8 @@ TEST_F(Secure, test_lock) {
64TEST_F(Secure, test_unlock_timeout) { 49TEST_F(Secure, test_unlock_timeout) {
65 TestDriver driver; 50 TestDriver driver;
66 51
67 // Allow any number of empty reports. 52 // Don't allow empty reports.
68 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); 53 EXPECT_NO_REPORT(driver);
69 54
70 EXPECT_FALSE(secure_is_unlocked()); 55 EXPECT_FALSE(secure_is_unlocked());
71 secure_unlock(); 56 secure_unlock();
@@ -86,13 +71,13 @@ TEST_F(Secure, test_unlock_request) {
86 71
87 set_keymap({key_mo, key_a, key_b, key_c, key_d}); 72 set_keymap({key_mo, key_a, key_b, key_c, key_d});
88 73
89 // Allow any number of empty reports. 74 // Don't allow empty reports.
90 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); 75 EXPECT_NO_REPORT(driver);
91 76
92 EXPECT_TRUE(secure_is_locked()); 77 EXPECT_TRUE(secure_is_locked());
93 secure_request_unlock(); 78 secure_request_unlock();
94 EXPECT_TRUE(secure_is_unlocking()); 79 EXPECT_TRUE(secure_is_unlocking());
95 TapKeys(key_a, key_b, key_c, key_d); 80 tap_keys(key_a, key_b, key_c, key_d);
96 EXPECT_TRUE(secure_is_unlocked()); 81 EXPECT_TRUE(secure_is_unlocked());
97 82
98 testing::Mock::VerifyAndClearExpectations(&driver); 83 testing::Mock::VerifyAndClearExpectations(&driver);
@@ -109,18 +94,18 @@ TEST_F(Secure, test_unlock_request_fail) {
109 set_keymap({key_e, key_a, key_b, key_c, key_d}); 94 set_keymap({key_e, key_a, key_b, key_c, key_d});
110 95
111 // Allow any number of empty reports. 96 // Allow any number of empty reports.
112 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(AnyNumber()); 97 EXPECT_EMPTY_REPORT(driver).Times(AnyNumber());
113 { // Expect the following reports in this order. 98 { // Expect the following reports in this order.
114 InSequence s; 99 InSequence s;
115 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_A))); 100 EXPECT_REPORT(driver, (KC_A));
116 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); 101 EXPECT_REPORT(driver, (KC_B));
117 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C))); 102 EXPECT_REPORT(driver, (KC_C));
118 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D))); 103 EXPECT_REPORT(driver, (KC_D));
119 } 104 }
120 EXPECT_TRUE(secure_is_locked()); 105 EXPECT_TRUE(secure_is_locked());
121 secure_request_unlock(); 106 secure_request_unlock();
122 EXPECT_TRUE(secure_is_unlocking()); 107 EXPECT_TRUE(secure_is_unlocking());
123 TapKeys(key_e, key_a, key_b, key_c, key_d); 108 tap_keys(key_e, key_a, key_b, key_c, key_d);
124 EXPECT_FALSE(secure_is_unlocked()); 109 EXPECT_FALSE(secure_is_unlocked());
125 110
126 testing::Mock::VerifyAndClearExpectations(&driver); 111 testing::Mock::VerifyAndClearExpectations(&driver);
@@ -129,8 +114,8 @@ TEST_F(Secure, test_unlock_request_fail) {
129TEST_F(Secure, test_unlock_request_timeout) { 114TEST_F(Secure, test_unlock_request_timeout) {
130 TestDriver driver; 115 TestDriver driver;
131 116
132 // Allow any number of empty reports. 117 // Don't allow empty reports.
133 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); 118 EXPECT_NO_REPORT(driver);
134 119
135 EXPECT_FALSE(secure_is_unlocked()); 120 EXPECT_FALSE(secure_is_unlocked());
136 secure_request_unlock(); 121 secure_request_unlock();
@@ -153,16 +138,16 @@ TEST_F(Secure, test_unlock_request_fail_mid) {
153 set_keymap({key_e, key_a, key_b, key_c, key_d}); 138 set_keymap({key_e, key_a, key_b, key_c, key_d});
154 139
155 // Allow any number of empty reports. 140 // Allow any number of empty reports.
156 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(AnyNumber()); 141 EXPECT_EMPTY_REPORT(driver).Times(AnyNumber());
157 { // Expect the following reports in this order. 142 { // Expect the following reports in this order.
158 InSequence s; 143 InSequence s;
159 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C))); 144 EXPECT_REPORT(driver, (KC_C));
160 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_D))); 145 EXPECT_REPORT(driver, (KC_D));
161 } 146 }
162 EXPECT_FALSE(secure_is_unlocked()); 147 EXPECT_FALSE(secure_is_unlocked());
163 secure_request_unlock(); 148 secure_request_unlock();
164 EXPECT_TRUE(secure_is_unlocking()); 149 EXPECT_TRUE(secure_is_unlocking());
165 TapKeys(key_a, key_b, key_e, key_c, key_d); 150 tap_keys(key_a, key_b, key_e, key_c, key_d);
166 EXPECT_FALSE(secure_is_unlocking()); 151 EXPECT_FALSE(secure_is_unlocking());
167 EXPECT_FALSE(secure_is_unlocked()); 152 EXPECT_FALSE(secure_is_unlocked());
168 153
@@ -180,16 +165,16 @@ TEST_F(Secure, test_unlock_request_fail_out_of_order) {
180 set_keymap({key_e, key_a, key_b, key_c, key_d}); 165 set_keymap({key_e, key_a, key_b, key_c, key_d});
181 166
182 // Allow any number of empty reports. 167 // Allow any number of empty reports.
183 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(AnyNumber()); 168 EXPECT_EMPTY_REPORT(driver).Times(AnyNumber());
184 { // Expect the following reports in this order. 169 { // Expect the following reports in this order.
185 InSequence s; 170 InSequence s;
186 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_B))); 171 EXPECT_REPORT(driver, (KC_B));
187 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_C))); 172 EXPECT_REPORT(driver, (KC_C));
188 } 173 }
189 EXPECT_FALSE(secure_is_unlocked()); 174 EXPECT_FALSE(secure_is_unlocked());
190 secure_request_unlock(); 175 secure_request_unlock();
191 EXPECT_TRUE(secure_is_unlocking()); 176 EXPECT_TRUE(secure_is_unlocking());
192 TapKeys(key_a, key_d, key_b, key_c); 177 tap_keys(key_a, key_d, key_b, key_c);
193 EXPECT_TRUE(secure_is_locked()); 178 EXPECT_TRUE(secure_is_locked());
194 EXPECT_FALSE(secure_is_unlocking()); 179 EXPECT_FALSE(secure_is_unlocking());
195 EXPECT_FALSE(secure_is_unlocked()); 180 EXPECT_FALSE(secure_is_unlocked());
@@ -207,8 +192,8 @@ TEST_F(Secure, test_unlock_request_on_layer) {
207 192
208 set_keymap({key_mo, key_a, key_b, key_c, key_d}); 193 set_keymap({key_mo, key_a, key_b, key_c, key_d});
209 194
210 // Allow any number of empty reports. 195 // Don't allow empty reports.
211 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport())).Times(0); 196 EXPECT_NO_REPORT(driver);
212 197
213 EXPECT_TRUE(secure_is_locked()); 198 EXPECT_TRUE(secure_is_locked());
214 key_mo.press(); 199 key_mo.press();
@@ -217,7 +202,7 @@ TEST_F(Secure, test_unlock_request_on_layer) {
217 key_mo.release(); 202 key_mo.release();
218 run_one_scan_loop(); 203 run_one_scan_loop();
219 EXPECT_TRUE(secure_is_unlocking()); 204 EXPECT_TRUE(secure_is_unlocking());
220 TapKeys(key_a, key_b, key_c, key_d); 205 tap_keys(key_a, key_b, key_c, key_d);
221 EXPECT_TRUE(secure_is_unlocked()); 206 EXPECT_TRUE(secure_is_unlocked());
222 EXPECT_FALSE(layer_state_is(1)); 207 EXPECT_FALSE(layer_state_is(1));
223 208
@@ -234,9 +219,8 @@ TEST_F(Secure, test_unlock_request_mid_stroke) {
234 219
235 set_keymap({key_e, key_a, key_b, key_c, key_d}); 220 set_keymap({key_e, key_a, key_b, key_c, key_d});
236 221
237 // Allow any number of empty reports. 222 EXPECT_REPORT(driver, (KC_E));
238 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(KC_E))); 223 EXPECT_EMPTY_REPORT(driver);
239 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
240 EXPECT_TRUE(secure_is_locked()); 224 EXPECT_TRUE(secure_is_locked());
241 key_e.press(); 225 key_e.press();
242 run_one_scan_loop(); 226 run_one_scan_loop();
@@ -244,7 +228,7 @@ TEST_F(Secure, test_unlock_request_mid_stroke) {
244 key_e.release(); 228 key_e.release();
245 run_one_scan_loop(); 229 run_one_scan_loop();
246 EXPECT_TRUE(secure_is_unlocking()); 230 EXPECT_TRUE(secure_is_unlocking());
247 TapKeys(key_a, key_b, key_c, key_d); 231 tap_keys(key_a, key_b, key_c, key_d);
248 EXPECT_TRUE(secure_is_unlocked()); 232 EXPECT_TRUE(secure_is_unlocked());
249 233
250 testing::Mock::VerifyAndClearExpectations(&driver); 234 testing::Mock::VerifyAndClearExpectations(&driver);
@@ -260,9 +244,8 @@ TEST_F(Secure, test_unlock_request_mods) {
260 244
261 set_keymap({key_lsft, key_a, key_b, key_c, key_d}); 245 set_keymap({key_lsft, key_a, key_b, key_c, key_d});
262 246
263 // Allow any number of empty reports. 247 EXPECT_REPORT(driver, (key_lsft.report_code));
264 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport(key_lsft.report_code))); 248 EXPECT_EMPTY_REPORT(driver);
265 EXPECT_CALL(driver, send_keyboard_mock(KeyboardReport()));
266 EXPECT_TRUE(secure_is_locked()); 249 EXPECT_TRUE(secure_is_locked());
267 key_lsft.press(); 250 key_lsft.press();
268 run_one_scan_loop(); 251 run_one_scan_loop();
@@ -270,7 +253,7 @@ TEST_F(Secure, test_unlock_request_mods) {
270 key_lsft.release(); 253 key_lsft.release();
271 run_one_scan_loop(); 254 run_one_scan_loop();
272 EXPECT_TRUE(secure_is_unlocking()); 255 EXPECT_TRUE(secure_is_unlocking());
273 TapKeys(key_a, key_b, key_c, key_d); 256 tap_keys(key_a, key_b, key_c, key_d);
274 EXPECT_TRUE(secure_is_unlocked()); 257 EXPECT_TRUE(secure_is_unlocked());
275 258
276 testing::Mock::VerifyAndClearExpectations(&driver); 259 testing::Mock::VerifyAndClearExpectations(&driver);