from scenarios import * scenario = ( send_stanza(""), expect_stanza("/presence/caps:c[@hash='sha-1'][@node][@ver]", after = ( save_value("ver", extract_attribute("/presence/caps:c[@hash='sha-1'][@node][@ver]", "ver")), save_value("node", extract_attribute("/presence/caps:c[@hash='sha-1'][@node][@ver]", "node")), ) ), # Assert node and ver are consistent send_stanza(""), expect_stanza("/presence/caps:c[@hash='sha-1'][@node='{node}'][@ver='{ver}']"), # If we ask for this node then we should get it back send_stanza(""), expect_stanza("/iq/disco_info:query[@node='{node}#{ver}']"), # But if we ask for invalid values then we don't send_stanza(""), expect_stanza("!/iq/disco_info:query[@node='{node}#{ver}']"), send_stanza(""), expect_stanza("!/iq/disco_info:query[@node='{node}#{ver}']"), )