def test(q, bus, conn, stream): conn.Connect() _, iq_event, disco_event = q.expect_many( EventPattern('dbus-signal', signal='StatusChanged', args=[cs.CONN_STATUS_CONNECTED, cs.CSR_REQUESTED]), EventPattern('stream-iq', to=None, query_ns='vcard-temp', query_name='vCard'), EventPattern('stream-iq', to='localhost', query_ns=ns.DISCO_ITEMS)) acknowledge_iq(stream, iq_event.stanza) props = conn.GetAll( 'org.laptop.Telepathy.Gadget', dbus_interface=dbus.PROPERTIES_IFACE) assert props['GadgetAvailable'] == False announce_gadget(q, stream, disco_event.stanza) q.expect('dbus-signal', signal='GadgetDiscovered') props = conn.GetAll( 'org.laptop.Telepathy.Gadget', dbus_interface=dbus.PROPERTIES_IFACE) assert props['GadgetAvailable'] == True gadget_iface = dbus.Interface(conn, 'org.laptop.Telepathy.Gadget') # All the code has been moved to util.py:gadget_publish gadget_publish(q, stream, conn, True) gadget_publish(q, stream, conn, False) q.expect('stream-presence', presence_type='unsubscribed'),
def test(q, bus, conn, stream): conn.Connect() _, iq_event, disco_event = q.expect_many( EventPattern('dbus-signal', signal='StatusChanged', args=[cs.CONN_STATUS_CONNECTED, cs.CSR_REQUESTED]), EventPattern('stream-iq', to=None, query_ns='vcard-temp', query_name='vCard'), EventPattern('stream-iq', to='localhost', query_ns=ns.DISCO_ITEMS)) acknowledge_iq(stream, iq_event.stanza) announce_gadget(q, stream, disco_event.stanza) act_prop_iface = dbus.Interface(conn, 'org.laptop.Telepathy.ActivityProperties') buddy_info_iface = dbus.Interface(conn, 'org.laptop.Telepathy.BuddyInfo') simple_presence_iface = dbus.Interface(conn, 'org.freedesktop.Telepathy.Connection.Interface.SimplePresence') q.expect('dbus-signal', signal='GadgetDiscovered') gadget_publish(q, stream, conn, True) # join a room room_handle, room_path = join_channel('*****@*****.**', q, conn, stream) call_async (q, buddy_info_iface, 'SetActivities', [("roomid", room_handle)]) # pubsub activity iq event = q.expect('stream-iq', iq_type='set', query_name='pubsub', query_ns=ns.PUBSUB) acknowledge_iq(stream, event.stanza) event = q.expect('dbus-return', method='SetActivities') # make activity public call_async(q, act_prop_iface, 'SetProperties', 1, {'title': 'My test activity', 'private': False}) # pseudo invite event = q.expect('stream-message', to='gadget.localhost') message = event.stanza properties = xpath.queryForNodes('/message/properties', message) assert (properties is not None and len(properties) == 1), repr(properties) assert properties[0].uri == ns.OLPC_ACTIVITY_PROPS assert properties[0]['room'] == '*****@*****.**' assert properties[0]['activity'] == 'roomid' # invite event = q.expect('stream-message', to='*****@*****.**') message = event.stanza x = xpath.queryForNodes('/message/x', message) assert (x is not None and len(x) == 1), repr(x) assert x[0].uri == ns.MUC_USER invites = xpath.queryForNodes('/x/invite', x[0]) assert (invites is not None and len(invites) == 1), repr(invites) assert invites[0]['to'] == 'gadget.localhost' # pubsub activity prop iq event = q.expect('stream-iq') acknowledge_iq(stream, event.stanza) # pubsub activity iq event = q.expect('stream-iq') acknowledge_iq(stream, event.stanza) event = q.expect('dbus-return', method='SetProperties') # Gadget joins the room stream.send(make_muc_presence('none', 'participant', '*****@*****.**', 'inspector', 'gadget.localhost')) muc = bus.get_object(conn.bus_name, room_path) muc_group = dbus.Interface(muc, "org.freedesktop.Telepathy.Channel.Interface.Group") sync_stream(q, stream) members = muc_group.GetMembers() assert conn.InspectHandles(1, members) == ['[email protected]/test'] # Regression test for a nasty bug caused by the presence cache handling # the inspector presence as a non-MUC one because the inspector is not # added to MUC's members. handle = conn.RequestHandles(1, ['*****@*****.**'])[0] presence = simple_presence_iface.GetPresences([handle]) assert presence[handle] == (7, 'unknown', '') # PEP activity update disconnect_conn(q, conn, stream, [EventPattern('stream-iq')])[0]