Scansion - Automated XMPP Client

Scansion is an automated scriptable XMPP client, useful for testing and automating tasks. It is primarily designed to be a handy tool in an XMPP developer's toolbox, however its scripting language is designed to be easy to read and write by non-programmers who understand basic XML and XMPP.

An example Scansion script:

# Pubsub: Test node creation

[Client] Romeo
        jid: admin@localhost
        password: password

[Client] Juliet
        jid: juliet@localhost
        password: password

---------

Romeo connects

# Create the node
Romeo sends:
    <iq type='set' to='pubsub.localhost' id='create-node'>
        <pubsub xmlns='http://jabber.org/protocol/pubsub'>
            <create node='princely_musings'/>
        </pubsub>
    </iq>

# Server acknowledges successful creation
Romeo receives:
    <iq type='result' id='create-node'/>

# Juliet sees the node appear in the node list

Juliet connects

Juliet sends:
    <iq type='get' id='list-nodes' to='pubsub.localhost'>
        <query xmlns='http://jabber.org/protocol/disco#items'/>
    </iq>

Juliet receives:
    <iq type='result' id='list-nodes' from='pubsub.localhost'>
        <query xmlns='http://jabber.org/protocol/disco#items'>
            <item xmlns='http://jabber.org/protocol/disco#items' jid='pubsub.localhost' node='princely_musings'/>
        </query>
    </iq>

# Yay!

This example demonstrates how Scansion:

  • Supports multiple characters in a script
  • Takes care of establishing a connection and authentication
  • Automatically verifies responses to stanzas

This final point is what makes Scansion a great tool for testing - it has a flexible matching system that allows you to ensure a certain stanza receives the response you expect.