@@ -92,7 +92,7 @@ def test_001_list_assigned_required(self):
92
92
b"devclass='testclass' backend_domain='test-vm2'\n " )
93
93
self .expected_device_call (
94
94
'test-vm3' , 'Available' ,
95
- b"0\0 dev3 port_id='dev3' device_id='0000:0000::?****** ' "
95
+ b"0\0 dev3 port_id='dev3' device_id='0000:0000::p000000 ' "
96
96
b"devclass='testclass' backend_domain='test-vm3' "
97
97
b"vendor='evil inc.' product='test-device-3'\n "
98
98
)
@@ -103,9 +103,9 @@ def test_001_list_assigned_required(self):
103
103
self .expected_device_call (
104
104
'test-vm2' , 'Assigned' ,
105
105
b"0\0 test-vm1+dev1 port_id='dev1' devclass='testclass' "
106
- b"backend_domain='test-vm1' "
107
- b"mode='required' _option='other option' _extra_opt='yes'\n "
108
- b"test-vm3+dev3 device_id='0000:0000::?****** ' port_id='dev3' "
106
+ b"backend_domain='test-vm1' mode='required' _option='other option' "
107
+ b"_extra_opt='yes'\n "
108
+ b"test-vm3+dev3 device_id='0000:0000::p000000 ' port_id='dev3' "
109
109
b"devclass='testclass' backend_domain='test-vm3' mode='required'\n "
110
110
)
111
111
self .expected_device_call (
@@ -116,14 +116,14 @@ def test_001_list_assigned_required(self):
116
116
117
117
with qubesadmin .tests .tools .StdoutBuffer () as buf :
118
118
qubesadmin .tools .qvm_device .main (
119
- ['testclass' , 'list' , 'test-vm3' ], app = self .app )
119
+ ['testclass' , 'list' , '-s' , ' test-vm3' ], app = self .app )
120
120
self .assertEqual (
121
121
buf .getvalue (),
122
- 'test-vm1:dev1 any device '
123
- ' test-vm2 (required: option=other option, extra_opt=yes), '
124
- ' test-vm3 (required: option=test option)\n '
125
- 'test-vm3:dev3 ?******: evil inc. test-device-3 '
126
- ' test-vm2 (required) \n '
122
+ 'test-vm1:dev1 any device '
123
+ '* test-vm2 (required: option=other option, extra_opt=yes), '
124
+ '* test-vm3 (required: option=test option)\n '
125
+ 'test-vm3:dev3 0000:0000::p000000 * test-vm2 (required) \n '
126
+ 'test-vm3:dev3 ?******: evil inc. test-device-3 \n '
127
127
)
128
128
129
129
def test_002_list_attach (self ):
@@ -152,7 +152,7 @@ def test_002_list_attach(self):
152
152
self .assertEqual (
153
153
buf .getvalue (),
154
154
'test-vm1:dev1 Multimedia: itl test-device '
155
- 'test-vm3 (required )\n '
155
+ 'test-vm3 (attached )\n '
156
156
)
157
157
158
158
def test_003_list_device_classes (self ):
@@ -233,7 +233,7 @@ def test_020_detach(self):
233
233
""" Test detach action """
234
234
self .app .expected_calls [
235
235
('test-vm2' , 'admin.vm.device.testclass.Detach' ,
236
- 'test-vm1+dev1:* ' , None )] = b'0\0 '
236
+ 'test-vm1+dev1:dead:beef:babe:u012345 ' , None )] = b'0\0 '
237
237
qubesadmin .tools .qvm_device .main (
238
238
['testclass' , 'detach' , 'test-vm2' , 'test-vm1:dev1' ], app = self .app )
239
239
self .assertAllCalled ()
@@ -242,7 +242,7 @@ def test_021_detach_unknown(self):
242
242
""" Test detach action """
243
243
self .app .expected_calls [
244
244
('test-vm2' , 'admin.vm.device.testclass.Detach' ,
245
- 'test-vm1+dev7:*' , None )] = b'0\0 '
245
+ 'test-vm1+dev7:0000:0000::?***** *' , None )] = b'0\0 '
246
246
qubesadmin .tools .qvm_device .main (
247
247
['testclass' , 'detach' , 'test-vm2' , 'test-vm1:dev7' ], app = self .app )
248
248
self .assertAllCalled ()
@@ -272,6 +272,9 @@ def test_030_assign(self):
272
272
b"devclass='testclass' backend_domain='test-vm1' "
273
273
b"mode='auto-attach' frontend_domain='test-vm2'"
274
274
)] = b'0\0 '
275
+ self .app .expected_calls [(
276
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
277
+ )] = b'0\0 '
275
278
qubesadmin .tools .qvm_device .main (
276
279
['testclass' , 'assign' , 'test-vm2' , 'test-vm1:dev1' ], app = self .app )
277
280
self .assertAllCalled ()
@@ -286,6 +289,9 @@ def test_031_assign_required(self):
286
289
b"devclass='testclass' backend_domain='test-vm1' mode='required' "
287
290
b"frontend_domain='test-vm2'"
288
291
)] = b'0\0 '
292
+ self .app .expected_calls [(
293
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
294
+ )] = b'0\0 '
289
295
qubesadmin .tools .qvm_device .main (
290
296
['testclass' , 'assign' , '--required' , 'test-vm2' , 'test-vm1:dev1' ], app = self .app )
291
297
self .assertAllCalled ()
@@ -300,6 +306,9 @@ def test_032_assign_ask_and_options(self):
300
306
b"devclass='testclass' backend_domain='test-vm1' "
301
307
b"mode='ask-to-attach' frontend_domain='test-vm2' _read-only='yes'"
302
308
)] = b'0\0 '
309
+ self .app .expected_calls [(
310
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
311
+ )] = b'0\0 '
303
312
with qubesadmin .tests .tools .StdoutBuffer () as buf :
304
313
qubesadmin .tools .qvm_device .main (
305
314
['testclass' , 'assign' , '--ro' , '--ask' , 'test-vm2' ,
@@ -324,11 +333,11 @@ def test_033_assign_invalid(self):
324
333
def test_034_assign_invalid_device (self ):
325
334
""" Test attach action """
326
335
with qubesadmin .tests .tools .StderrBuffer () as stderr :
327
- with self .assertRaises (SystemExit ):
328
- qubesadmin .tools .qvm_device .main (
336
+ retcode = qubesadmin .tools .qvm_device .main (
329
337
['testclass' , 'assign' , 'test-vm2' , 'test-vm1:invalid' ],
330
338
app = self .app )
331
- self .assertIn ('doesn\' t expose testclass device' , stderr .getvalue ())
339
+ self .assertEqual (retcode , 1 )
340
+ self .assertIn ("doesn't expose testclass device" , stderr .getvalue ())
332
341
self .assertAllCalled ()
333
342
334
343
def test_035_assign_invalid_backend (self ):
@@ -351,6 +360,9 @@ def test_036_assign_port(self):
351
360
b"devclass='testclass' backend_domain='test-vm1' "
352
361
b"mode='auto-attach' frontend_domain='test-vm2'"
353
362
)] = b'0\0 '
363
+ self .app .expected_calls [(
364
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
365
+ )] = b'0\0 '
354
366
qubesadmin .tools .qvm_device .main (
355
367
['testclass' , 'assign' , 'test-vm2' , 'test-vm1:dev1' , '--port' ],
356
368
app = self .app )
@@ -366,6 +378,9 @@ def test_037_assign_port_asterisk(self):
366
378
b"devclass='testclass' backend_domain='test-vm1' "
367
379
b"mode='auto-attach' frontend_domain='test-vm2'"
368
380
)] = b'0\0 '
381
+ self .app .expected_calls [(
382
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
383
+ )] = b'0\0 '
369
384
qubesadmin .tools .qvm_device .main (
370
385
['testclass' , 'assign' , 'test-vm2' , 'test-vm1:dev1:*' ],
371
386
app = self .app )
@@ -381,6 +396,9 @@ def test_038_assign_device_from_port(self):
381
396
b"devclass='testclass' backend_domain='test-vm1' "
382
397
b"mode='auto-attach' frontend_domain='test-vm2'"
383
398
)] = b'0\0 '
399
+ self .app .expected_calls [(
400
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
401
+ )] = b'0\0 '
384
402
qubesadmin .tools .qvm_device .main (
385
403
['testclass' , 'assign' , 'test-vm2' , 'test-vm1:dev1' , '--device' ],
386
404
app = self .app )
@@ -433,14 +451,17 @@ def test_041_assign_denied_device(self, mock_deny_list):
433
451
qubesadmin .tools .qvm_device .main (
434
452
['testclass' , 'assign' , '--ask' , 'test-vm2' , 'test-vm1:dev1' ],
435
453
app = self .app )
436
- self .assertIn ('Attention :' , buf .getvalue ())
454
+ self .assertIn ('Warning :' , buf .getvalue ())
437
455
self .assertAllCalled ()
438
456
439
457
def test_050_unassign (self ):
440
458
""" Test unassign action """
441
459
self .app .expected_calls [
442
460
('test-vm2' , 'admin.vm.device.testclass.Unassign' ,
443
461
'test-vm1+dev1:dead:beef:babe:u012345' , None )] = b'0\0 '
462
+ self .app .expected_calls [(
463
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
464
+ )] = b'0\0 '
444
465
qubesadmin .tools .qvm_device .main (
445
466
['testclass' , 'unassign' , 'test-vm2' , 'test-vm1:dev1' ],
446
467
app = self .app )
@@ -451,6 +472,9 @@ def test_051_unassign_unknown(self):
451
472
self .app .expected_calls [
452
473
('test-vm2' , 'admin.vm.device.testclass.Unassign' ,
453
474
'test-vm1+dev7:0000:0000::?******' , None )] = b'0\0 '
475
+ self .app .expected_calls [(
476
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
477
+ )] = b'0\0 '
454
478
qubesadmin .tools .qvm_device .main (
455
479
['testclass' , 'unassign' , 'test-vm2' , 'test-vm1:dev7' ],
456
480
app = self .app )
@@ -461,6 +485,9 @@ def test_052_unassign_port(self):
461
485
self .app .expected_calls [
462
486
('test-vm2' , 'admin.vm.device.testclass.Unassign' ,
463
487
'test-vm1+dev1:*' , None )] = b'0\0 '
488
+ self .app .expected_calls [(
489
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
490
+ )] = b'0\0 '
464
491
qubesadmin .tools .qvm_device .main (
465
492
['testclass' , 'unassign' , 'test-vm2' , 'test-vm1:dev1' , '--port' ],
466
493
app = self .app )
@@ -471,6 +498,9 @@ def test_053_unassign_device_from_port(self):
471
498
self .app .expected_calls [
472
499
('test-vm2' , 'admin.vm.device.testclass.Unassign' ,
473
500
'test-vm1+*:dead:beef:babe:u012345' , None )] = b'0\0 '
501
+ self .app .expected_calls [(
502
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
503
+ )] = b'0\0 '
474
504
qubesadmin .tools .qvm_device .main (
475
505
['testclass' , 'unassign' , 'test-vm2' , 'test-vm1:dev1' , '--device' ],
476
506
app = self .app )
@@ -491,6 +521,9 @@ def test_055_unassign_explicit_device_port(self):
491
521
self .app .expected_calls [
492
522
('test-vm2' , 'admin.vm.device.testclass.Unassign' ,
493
523
'test-vm1+dev1:*' , None )] = b'0\0 '
524
+ self .app .expected_calls [(
525
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
526
+ )] = b'0\0 '
494
527
qubesadmin .tools .qvm_device .main (
495
528
['testclass' , 'unassign' , 'test-vm2' ,
496
529
'test-vm1:dev1:dead:beef:babe:u0123456' , '--port' ], app = self .app )
@@ -518,6 +551,9 @@ def test_057_unassign_all(self):
518
551
self .app .expected_calls [
519
552
('test-vm2' , 'admin.vm.device.testclass.Unassign' ,
520
553
'test-vm1+dev2:*' , None )] = b'0\0 '
554
+ self .app .expected_calls [(
555
+ 'test-vm2' , 'admin.vm.device.testclass.Attached' , None , None
556
+ )] = b'0\0 '
521
557
qubesadmin .tools .qvm_device .main (
522
558
['testclass' , 'unassign' , 'test-vm2' ], app = self .app )
523
559
self .assertAllCalled ()
@@ -528,6 +564,6 @@ def test_060_device_info(self):
528
564
qubesadmin .tools .qvm_device .main (
529
565
['testclass' , 'info' , 'test-vm1:dev1' ],
530
566
app = self .app )
531
- self .assertIn ('dead:beef:babe:u012345: Multimedia: itl test-device' ,
567
+ self .assertIn ('Multimedia: itl test-device\n device ID: dead:beef:babe:u012345 ' ,
532
568
buf .getvalue ())
533
569
self .assertAllCalled ()
0 commit comments