diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-09-23 15:37:42 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-09-24 12:13:08 +0100 |
commit | 27cfca065ceed41709842ee7c7e366d91b2fb141 (patch) | |
tree | 42a0dc91d4de814b0e82240597112157d48fad3f | |
parent | 4b6395fc016e3246a1e559e1d5958d0cd355e855 (diff) | |
download | telepathy-haze-27cfca065ceed41709842ee7c7e366d91b2fb141.tar.gz |
roster/subscribe.py: convert to ContactList, ContactGroups
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=49389
Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-rw-r--r-- | tests/twisted/roster/subscribe.py | 74 |
1 files changed, 33 insertions, 41 deletions
diff --git a/tests/twisted/roster/subscribe.py b/tests/twisted/roster/subscribe.py index 28f4107..b736d0d 100644 --- a/tests/twisted/roster/subscribe.py +++ b/tests/twisted/roster/subscribe.py @@ -15,50 +15,44 @@ import ns def test(q, bus, conn, stream): self_handle = conn.Properties.Get(cs.CONN, "SelfHandle") - # Close all Group channels to get a clean slate, so we can rely on - # the NewChannels signal for the default group later - close_all_groups(q, bus, conn, stream) - - call_async(q, conn.Requests, 'EnsureChannel',{ - cs.CHANNEL_TYPE: cs.CHANNEL_TYPE_CONTACT_LIST, - cs.TARGET_HANDLE_TYPE: cs.HT_LIST, - cs.TARGET_ID: 'subscribe', - }) - e = q.expect('dbus-return', method='EnsureChannel') - subscribe = wrap_channel(bus.get_object(conn.bus_name, e.value[1]), - cs.CHANNEL_TYPE_CONTACT_LIST) - jids = set(conn.inspect_contacts_sync(subscribe.Group.GetMembers())) - assertEquals(set(), jids) - - assertLength(0, subscribe.Group.GetMembers()) + call_async(q, conn.ContactList, 'GetContactListAttributes', + [cs.CONN_IFACE_CONTACT_GROUPS], False) + r = q.expect('dbus-return', method='GetContactListAttributes') + assertLength(0, r.value[0].keys()) # request subscription handle = conn.get_contact_handle_sync('suggs@night.boat.cairo') - call_async(q, subscribe.Group, 'AddMembers', [handle], '') + call_async(q, conn.ContactList, 'RequestSubscription', [handle], + 'half past monsoon') # libpurple puts him on our blist as soon as we've asked; there doesn't # seem to be any concept of remote-pending state. # # It also puts him in the default group, probably "Buddies". - set_iq, _, _, _, new_channels = q.expect_many( + set_iq, _, _, _, groups_changed = q.expect_many( EventPattern('stream-iq', iq_type='set', query_ns=ns.ROSTER, query_name='query'), EventPattern('stream-presence', presence_type='subscribe', to='suggs@night.boat.cairo'), - EventPattern('dbus-return', method='AddMembers', value=()), - # FIXME: TpBaseContactList wrongly assumes that he's the actor, - # because he must have accepted our request... right? Wrong. - EventPattern('dbus-signal', signal='MembersChanged', - path=subscribe.object_path, - args=['', [handle], [], [], [], handle, 0]), - EventPattern('dbus-signal', signal='NewChannels', - predicate=lambda e: - e.args[0][0][1].get(cs.TARGET_HANDLE_TYPE) == cs.HT_GROUP), + EventPattern('dbus-return', method='RequestSubscription', value=()), + EventPattern('dbus-signal', signal='ContactsChangedWithID', + args=[{ + handle: + (cs.SUBSCRIPTION_STATE_YES, + cs.SUBSCRIPTION_STATE_UNKNOWN, ''), + }, + {handle: 'suggs@night.boat.cairo'}, {}]), + EventPattern('dbus-signal', signal='GroupsChanged', + predicate=lambda e: e.args[0] == [handle]), ) assertEquals('suggs@night.boat.cairo', set_iq.query.item['jid']) acknowledge_iq(stream, set_iq.stanza) + assertLength(1, groups_changed.args[1]) + assertLength(0, groups_changed.args[2]) + def_group = groups_changed.args[1][0] + # Suggs accepts our subscription request presence = domish.Element(('jabber:client', 'presence')) presence['from'] = 'suggs@night.boat.cairo' @@ -68,15 +62,10 @@ def test(q, bus, conn, stream): # ... but nothing much happens, because there's no concept of pending # state in libpurple - def_group = wrap_channel(bus.get_object(conn.bus_name, - new_channels.args[0][0][0]), cs.CHANNEL_TYPE_CONTACT_LIST) - handles = set(subscribe.Group.GetMembers()) - assertEquals(set([handle]), handles) - # put a contact into the *group* explicitly: this shouldn't ask for - # subscription, but it does + # subscription, but it does, because libpurple handle = conn.get_contact_handle_sync('ayria@revenge.world') - call_async(q, def_group.Group, 'AddMembers', [handle], '') + call_async(q, conn.ContactGroups, 'AddToGroup', def_group, [handle]) # libpurple puts her on our blist as soon as we've asked; there doesn't # seem to be any concept of remote-pending state. It also puts her in the @@ -86,13 +75,16 @@ def test(q, bus, conn, stream): query_ns=ns.ROSTER, query_name='query'), EventPattern('stream-presence', presence_type='subscribe', to='ayria@revenge.world'), - EventPattern('dbus-return', method='AddMembers', value=()), - EventPattern('dbus-signal', signal='MembersChanged', - path=subscribe.object_path, - args=['', [handle], [], [], [], handle, 0]), - EventPattern('dbus-signal', signal='MembersChanged', - path=def_group.object_path, - args=['', [handle], [], [], [], self_handle, 0]), + EventPattern('dbus-return', method='AddToGroup', value=()), + EventPattern('dbus-signal', signal='ContactsChangedWithID', + args=[{ + handle: + (cs.SUBSCRIPTION_STATE_YES, + cs.SUBSCRIPTION_STATE_UNKNOWN, ''), + }, + {handle: 'ayria@revenge.world'}, {}]), + EventPattern('dbus-signal', signal='GroupsChanged', + args=[[handle], [def_group], []]), ) acknowledge_iq(stream, set_iq.stanza) |