from scenarios import * scenario = ( # IRC server JIDs advertise caps for their own disco info send_stanza(""), expect_stanza("/iq[@from='{irc_server_one}'][@to='{jid_one}/{resource_one}'][@type='result']/disco_info:query/disco_info:identity[@category='gateway'][@type='irc']", "/iq/disco_info:query/disco_info:feature[@var='http://jabber.org/protocol/disco#info']", "/iq/disco_info:query/disco_info:feature[@var='http://jabber.org/protocol/caps']" ), send_stanza(""), sequences.connection(), scenarios.simple_channel_join.expect_self_join_presence(), send_stanza(""), expect_stanza("/presence[@from='{irc_server_one}'][@to='{jid_one}'][@type='subscribed']"), expect_stanza("/presence[@from='{irc_server_one}'][@to='{jid_one}']/caps:c[@hash='sha-1'][@node][@ver]", after = ( save_value("server_ver", extract_attribute("/presence/caps:c[@hash='sha-1'][@node][@ver]", "ver")), save_value("server_node", extract_attribute("/presence/caps:c[@hash='sha-1'][@node][@ver]", "node")), ) ), send_stanza(""), expect_stanza("/iq[@from='{irc_server_one}'][@type='result']/disco_info:query[@node='{server_node}#{server_ver}']"), )