diff options
author | Vivek Dasmohapatra <vivek@collabora.co.uk> | 2011-09-06 19:18:06 +0100 |
---|---|---|
committer | Vivek Dasmohapatra <vivek@collabora.co.uk> | 2011-09-06 19:18:06 +0100 |
commit | e116686b7e33474265795025374023e5ceeb4913 (patch) | |
tree | f98e83869153281357058dc28878be8fc601c061 /tests | |
parent | 6152792b0fc8ebd5daf3be1b743950f8b0698730 (diff) | |
parent | f3933967a7a1573ccaac8c6a52814e388cf7cb98 (diff) |
Merge branch '58-recovery-position'
Diffstat (limited to 'tests')
-rw-r--r-- | tests/twisted/dispatcher/undispatchable.py | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/tests/twisted/dispatcher/undispatchable.py b/tests/twisted/dispatcher/undispatchable.py index 35b5f44f..de63fbca 100644 --- a/tests/twisted/dispatcher/undispatchable.py +++ b/tests/twisted/dispatcher/undispatchable.py @@ -26,7 +26,7 @@ import dbus.bus import dbus.service from servicetest import EventPattern, tp_name_prefix, tp_path_prefix, \ - call_async, sync_dbus + call_async, sync_dbus, assertEquals from mctest import exec_test, SimulatedConnection, SimulatedClient, \ create_fakecm_account, enable_fakecm_account, SimulatedChannel, \ expect_client_setup @@ -39,8 +39,8 @@ def test(q, bus, mc): conn = enable_fakecm_account(q, bus, mc, account, params) text_fixed_properties = dbus.Dictionary({ - cs.CHANNEL + '.TargetHandleType': cs.HT_CONTACT, cs.CHANNEL + '.ChannelType': cs.CHANNEL_TYPE_TEXT, + cs.CHANNEL + '.TargetHandleType': cs.HT_CONTACT, }, signature='sv') # subscribe to the OperationList interface (MC assumes that until this @@ -50,6 +50,14 @@ def test(q, bus, mc): cd_props = dbus.Interface(cd, cs.PROPERTIES_IFACE) assert cd_props.Get(cs.CD_IFACE_OP_LIST, 'DispatchOperations') == [] + client = SimulatedClient(q, bus, 'Client', + observe=[text_fixed_properties], + approve=[text_fixed_properties], + handle=[], bypass_approval=False) + + # wait for MC to download the properties + expect_client_setup(q, [client]) + channel_properties = dbus.Dictionary(text_fixed_properties, signature='sv') channel_properties[cs.CHANNEL + '.TargetID'] = 'juliet' @@ -61,15 +69,48 @@ def test(q, bus, mc): channel_properties[cs.CHANNEL + '.Requested'] = False channel_properties[cs.CHANNEL + '.Interfaces'] = dbus.Array(signature='s') + forbidden = [ + EventPattern('dbus-method-call', method='AddDispatchOperation'), + ] + q.forbid_events(forbidden) + chan = SimulatedChannel(conn, channel_properties) chan.announce() - # In response, MC kills the channel - q.expect('dbus-method-call', path=chan.object_path, method='Close', - handled=True) + e = q.expect('dbus-signal', + path=cs.CD_PATH, + interface=cs.CD_IFACE_OP_LIST, + signal='NewDispatchOperation') + + cdo_path = e.args[0] + cdo_properties = e.args[1] + + assert cdo_properties[cs.CDO + '.Account'] == account.object_path + assert cdo_properties[cs.CDO + '.Connection'] == conn.object_path + assert cs.CDO + '.Interfaces' in cdo_properties - # There are still no active channel dispatch operations + handlers = cdo_properties[cs.CDO + '.PossibleHandlers'][:] + assertEquals([], handlers) + + e = q.expect('dbus-method-call', + path=client.object_path, + interface=cs.OBSERVER, method='ObserveChannels', + handled=False) + + sync_dbus(bus, q, mc) + + q.dbus_return(e.message, signature='') + + # now (but only now) MC kills the channel + q.expect_many( + EventPattern('dbus-signal', path=cdo_path, signal='Finished'), + EventPattern('dbus-method-call', path=chan.object_path, + method='Close', handled=True), + ) + + # There are no active channel dispatch operations assert cd_props.Get(cs.CD_IFACE_OP_LIST, 'DispatchOperations') == [] + if __name__ == '__main__': exec_test(test, {}) |