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}']"),
)