1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-08-11 18:54:16 -04:00
profanity/tests/functionaltests/test_presence.c

291 lines
7.6 KiB
C
Raw Normal View History

#include <glib.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include <stdlib.h>
#include <string.h>
#include <stabber.h>
#include <expect.h>
#include "proftest.h"
2015-05-28 20:10:45 -04:00
void
presence_online(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/online");
assert_true(stbbr_received(
2016-04-12 17:28:21 -04:00
"<presence id='prof_presence_3'>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to online (priority 0)"));
}
void
presence_online_with_message(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/online \"Hi there\"");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<status>Hi there</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to online (priority 0), \"Hi there\"."));
}
void
presence_away(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
prof_input("/away");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>away</show>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
));
assert_true(prof_output_exact("Status set to away (priority 0)"));
}
void
presence_away_with_message(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
prof_input("/away \"I'm not here for a bit\"");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>away</show>"
"<status>I'm not here for a bit</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
));
assert_true(prof_output_exact("Status set to away (priority 0), \"I'm not here for a bit\"."));
}
2015-05-28 20:10:45 -04:00
void
presence_xa(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/xa");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>xa</show>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to xa (priority 0)"));
}
void
presence_xa_with_message(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/xa \"Gone to the shops\"");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>xa</show>"
"<status>Gone to the shops</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to xa (priority 0), \"Gone to the shops\"."));
}
void
presence_dnd(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/dnd");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>dnd</show>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to dnd (priority 0)"));
}
void
presence_dnd_with_message(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/dnd \"Working\"");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>dnd</show>"
"<status>Working</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to dnd (priority 0), \"Working\"."));
}
void
presence_chat(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/chat");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>chat</show>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to chat (priority 0)"));
}
void
presence_chat_with_message(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:10:45 -04:00
prof_input("/chat \"Free to talk\"");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<show>chat</show>"
"<status>Free to talk</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
2015-05-28 20:10:45 -04:00
));
assert_true(prof_output_exact("Status set to chat (priority 0), \"Free to talk\"."));
}
2015-05-28 20:22:24 -04:00
void
presence_set_priority(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:22:24 -04:00
prof_input("/priority 25");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<priority>25</priority>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
));
assert_true(prof_output_exact("Priority set to 25."));
}
void
presence_includes_priority(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-28 20:22:24 -04:00
prof_input("/priority 25");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_4'>"
2015-05-28 20:22:24 -04:00
"<priority>25</priority>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
));
assert_true(prof_output_exact("Priority set to 25."));
prof_input("/chat \"Free to talk\"");
assert_true(stbbr_received(
2016-05-01 14:39:39 -04:00
"<presence id='prof_presence_5'>"
2015-05-28 20:22:24 -04:00
"<priority>25</priority>"
"<show>chat</show>"
"<status>Free to talk</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
2015-05-28 20:22:24 -04:00
"</presence>"
));
assert_true(prof_output_exact("Status set to chat (priority 25), \"Free to talk\"."));
}
2015-05-30 17:44:41 -04:00
void
presence_keeps_status(void **state)
{
prof_connect();
prof_input("/chat \"Free to talk\"");
assert_true(stbbr_received(
"<presence id='prof_presence_4'>"
"<show>chat</show>"
"<status>Free to talk</status>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
"</presence>"
));
assert_true(prof_output_exact("Status set to chat (priority 0), \"Free to talk\"."));
prof_input("/priority 25");
assert_true(stbbr_received(
"<presence id='prof_presence_5'>"
"<show>chat</show>"
"<status>Free to talk</status>"
"<priority>25</priority>"
"<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' ver='*' node='http://profanity-im.github.io'/>"
"</presence>"
));
assert_true(prof_output_exact("Priority set to 25."));
}
2015-05-30 17:44:41 -04:00
void
presence_received(void **state)
{
2015-06-13 14:41:11 -04:00
prof_connect();
2015-05-30 17:44:41 -04:00
stbbr_send(
"<presence to='stabber@localhost' from='buddy1@localhost/mobile'>"
2015-05-30 17:44:41 -04:00
"<priority>10</priority>"
"<status>I'm here</status>"
"</presence>"
);
assert_true(prof_output_exact("Buddy1 (mobile) is online, \"I'm here\""));
}
// Typical use case for gateways that don't support resources
void
presence_missing_resource_defaults(void **state)
{
prof_connect();
stbbr_send(
"<presence to='stabber@localhost' from='buddy1@localhost'>"
"<priority>15</priority>"
"<status>My status</status>"
"</presence>"
);
assert_true(prof_output_exact("Buddy1 is online, \"My status\""));
prof_input("/info Buddy1");
assert_true(prof_output_exact("__prof_default (15), online"));
}