Stabber
Stubbed XMPP (Jabber) Server.
Overview
Stabber acts as a stubbed XMPP service for testing purposes, with an API to allow:
- Sending of XMPP stanzas.
- Responding to XMPP stanzas with stubbed responses.
- Verifying that XMPP stanzas were received.
The project is work in progress with only the basics implemented, and is being developed alongside https://github.com/boothj5/profanity Currently the only API is written in C.
Installing
./bootstrap.sh
./configure
make
make install (as root)
Using in a project
Include the following header in your tests:
#include <stabber.h>
Include the following in the linker path when compiling tests:
-lstabber
API
Starting
To start Stabber on port 5230 for example:
stbbr_start(5230);
Stopping
To stop Stabber:
stbbr_stop();
Authentication
Currently only legacy authentication is supported, to set the password that stabber expects when an account connects:
stbbr_auth_passwd("mypassword");
The default if not set is "password".
Sending stanzas
To make Stabber send an XMPP stanza:
stbbr_send(
"<iq id=\"ping1\" type=\"get\" to=\"stabber@localhost/profanity\" from=\"localhost\">"
"<ping xmlns=\"urn:xmpp:ping\"/>"
"</iq>"
);
Responding to stanzas
As well as being able to send an XMPP stanza at any time, you can also response to a stanza by its id attribute:
stbbr_for("msg_21",
"<message id=\"message17\" to=\"stabber@localhost\" from=\"buddy1@localhost/mobile\" type=\"chat\">"
"<body>I'm not real!</body>"
"</message>"
);
Verify sent stanzas
To verify that you send a particular stanza to Stabber:
stbbr_verify(
"<message id=\"msg24415\" to=\"buddy1@localhost/mobile\" type=\"chat\">"
"<body>I know, its a test.</body>"
"</message>"
);
The above function returns 1 id the stanza has been received, and 0 if it hasn't. The following function check that it was specifically the last stanza received:
stbbr_verify_last(
"<message id=\"msg24415\" to=\"buddy1@localhost/mobile\" type=\"chat\">"
"<body>I know, its a test.</body>"
"</message>"
);
Both verifications allow for wildcards (*) as attribute values, for example, if you don't know the id's that are generated by your client:
stbbr_verify(
"<message id=\"*\" to=\"buddy1@localhost/mobile\" type=\"chat\">"
"<body>I know, its a test.</body>"
"</message>"
);
Logs
Stabber logs to:
~/.local/share/stabber/logs/stabber.log
Example
Example tests for Profanity can be found at: https://github.com/boothj5/profanity/blob/stabber-tests/stabbertests/test_connect.c