about summary refs log tree commit diff stats
path: root/tests/functionaltests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functionaltests')
-rw-r--r--tests/functionaltests/functionaltests.c9
-rw-r--r--tests/functionaltests/test_muc.c54
-rw-r--r--tests/functionaltests/test_muc.h2
-rw-r--r--tests/functionaltests/test_ping.c117
-rw-r--r--tests/functionaltests/test_ping.h7
-rw-r--r--tests/functionaltests/test_rooms.c12
6 files changed, 189 insertions, 12 deletions
diff --git a/tests/functionaltests/functionaltests.c b/tests/functionaltests/functionaltests.c
index 1e01071d..5e8656b7 100644
--- a/tests/functionaltests/functionaltests.c
+++ b/tests/functionaltests/functionaltests.c
@@ -35,8 +35,11 @@ int main(int argc, char* argv[]) {
         PROF_FUNC_TEST(connect_bad_password),
         PROF_FUNC_TEST(connect_shows_presence_updates),
 
-        PROF_FUNC_TEST(ping_multiple),
-        PROF_FUNC_TEST(ping_responds),
+        PROF_FUNC_TEST(ping_server),
+        PROF_FUNC_TEST(ping_server_not_supported),
+        PROF_FUNC_TEST(ping_responds_to_server_request),
+        PROF_FUNC_TEST(ping_jid),
+        PROF_FUNC_TEST(ping_jid_not_supported),
 
         PROF_FUNC_TEST(rooms_query),
 
@@ -98,6 +101,8 @@ int main(int argc, char* argv[]) {
         PROF_FUNC_TEST(shows_history_message),
         PROF_FUNC_TEST(shows_occupant_join),
         PROF_FUNC_TEST(shows_message),
+        PROF_FUNC_TEST(shows_me_message_from_occupant),
+        PROF_FUNC_TEST(shows_me_message_from_self),
         PROF_FUNC_TEST(shows_all_messages_in_console_when_window_not_focussed),
         PROF_FUNC_TEST(shows_first_message_in_console_when_window_not_focussed),
         PROF_FUNC_TEST(shows_no_message_in_console_when_window_not_focussed),
diff --git a/tests/functionaltests/test_muc.c b/tests/functionaltests/test_muc.c
index e7fc8dcb..3aac9988 100644
--- a/tests/functionaltests/test_muc.c
+++ b/tests/functionaltests/test_muc.c
@@ -209,6 +209,60 @@ shows_message(void **state)
 }
 
 void
+shows_me_message_from_occupant(void **state)
+{
+    prof_connect();
+
+    stbbr_for_id("prof_join_4",
+        "<presence id='prof_join_4' lang='en' to='stabber@localhost/profanity' from='testroom@conference.localhost/stabber'>"
+            "<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' node='http://www.profanity.im' ver='*'/>"
+            "<x xmlns='http://jabber.org/protocol/muc#user'>"
+                "<item role='participant' jid='stabber@localhost/profanity' affiliation='none'/>"
+            "</x>"
+            "<status code='110'/>"
+        "</presence>"
+    );
+
+    prof_input("/join testroom@conference.localhost");
+    assert_true(prof_output_exact("-> You have joined the room as stabber, role: participant, affiliation: none"));
+
+    stbbr_send(
+        "<message type='groupchat' to='stabber@localhost/profanity' from='testroom@conference.localhost/testoccupant'>"
+            "<body>/me did something</body>"
+        "</message>"
+    );
+
+    assert_true(prof_output_exact("*testoccupant did something"));
+}
+
+void
+shows_me_message_from_self(void **state)
+{
+    prof_connect();
+
+    stbbr_for_id("prof_join_4",
+        "<presence id='prof_join_4' lang='en' to='stabber@localhost/profanity' from='testroom@conference.localhost/stabber'>"
+            "<c hash='sha-1' xmlns='http://jabber.org/protocol/caps' node='http://www.profanity.im' ver='*'/>"
+            "<x xmlns='http://jabber.org/protocol/muc#user'>"
+                "<item role='participant' jid='stabber@localhost/profanity' affiliation='none'/>"
+            "</x>"
+            "<status code='110'/>"
+        "</presence>"
+    );
+
+    prof_input("/join testroom@conference.localhost");
+    assert_true(prof_output_exact("-> You have joined the room as stabber, role: participant, affiliation: none"));
+
+    stbbr_send(
+        "<message type='groupchat' to='stabber@localhost/profanity' from='testroom@conference.localhost/stabber'>"
+            "<body>/me did something</body>"
+        "</message>"
+    );
+
+    assert_true(prof_output_exact("*stabber did something"));
+}
+
+void
 shows_all_messages_in_console_when_window_not_focussed(void **state)
 {
     prof_connect();
diff --git a/tests/functionaltests/test_muc.h b/tests/functionaltests/test_muc.h
index 4f3c4f5d..1636bd05 100644
--- a/tests/functionaltests/test_muc.h
+++ b/tests/functionaltests/test_muc.h
@@ -7,6 +7,8 @@ void shows_subject_on_join(void **state);
 void shows_history_message(void **state);
 void shows_occupant_join(void **state);
 void shows_message(void **state);
+void shows_me_message_from_occupant(void **state);
+void shows_me_message_from_self(void **state);
 void shows_all_messages_in_console_when_window_not_focussed(void **state);
 void shows_first_message_in_console_when_window_not_focussed(void **state);
 void shows_no_message_in_console_when_window_not_focussed(void **state);
diff --git a/tests/functionaltests/test_ping.c b/tests/functionaltests/test_ping.c
index ecbbfee1..5bb937b6 100644
--- a/tests/functionaltests/test_ping.c
+++ b/tests/functionaltests/test_ping.c
@@ -12,8 +12,17 @@
 #include "proftest.h"
 
 void
-ping_multiple(void **state)
+ping_server(void **state)
 {
+    stbbr_for_id("prof_disco_info_onconnect_2",
+        "<iq id='prof_disco_info_onconnect_2' to='stabber@localhost/profanity' type='result' from='localhost'>"
+            "<query xmlns='http://jabber.org/protocol/disco#info'>"
+                "<identity category='server' type='im' name='Prosody'/>"
+                "<feature var='urn:xmpp:ping'/>"
+            "</query>"
+        "</iq>"
+    );
+
     stbbr_for_id("prof_ping_4",
         "<iq id='prof_ping_4' type='result' to='stabber@localhost/profanity'/>"
     );
@@ -41,7 +50,24 @@ ping_multiple(void **state)
 }
 
 void
-ping_responds(void **state)
+ping_server_not_supported(void **state)
+{
+    stbbr_for_id("prof_disco_info_onconnect_2",
+        "<iq id='prof_disco_info_onconnect_2' to='stabber@localhost/profanity' type='result' from='localhost'>"
+            "<query xmlns='http://jabber.org/protocol/disco#info'>"
+                "<identity category='server' type='im' name='Stabber'/>"
+            "</query>"
+        "</iq>"
+    );
+
+    prof_connect();
+
+    prof_input("/ping");
+    assert_true(prof_output_exact("Server does not support ping requests."));
+}
+
+void
+ping_responds_to_server_request(void **state)
 {
     prof_connect();
 
@@ -55,3 +81,90 @@ ping_responds(void **state)
         "<iq id='pingtest1' type='result' from='stabber@localhost/profanity' to='localhost'/>"
     ));
 }
