about summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_server_events.c97
-rw-r--r--tests/test_server_events.h13
-rw-r--r--tests/testsuite.c13
-rw-r--r--tests/ui/mock_ui.c12
-rw-r--r--tests/ui/mock_ui.h1
5 files changed, 120 insertions, 16 deletions
diff --git a/tests/test_server_events.c b/tests/test_server_events.c
index 547e3d70..ef5620fd 100644
--- a/tests/test_server_events.c
+++ b/tests/test_server_events.c
@@ -12,6 +12,7 @@
 #include "config/preferences.h"
 #include "ui/ui.h"
 #include "ui/mock_ui.h"
+#include "muc.h"
 
 void console_doesnt_show_online_presence_when_set_none(void **state)
 {
@@ -106,49 +107,129 @@ void console_shows_dnd_presence_when_set_all(void **state)
     roster_clear();
 }
 
-void handle_message_stanza_error_when_no_from(void **state)
+void handle_message_error_when_no_recipient(void **state)
 {
     char *err_msg = "Some error.";
+    char *from = NULL;
+    char *type = "cancel";
 
     expect_ui_handle_error(err_msg);
 
-    handle_message_error(NULL, "cancel", err_msg);
+    handle_message_error(from, type, err_msg);
 }
 
-void handle_message_stanza_error_from_cancel(void **state)
+void handle_message_error_when_recipient_cancel(void **state)
 {
     char *err_msg = "Some error.";
     char *from = "bob@server.com";
+    char *type = "cancel";
+
     prefs_set_boolean(PREF_STATES, FALSE);
     chat_sessions_init();
 
     expect_ui_handle_recipient_not_found(from, err_msg);
 
-    handle_message_error(from, "cancel", err_msg);
+    handle_message_error(from, type, err_msg);
 }
 
-void handle_message_stanza_error_from_cancel_disables_chat_session(void **state)
+void handle_message_error_when_recipient_cancel_disables_chat_session(void **state)
 {
     char *err_msg = "Some error.";
     char *from = "bob@server.com";
+    char *type = "cancel";
+
     stub_ui_handle_recipient_not_found();
     prefs_set_boolean(PREF_STATES, TRUE);
     chat_sessions_init();
     chat_session_start(from, TRUE);
 
-    handle_message_error(from, "cancel", err_msg);
+    handle_message_error(from, type, err_msg);
     gboolean chat_session_supported = chat_session_get_recipient_supports(from);
 
     assert_false(chat_session_supported);
     chat_sessions_clear();
 }
 
-void handle_message_stanza_error_from_no_type(void **state)
+void handle_message_error_when_recipient_and_no_type(void **state)
+{
+    char *err_msg = "Some error.";
+    char *from = "bob@server.com";
+    char *type = NULL;
+
+    expect_ui_handle_recipient_error(from, err_msg);
+
+    handle_message_error(from, type, err_msg);
+}
+
+void handle_presence_error_when_no_recipient(void **state)
+{
+    char *err_msg = "Some error.";
+    char *from = NULL;
+    char *type = NULL;
+
+    expect_ui_handle_error(err_msg);
+
+    handle_presence_error(from, type, err_msg);
+}
+
+void handle_presence_error_when_no_recipient_and_conflict(void **state)
+{
+    char *err_msg = "conflict";
+    char *from = NULL;
+    char *type = NULL;
+
+    expect_ui_handle_error(err_msg);
+
+    handle_presence_error(from, type, err_msg);
+}
+
+void handle_presence_error_when_nick_conflict_shows_recipient_error(void **state)
+{
+    char *err_msg = "conflict";
+    char *from = "room@rooms.org/nick";
+    char *barejid = "room@rooms.org";
+    char *nick = "nick";
+    char *type = NULL;
+
+    muc_init();
+    muc_join_room(barejid, nick);
+
+    expect_ui_handle_recipient_error(barejid, err_msg);
+
+    handle_presence_error(from, type, err_msg);
+
+    muc_close();
+}
+
+void handle_presence_error_when_nick_conflict_does_not_join_room(void **state)
+{
+    char *err_msg = "conflict";
+    char *from = "room@rooms.org/nick";
+    char *barejid = "room@rooms.org";
+    char *nick = "nick";
+    char *type = NULL;
+    Jid *jidp = jid_create(from);
+    stub_ui_handle_recipient_error();
+
+    muc_init();
+    muc_join_room(barejid, nick);
+
+    handle_presence_error(from, type, err_msg);
+
+    gboolean room_is_active = muc_room_is_active(jidp);
+    assert_false(room_is_active);
+
+    muc_close();
+    jid_destroy(jidp);
+}
+
+void handle_presence_error_when_from_recipient_not_conflict(void **state)
 {
     char *err_msg = "Some error.";
     char *from = "bob@server.com";
+    char *type = NULL;
 
     expect_ui_handle_recipient_error(from, err_msg);
 
-    handle_message_error(from, NULL, err_msg);
+    handle_presence_error(from, type, err_msg);
 }
