From c6ff761a95da09b53b3dd385ead93f55ca2fb3f2 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 6 Jun 2015 01:02:27 +0100 Subject: Added chat session functional tests --- functionaltests/functionaltests.c | 22 ++- functionaltests/test_chat_session.c | 264 ++++++++++++++++++++++++++++++++++++ functionaltests/test_chat_session.h | 7 + 3 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 functionaltests/test_chat_session.c create mode 100644 functionaltests/test_chat_session.h (limited to 'functionaltests') diff --git a/functionaltests/functionaltests.c b/functionaltests/functionaltests.c index cb110469..a1550842 100644 --- a/functionaltests/functionaltests.c +++ b/functionaltests/functionaltests.c @@ -15,6 +15,7 @@ #include "test_rooms.h" #include "test_presence.h" #include "test_message.h" +#include "test_chat_session.h" int main(int argc, char* argv[]) { @@ -95,7 +96,26 @@ int main(int argc, char* argv[]) { close_prof_test), unit_test_setup_teardown(message_receive, init_prof_test, - close_prof_test) + close_prof_test), + + unit_test_setup_teardown(sends_message_to_barejid_when_contact_offline, + init_prof_test, + close_prof_test), + unit_test_setup_teardown(sends_message_to_barejid_when_contact_online, + init_prof_test, + close_prof_test), + unit_test_setup_teardown(sends_message_to_fulljid_when_received_from_fulljid, + init_prof_test, + close_prof_test), + unit_test_setup_teardown(sends_subsequent_messages_to_fulljid, + init_prof_test, + close_prof_test), + unit_test_setup_teardown(resets_to_barejid_after_presence_received, + init_prof_test, + close_prof_test), + unit_test_setup_teardown(new_session_when_message_received_from_different_fulljid, + init_prof_test, + close_prof_test), }; return run_tests(all_tests); diff --git a/functionaltests/test_chat_session.c b/functionaltests/test_chat_session.c new file mode 100644 index 00000000..11df4e76 --- /dev/null +++ b/functionaltests/test_chat_session.c @@ -0,0 +1,264 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "proftest.h" + +void +sends_message_to_barejid_when_contact_offline(void **state) +{ + stbbr_for_id("roster", + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + stbbr_wait_for("prof_presence_1"); + + prof_input("/msg buddy1@localhost Hi there"); + + assert_true(stbbr_received( + "" + "Hi there" + "" + )); +} + +void +sends_message_to_barejid_when_contact_online(void **state) +{ + stbbr_for_id("roster", + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + stbbr_wait_for("prof_presence_1"); + + stbbr_send( + "" + "10" + "" + ); + prof_output_exact("buddy1@localhost (mobile) is online"); + + prof_input("/msg buddy1@localhost Hi there"); + + assert_true(stbbr_received( + "" + "Hi there" + "" + )); +} + +void +sends_message_to_fulljid_when_received_from_fulljid(void **state) +{ + stbbr_for_id("roster", + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + stbbr_wait_for("prof_presence_1"); + + stbbr_send( + "" + "10" + "" + ); + prof_output_exact("buddy1@localhost (mobile) is online"); + + stbbr_send( + "" + "First message" + "" + ); + prof_output_exact("<< incoming from buddy1@localhost/mobile (2)"); + + prof_input("/msg buddy1@localhost Hi there"); + + assert_true(stbbr_received( + "" + "Hi there" + "" + )); +} + +void +sends_subsequent_messages_to_fulljid(void **state) +{ + stbbr_for_id("roster", + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + stbbr_wait_for("prof_presence_1"); + + stbbr_send( + "" + "10" + "" + ); + prof_output_exact("buddy1@localhost (mobile) is online"); + + stbbr_send( + "" + "First message" + "" + ); + prof_output_exact("<< incoming from buddy1@localhost/mobile (2)"); + + prof_input("/msg buddy1@localhost Outgoing 1"); + prof_input("/msg buddy1@localhost Outgoing 2"); + prof_input("/msg buddy1@localhost Outgoing 3"); + + assert_true(stbbr_received( + "" + "Outgoing 1" + "" + )); + assert_true(stbbr_received( + "" + "Outgoing 2" + "" + )); + assert_true(stbbr_received( + "" + "Outgoing 3" + "" + )); +} + +void +resets_to_barejid_after_presence_received(void **state) +{ + stbbr_for_id("roster", + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + stbbr_wait_for("prof_presence_1"); + + stbbr_send( + "" + "10" + "" + ); + prof_output_exact("buddy1@localhost (mobile) is online"); + + stbbr_send( + "" + "First message" + "" + ); + prof_output_exact("<< incoming from buddy1@localhost/mobile (2)"); + + prof_input("/msg buddy1@localhost Outgoing 1"); + + assert_true(stbbr_received( + "" + "Outgoing 1" + "" + )); + + stbbr_send( + "" + "5" + "dnd" + "" + ); + prof_output_exact("buddy1@localhost (laptop) is dnd"); + + prof_input("/msg buddy1@localhost Outgoing 2"); + + assert_true(stbbr_received( + "" + "Outgoing 2" + "" + )); +} + +void +new_session_when_message_received_from_different_fulljid(void **state) +{ + stbbr_for_id("roster", + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + stbbr_wait_for("prof_presence_1"); + + stbbr_send( + "" + "10" + "" + ); + prof_output_exact("buddy1@localhost (mobile) is online"); + + stbbr_send( + "" + "8" + "away" + "" + ); + prof_output_exact("buddy1@localhost (laptop) is away"); + + stbbr_send( + "" + "From first resource" + "" + ); + prof_output_exact("<< incoming from buddy1@localhost/mobile (2)"); + + prof_input("/msg buddy1@localhost Outgoing 1"); + + assert_true(stbbr_received( + "" + "Outgoing 1" + "" + )); + + stbbr_send( + "" + "From second resource" + "" + ); + prof_output_regex("buddy1@localhost/laptop:.+From second resource"); + + prof_input("/msg buddy1@localhost Outgoing 2"); + + assert_true(stbbr_received( + "" + "Outgoing 2" + "" + )); +} diff --git a/functionaltests/test_chat_session.h b/functionaltests/test_chat_session.h new file mode 100644 index 00000000..2ba75e05 --- /dev/null +++ b/functionaltests/test_chat_session.h @@ -0,0 +1,7 @@ +void sends_message_to_barejid_when_contact_offline(void **state); +void sends_message_to_barejid_when_contact_online(void **state); +void sends_message_to_fulljid_when_received_from_fulljid(void **state); +void sends_subsequent_messages_to_fulljid(void **state); +void resets_to_barejid_after_presence_received(void **state); +void new_session_when_message_received_from_different_fulljid(void **state); + -- cgit 1.4.1-2-gfad0