+
+void ping_jid(void **state)
+{
+    stbbr_for_id("prof_caps_4",
+        "<iq id='prof_caps_4' to='stabber@localhost/profanity' type='result' from='buddy1@localhost/mobile'>"
+            "<query xmlns='http://jabber.org/protocol/disco#info' node='http://www.profanity.im#LpT2xs3nun7jC2sq4gg3WRDQFZ4='>"
+                "<identity category='client' type='console' name='Profanity0.6.0'/>"
+                "<feature var='urn:xmpp:ping'/>"
+                "<feature var='http://jabber.org/protocol/disco#info'/>"
+                "<feature var='http://jabber.org/protocol/caps'/>"
+            "</query>"
+        "</iq>"
+    );
+
+    prof_connect();
+
+    stbbr_send(
+        "<presence to='stabber@localhost' from='buddy1@localhost/mobile'>"
+            "<priority>10</priority>"
+            "<status>I'm here</status>"
+            "<c "
+                "hash='sha-1' "
+                "xmlns='http://jabber.org/protocol/caps' "
+                "node='http://www.profanity.im' "
+                "ver='LpT2xs3nun7jC2sq4gg3WRDQFZ4='"
+            "/>"
+        "</presence>"
+    );
+    assert_true(prof_output_exact("Buddy1 (mobile) is online, \"I'm here\""));
+
+    assert_true(stbbr_received(
+        "<iq id='prof_caps_4' to='buddy1@localhost/mobile' type='get'>"
+            "<query xmlns='http://jabber.org/protocol/disco#info' node='http://www.profanity.im#LpT2xs3nun7jC2sq4gg3WRDQFZ4='/>"
+        "</iq>"
+    ));
+
+    stbbr_for_id("prof_ping_5",
+        "<iq from='buddy1@localhost/mobile' to='stabber@localhost' id='prof_ping_5' type='result'/>"
+    );
+
+    prof_input("/ping buddy1@localhost/mobile");
+
+    assert_true(stbbr_received(
+        "<iq id='prof_ping_5' type='get' to='buddy1@localhost/mobile'>"
+            "<ping xmlns='urn:xmpp:ping'/>"
+        "</iq>"
+    ));
+    assert_true(prof_output_exact("Ping response from buddy1@localhost/mobile"));
+}
+
+void ping_jid_not_supported(void **state)
+{
+    stbbr_for_id("prof_caps_4",
+        "<iq id='prof_caps_4' to='stabber@localhost/profanity' type='result' from='buddy1@localhost/mobile'>"
+            "<query xmlns='http://jabber.org/protocol/disco#info' node='http://www.profanity.im#LpT2xs3nun7jC2sq4gg3WRDQFZ4='>"
+                "<identity category='client' type='console' name='Profanity0.6.0'/>"
+                "<feature var='http://jabber.org/protocol/disco#info'/>"
+                "<feature var='http://jabber.org/protocol/caps'/>"
+            "</query>"
+        "</iq>"
+    );
+
+    prof_connect();
+
+    stbbr_send(
+        "<presence to='stabber@localhost' from='buddy1@localhost/mobile'>"
+            "<priority>10</priority>"
+            "<status>I'm here</status>"
+            "<c "
+                "hash='sha-1' "
+                "xmlns='http://jabber.org/protocol/caps' "
+                "node='http://www.profanity.im' "
+                "ver='LpT2xs3nun7jC2sq4gg3WRDQFZ4='"
+            "/>"
+        "</presence>"
+    );
+    assert_true(prof_output_exact("Buddy1 (mobile) is online, \"I'm here\""));
+
+    assert_true(stbbr_received(
+        "<iq id='prof_caps_4' to='buddy1@localhost/mobile' type='get'>"
+            "<query xmlns='http://jabber.org/protocol/disco#info' node='http://www.profanity.im#LpT2xs3nun7jC2sq4gg3WRDQFZ4='/>"
+        "</iq>"
+    ));
+
+    prof_input("/ping buddy1@localhost/mobile");
+    assert_true(prof_output_exact("buddy1@localhost/mobile does not support ping requests."));
+}
diff --git a/tests/functionaltests/test_ping.h b/tests/functionaltests/test_ping.h
index a222a486..1f2eeb91 100644
--- a/tests/functionaltests/test_ping.h
+++ b/tests/functionaltests/test_ping.h
@@ -1,2 +1,5 @@
-void ping_multiple(void **state);
-void ping_responds(void **state);
+void ping_server(void **state);
+void ping_server_not_supported(void **state);
+void ping_responds_to_server_request(void **state);
+void ping_jid(void **state);
+void ping_jid_not_supported(void **state);
diff --git a/tests/functionaltests/test_rooms.c b/tests/functionaltests/test_rooms.c
index c0103279..49b1d892 100644
--- a/tests/functionaltests/test_rooms.c
+++ b/tests/functionaltests/test_rooms.c
@@ -14,8 +14,8 @@
 void
 rooms_query(void **state)
 {
-    stbbr_for_id("confreq",
-        "<iq id='confreq' type='result' to='stabber@localhost/profanity' from='conference.localhost'>"
+    stbbr_for_id("prof_confreq_4",
+        "<iq id='prof_confreq_4' type='result' to='stabber@localhost/profanity' from='conference.localhost'>"
             "<query xmlns='http://jabber.org/protocol/disco#items'>"
                 "<item jid='chatroom@conference.localhost' name='A chat room'/>"
                 "<item jid='hangout@conference.localhost' name='Another chat room'/>"
@@ -25,13 +25,13 @@ rooms_query(void **state)
 
     prof_connect();
 
-    prof_input("/rooms conference.localhost");
+    prof_input("/rooms service conference.localhost");
 
-    assert_true(prof_output_exact("chatroom@conference.localhost, (A chat room)"));
-    assert_true(prof_output_exact("hangout@conference.localhost, (Another chat room)"));
+    assert_true(prof_output_exact("chatroom@conference.localhost (A chat room)"));
+    assert_true(prof_output_exact("hangout@conference.localhost (Another chat room)"));
 
     assert_true(stbbr_last_received(
-        "<iq id='confreq' to='conference.localhost' type='get'>"
+        "<iq id='prof_confreq_4' to='conference.localhost' type='get'>"
             "<query xmlns='http://jabber.org/protocol/disco#items'/>"
         "</iq>"
     ));