diff --git a/tests/test_server_events.h b/tests/test_server_events.h
index c0f5dec4..1356de15 100644
--- a/tests/test_server_events.h
+++ b/tests/test_server_events.h
@@ -4,7 +4,12 @@ void console_shows_online_presence_when_set_all(void **state);
 void console_doesnt_show_dnd_presence_when_set_none(void **state);
 void console_doesnt_show_dnd_presence_when_set_online(void **state);
 void console_shows_dnd_presence_when_set_all(void **state);
-void handle_message_stanza_error_when_no_from(void **state);
-void handle_message_stanza_error_from_cancel(void **stanza);
-void handle_message_stanza_error_from_cancel_disables_chat_session(void **stanza);
-void handle_message_stanza_error_from_no_type(void **state);
+void handle_message_error_when_no_recipient(void **state);
+void handle_message_error_when_recipient_cancel(void **stanza);
+void handle_message_error_when_recipient_cancel_disables_chat_session(void **stanza);
+void handle_message_error_when_recipient_and_no_type(void **state);
+void handle_presence_error_when_no_recipient(void **state);
+void handle_presence_error_when_no_recipient_and_conflict(void **state);
+void handle_presence_error_when_nick_conflict_shows_recipient_error(void **state);
+void handle_presence_error_when_nick_conflict_does_not_join_room(void **state);
+void handle_presence_error_when_from_recipient_not_conflict(void **state);
diff --git a/tests/testsuite.c b/tests/testsuite.c
index f60e6d11..2f940af1 100644
--- a/tests/testsuite.c
+++ b/tests/testsuite.c
@@ -390,14 +390,19 @@ int main(int argc, char* argv[]) {
         unit_test_setup_teardown(console_shows_dnd_presence_when_set_all,
             init_preferences,
             close_preferences),
-        unit_test(handle_message_stanza_error_when_no_from),
-        unit_test_setup_teardown(handle_message_stanza_error_from_cancel,
+        unit_test(handle_message_error_when_no_recipient),
+        unit_test_setup_teardown(handle_message_error_when_recipient_cancel,
             init_preferences,
             close_preferences),
-        unit_test_setup_teardown(handle_message_stanza_error_from_cancel_disables_chat_session,
+        unit_test_setup_teardown(handle_message_error_when_recipient_cancel_disables_chat_session,
             init_preferences,
             close_preferences),
-        unit_test(handle_message_stanza_error_from_no_type),
+        unit_test(handle_message_error_when_recipient_and_no_type),
+        unit_test(handle_presence_error_when_no_recipient),
+        unit_test(handle_presence_error_when_no_recipient_and_conflict),
+        unit_test(handle_presence_error_when_nick_conflict_shows_recipient_error),
+        unit_test(handle_presence_error_when_nick_conflict_does_not_join_room),
+        unit_test(handle_presence_error_when_from_recipient_not_conflict),
     };
 
     const UnitTest cmd_alias_tests[] = {
diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c
index feeed9db..a82ad1e7 100644
--- a/tests/ui/mock_ui.c
+++ b/tests/ui/mock_ui.c
@@ -109,6 +109,12 @@ void _mock_ui_handle_recipient_error(const char * const recipient,
 }
 
 static
+void _stub_ui_handle_recipient_error(const char * const recipient,
+    const char * const err_msg)
+{
+}
+
+static
 void _mock_ui_handle_recipient_not_found(const char * const recipient,
     const char * const err_msg)
 {
@@ -195,6 +201,12 @@ stub_ui_handle_recipient_not_found(void)
     ui_handle_recipient_not_found = _stub_ui_handle_recipient_not_found;
 }
 
+void
+stub_ui_handle_recipient_error(void)
+{
+    ui_handle_recipient_error = _stub_ui_handle_recipient_error;
+}
+
 // expectations
 
 void
diff --git a/tests/ui/mock_ui.h b/tests/ui/mock_ui.h
index 258cb10c..30bec25e 100644
--- a/tests/ui/mock_ui.h
+++ b/tests/ui/mock_ui.h
@@ -19,6 +19,7 @@ void mock_cons_show_error(void);
 void expect_cons_show_error(char *output);
 
 void stub_ui_handle_recipient_not_found(void);
+void stub_ui_handle_recipient_error(void);
 void expect_ui_handle_error(char *err_msg);
 void expect_ui_handle_recipient_error(char *recipient, char *err_msg);
 void expect_ui_handle_recipient_not_found(char *recipient, char *err_msg);