about summary refs log tree commit diff stats
path: root/tests/functionaltests/test_presence.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-06-12 23:53:30 +0100
committerJames Booth <boothj5@gmail.com>2015-06-12 23:53:30 +0100
commit68ed20f10d2fae67b052674a42ed98c2059aa16f (patch)
treedf8d1e7989282cc2e15dda3cd378b3b2895e9892 /tests/functionaltests/test_presence.c
parentc182f3ecd6be5df9b9bc7757930e47b555ddd251 (diff)
downloadprofani-tty-68ed20f10d2fae67b052674a42ed98c2059aa16f.tar.gz
Moved all tests to tests folder
Diffstat (limited to 'tests/functionaltests/test_presence.c')
-rw-r--r--tests/functionaltests/test_presence.c253
1 files changed, 253 insertions, 0 deletions
diff --git a/tests/functionaltests/test_presence.c b/tests/functionaltests/test_presence.c
new file mode 100644
index 00000000..b26bdccb
--- /dev/null
+++ b/tests/functionaltests/test_presence.c
@@ -0,0 +1,253 @@
+#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"
+
+void
+presence_online(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/online");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to online (priority 0)"));
+}
+
+void
+presence_online_with_message(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/online \"Hi there\"");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<status>Hi there</status>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to online (priority 0), \"Hi there\"."));
+}
+
+void
+presence_away(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/away");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>away</show>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to away (priority 0)"));
+}
+
+void
+presence_away_with_message(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/away \"I'm not here for a bit\"");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<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://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to away (priority 0), \"I'm not here for a bit\"."));
+}
+
+void
+presence_xa(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/xa");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>xa</show>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to xa (priority 0)"));
+}
+
+void
+presence_xa_with_message(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/xa \"Gone to the shops\"");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>xa</show>"
+            "<status>Gone to the shops</status>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to xa (priority 0), \"Gone to the shops\"."));
+}
+
+void
+presence_dnd(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/dnd");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>dnd</show>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to dnd (priority 0)"));
+}
+
+void
+presence_dnd_with_message(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/dnd \"Working\"");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>dnd</show>"
+            "<status>Working</status>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to dnd (priority 0), \"Working\"."));
+}
+
+void
+presence_chat(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/chat");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>chat</show>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to chat (priority 0)"));
+}
+
+void
+presence_chat_with_message(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/chat \"Free to talk\"");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<show>chat</show>"
+            "<status>Free to talk</status>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Status set to chat (priority 0), \"Free to talk\"."));
+}
+
+void
+presence_set_priority(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/priority 25");
+
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<priority>25</priority>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+
+    assert_true(prof_output_exact("Priority set to 25."));
+}
+
+void
+presence_includes_priority(void **state)
+{
+    prof_connect("stabber@localhost", "password");
+
+    prof_input("/priority 25");
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<priority>25</priority>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+    assert_true(prof_output_exact("Priority set to 25."));
+
+    prof_input("/chat \"Free to talk\"");
+    assert_true(stbbr_received(
+        "<presence id=\"*\">"
+            "<priority>25</priority>"
+            "<show>chat</show>"
+            "<status>Free to talk</status>"
+            "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>"
+        "</presence>"
+    ));
+    assert_true(prof_output_exact("Status set to chat (priority 25), \"Free to talk\"."));
+}
+
+void
+presence_received(void **state)
+{
+    stbbr_for_id("roster",
+        "<iq id=\"roster\" type=\"result\" to=\"stabber@localhost/profanity\">"
+            "<query xmlns=\"jabber:iq:roster\" ver=\"362\">"
+                "<item jid=\"buddy1@localhost\" subscription=\"both\" name=\"Buddy1\"/>"
+                "<item jid=\"buddy2@localhost\" subscription=\"both\" name=\"Buddy2\"/>"
+            "</query>"
+        "</iq>"
+    );
+
+    prof_connect("stabber@localhost", "password");
+    stbbr_wait_for("prof_presence_1");
+
+    stbbr_send(
+        "<presence to=\"stabber@localhost\" from=\"buddy1@localhost/mobile\">"
+            "<priority>10</priority>"
+            "<status>I'm here</status>"
+        "</presence>"
+    );
+
+    assert_true(prof_output_exact("Buddy1 (mobile) is online, \"I'm here\""));
+}