From fcfb2e004a59652f4b09375602f0e860afdd3af8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sat, 13 May 2017 01:05:26 +0200 Subject: [PATCH] tests: more for admin.Events method --- qubes/tests/api_admin.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/qubes/tests/api_admin.py b/qubes/tests/api_admin.py index ab445b53..f4b475d1 100644 --- a/qubes/tests/api_admin.py +++ b/qubes/tests/api_admin.py @@ -892,6 +892,38 @@ class TC_00_VMs(AdminAPITestCase): unittest.mock.call(self.vm, 'test-event', arg1='abc') ]) + def test_271_events_add_vm(self): + send_event = unittest.mock.Mock(spec=[]) + mgmt_obj = qubes.api.admin.QubesAdminAPI(self.app, b'dom0', b'admin.Events', + b'dom0', b'', send_event=send_event) + + @asyncio.coroutine + def fire_event(): + self.vm.fire_event('test-event', arg1='abc') + # add VM _after_ starting admin.Events call + vm = self.app.add_new_vm('AppVM', label='red', name='test-vm2', + template='test-template') + vm.fire_event('test-event2', arg1='abc') + mgmt_obj.cancel() + return vm + + loop = asyncio.get_event_loop() + execute_task = asyncio.ensure_future( + mgmt_obj.execute(untrusted_payload=b'')) + event_task = asyncio.ensure_future(fire_event()) + loop.run_until_complete(execute_task) + vm2 = event_task.result() + self.assertIsNone(execute_task.result()) + self.assertEventFired(self.emitter, + 'mgmt-permission:' + 'admin.Events') + self.assertEqual(send_event.mock_calls, + [ + unittest.mock.call(self.app, 'connection-established'), + unittest.mock.call(self.vm, 'test-event', arg1='abc'), + unittest.mock.call(self.app, 'domain-add', vm=vm2), + unittest.mock.call(vm2, 'test-event2', arg1='abc'), + ]) + def test_280_feature_list(self): self.vm.features['test-feature'] = 'some-value' value = self.call_mgmt_func(b'admin.vm.feature.List', b'test-vm1')