diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_server_events.c | 97 | ||||
-rw-r--r-- | tests/test_server_events.h | 13 | ||||
-rw-r--r-- | tests/testsuite.c | 13 | ||||
-rw-r--r-- | tests/ui/mock_ui.c | 12 | ||||
-rw-r--r-- | tests/ui/mock_ui.h | 1 |
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); |