Skip to content

Commit 0735b09

Browse files
committed
tests: Make sure device is found when enumerating
There are a number of trezor and keepkey tests which rely on enumerate and then looking at the enumerated results. However some are looking for the wrong thing and inadverdently doing nothing. So extra checks are added to make sure they are actually doing something.
1 parent 6b043d3 commit 0735b09

File tree

2 files changed

+70
-3
lines changed

2 files changed

+70
-3
lines changed

test/test_keepkey.py

+34-3
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,9 @@ def test_label(self):
210210
for dev in result:
211211
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
212212
self.assertEqual(dev['label'], 'HWI Keepkey')
213+
break
214+
else:
215+
self.fail("Did not enumerate device")
213216

214217
def test_backup(self):
215218
result = self.do_command(self.dev_args + ['backup'])
@@ -228,17 +231,23 @@ def test_pins(self):
228231
self.assertEqual(result['code'], -11)
229232
result = self.do_command(self.dev_args + ['enumerate'])
230233
for dev in result:
231-
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:11044':
234+
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
232235
self.assertFalse(dev['needs_pin_sent'])
236+
break
237+
else:
238+
self.fail("Did not enumerate device")
233239

234240
# Set a PIN
235241
device.wipe(self.client)
236242
load_device_by_mnemonic(client=self.client, mnemonic='alcohol woman abuse must during monitor noble actual mixed trade anger aisle', pin='1234', passphrase_protection=False, label='test')
237243
self.client.call(messages.LockDevice())
238244
result = self.do_command(self.dev_args + ['enumerate'])
239245
for dev in result:
240-
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:11044':
246+
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
241247
self.assertTrue(dev['needs_pin_sent'])
248+
break
249+
else:
250+
self.fail("Did not enumerate device")
242251
result = self.do_command(self.dev_args + ['promptpin'])
243252
self.assertTrue(result['success'])
244253

@@ -268,8 +277,11 @@ def test_pins(self):
268277

269278
result = self.do_command(self.dev_args + ['enumerate'])
270279
for dev in result:
271-
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:11044':
280+
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
272281
self.assertFalse(dev['needs_pin_sent'])
282+
break
283+
else:
284+
self.fail("Did not enumerate device")
273285

274286
# Sending PIN after unlock
275287
result = self.do_command(self.dev_args + ['promptpin'])
@@ -285,20 +297,30 @@ def test_passphrase(self):
285297

286298
# A passphrase will need to be sent
287299
result = self.do_command(self.dev_args + ['enumerate'])
300+
print(result)
288301
for dev in result:
289302
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
290303
self.assertTrue(dev['needs_passphrase_sent'])
304+
break
305+
else:
306+
self.fail("Did not enumerate device")
291307
result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
292308
for dev in result:
293309
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
294310
self.assertFalse(dev['needs_passphrase_sent'])
295311
fpr = dev['fingerprint']
312+
break
313+
else:
314+
self.fail("Did not enumerate device")
296315
# A different passphrase will change the fingerprint
297316
result = self.do_command(self.dev_args + ['-p', 'pass2', 'enumerate'])
298317
for dev in result:
299318
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
300319
self.assertFalse(dev['needs_passphrase_sent'])
301320
self.assertNotEqual(dev['fingerprint'], fpr)
321+
break
322+
else:
323+
self.fail("Did not enumerate device")
302324

303325
# Clearing the session and starting a new one with a new passphrase should change the passphrase
304326
self.client.call(messages.LockDevice())
@@ -307,6 +329,9 @@ def test_passphrase(self):
307329
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
308330
self.assertFalse(dev['needs_passphrase_sent'])
309331
self.assertNotEqual(dev['fingerprint'], fpr)
332+
break
333+
else:
334+
self.fail("Did not enumerate device")
310335

311336
# Disable passphrase
312337
self.do_command(self.dev_args + ['togglepassphrase'])
@@ -317,12 +342,18 @@ def test_passphrase(self):
317342
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
318343
self.assertFalse(dev['needs_passphrase_sent'])
319344
self.assertEquals(dev['fingerprint'], '95d8f670')
345+
break
346+
else:
347+
self.fail("Did not enumerate device")
320348
# Setting a passphrase won't change the fingerprint
321349
result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
322350
for dev in result:
323351
if dev['type'] == 'keepkey' and dev['path'] == 'udp:127.0.0.1:11044':
324352
self.assertFalse(dev['needs_passphrase_sent'])
325353
self.assertEquals(dev['fingerprint'], '95d8f670')
354+
break
355+
else:
356+
self.fail("Did not enumerate device")
326357

327358
def keepkey_test_suite(emulator, rpc, userpass, interface):
328359
# Redirect stderr to /dev/null as it's super spammy

test/test_trezor.py

+36
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ def test_label(self):
180180
for dev in result:
181181
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
182182
self.assertEqual(dev['label'], 'test')
183+
break
184+
else:
185+
self.fail("Did not enumerate device")
183186

184187
# Trezor specific management (setup, wipe, restore, backup, promptpin, sendpin) command tests
185188
class TestTrezorManCommands(TrezorTestCase):
@@ -223,6 +226,9 @@ def test_label(self):
223226
for dev in result:
224227
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
225228
self.assertEqual(dev['label'], 'HWI Trezor')
229+
break
230+
else:
231+
self.fail("Did not enumerate device")
226232

227233
def test_backup(self):
228234
result = self.do_command(self.dev_args + ['backup'])
@@ -243,6 +249,9 @@ def test_pins(self):
243249
for dev in result:
244250
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
245251
self.assertFalse(dev['needs_pin_sent'])
252+
break
253+
else:
254+
self.fail("Did not enumerate device")
246255

247256
# Set a PIN
248257
device.wipe(self.client)
@@ -253,6 +262,9 @@ def test_pins(self):
253262
for dev in result:
254263
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
255264
self.assertTrue(dev['needs_pin_sent'])
265+
break
266+
else:
267+
self.fail("Did not enumerate device")
256268
result = self.do_command(self.dev_args + ['promptpin'])
257269
self.assertTrue(result['success'])
258270

@@ -284,6 +296,9 @@ def test_pins(self):
284296
for dev in result:
285297
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
286298
self.assertFalse(dev['needs_pin_sent'])
299+
break
300+
else:
301+
self.fail("Did not enumerate device")
287302

288303
# Sending PIN after unlock
289304
result = self.do_command(self.dev_args + ['promptpin'])
@@ -302,11 +317,17 @@ def test_passphrase(self):
302317
for dev in result:
303318
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
304319
self.assertTrue(dev['needs_passphrase_sent'])
320+
break
321+
else:
322+
self.fail("Did not enumerate device")
305323
result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
306324
for dev in result:
307325
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
308326
self.assertFalse(dev['needs_passphrase_sent'])
309327
fpr = dev['fingerprint']
328+
break
329+
else:
330+
self.fail("Did not enumerate device")
310331

311332
if self.emulator.model == 't':
312333
# Trezor T: A different passphrase would not change the fingerprint
@@ -315,13 +336,19 @@ def test_passphrase(self):
315336
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
316337
self.assertFalse(dev['needs_passphrase_sent'])
317338
self.assertEqual(dev['fingerprint'], fpr)
339+
break
340+
else:
341+
self.fail("Did not enumerate device")
318342
else:
319343
# Trezor 1: A different passphrase will change the fingerprint
320344
result = self.do_command(self.dev_args + ['-p', 'pass2', 'enumerate'])
321345
for dev in result:
322346
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
323347
self.assertFalse(dev['needs_passphrase_sent'])
324348
self.assertNotEqual(dev['fingerprint'], fpr)
349+
break
350+
else:
351+
self.fail("Did not enumerate device")
325352

326353
# Clearing the session and starting a new one with a new passphrase should change the passphrase
327354
self.client.call(messages.Initialize())
@@ -330,6 +357,9 @@ def test_passphrase(self):
330357
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
331358
self.assertFalse(dev['needs_passphrase_sent'])
332359
self.assertNotEqual(dev['fingerprint'], fpr)
360+
break
361+
else:
362+
self.fail("Did not enumerate device")
333363

334364
# Disable passphrase
335365
self.do_command(self.dev_args + ['togglepassphrase'])
@@ -340,12 +370,18 @@ def test_passphrase(self):
340370
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
341371
self.assertFalse(dev['needs_passphrase_sent'])
342372
self.assertEquals(dev['fingerprint'], '95d8f670')
373+
break
374+
else:
375+
self.fail("Did not enumerate device")
343376
# Setting a passphrase won't change the fingerprint
344377
result = self.do_command(self.dev_args + ['-p', 'pass', 'enumerate'])
345378
for dev in result:
346379
if dev['type'] == 'trezor' and dev['path'] == 'udp:127.0.0.1:21324':
347380
self.assertFalse(dev['needs_passphrase_sent'])
348381
self.assertEquals(dev['fingerprint'], '95d8f670')
382+
break
383+
else:
384+
self.fail("Did not enumerate device")
349385

350386
def trezor_test_suite(emulator, rpc, userpass, interface, model):
351387
assert model in TREZOR_MODELS

0 commit comments

Comments
 (0)