From f17afcf5d421ee987cd2f4fe45cf7d3ad25a6eb9 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 28 May 2015 20:02:16 +0100 Subject: [PATCH] Split functional tests --- Makefile.am | 2 + functionaltests/functionaltests.c | 12 ++-- functionaltests/proftest.c | 12 ++++ functionaltests/proftest.h | 2 + functionaltests/test_connect.c | 100 ++++-------------------------- functionaltests/test_connect.h | 6 +- functionaltests/test_ping.c | 59 ++++++++++++++++++ functionaltests/test_ping.h | 2 + functionaltests/test_rooms.c | 38 ++++++++++++ functionaltests/test_rooms.h | 2 + 10 files changed, 138 insertions(+), 97 deletions(-) create mode 100644 functionaltests/test_ping.c create mode 100644 functionaltests/test_ping.h create mode 100644 functionaltests/test_rooms.c create mode 100644 functionaltests/test_rooms.h diff --git a/Makefile.am b/Makefile.am index a8574314..93d2fec0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -97,6 +97,8 @@ unittest_sources = \ functionaltest_sources = \ functionaltests/proftest.c functionaltests/proftest.h \ functionaltests/test_connect.c functionaltests/test_connect.h \ + functionaltests/test_ping.c functionaltests/test_ping.h \ + functionaltests/test_rooms.c functionaltests/test_rooms.h \ functionaltests/functionaltests.c main_source = src/main.c diff --git a/functionaltests/functionaltests.c b/functionaltests/functionaltests.c index a54b94dc..6c627d38 100644 --- a/functionaltests/functionaltests.c +++ b/functionaltests/functionaltests.c @@ -11,6 +11,8 @@ #include "proftest.h" #include "test_connect.h" +#include "test_ping.h" +#include "test_rooms.h" int main(int argc, char* argv[]) { @@ -31,16 +33,18 @@ int main(int argc, char* argv[]) { unit_test_setup_teardown(connect_bad_password, init_prof_test, close_prof_test), - unit_test_setup_teardown(show_presence_updates, + unit_test_setup_teardown(connect_shows_presence_updates, init_prof_test, close_prof_test), - unit_test_setup_teardown(sends_rooms_iq, + + unit_test_setup_teardown(ping_multiple, init_prof_test, close_prof_test), - unit_test_setup_teardown(multiple_pings, + unit_test_setup_teardown(ping_responds, init_prof_test, close_prof_test), - unit_test_setup_teardown(responds_to_ping, + + unit_test_setup_teardown(rooms_query, init_prof_test, close_prof_test), }; diff --git a/functionaltests/proftest.c b/functionaltests/proftest.c index 55892b30..a5510d68 100644 --- a/functionaltests/proftest.c +++ b/functionaltests/proftest.c @@ -182,3 +182,15 @@ prof_output(char *text) { return (1 == exp_expectl(fd, exp_exact, text, 1, exp_end)); } + +void +prof_connect(char *jid, char *password) +{ + GString *connect_cmd = g_string_new("/connect "); + g_string_append(connect_cmd, jid); + g_string_append(connect_cmd, " port 5230"); + prof_input(connect_cmd->str); + g_string_free(connect_cmd, TRUE); + + prof_input(password); +} diff --git a/functionaltests/proftest.h b/functionaltests/proftest.h index 22a7745f..68574af6 100644 --- a/functionaltests/proftest.h +++ b/functionaltests/proftest.h @@ -7,7 +7,9 @@ void init_prof_test(void **state); void close_prof_test(void **state); + void prof_start(void); +void prof_connect(char *jid, char *password); void prof_input(char *input); int prof_output(char *text); diff --git a/functionaltests/test_connect.c b/functionaltests/test_connect.c index 6f145dd5..fc2d0f94 100644 --- a/functionaltests/test_connect.c +++ b/functionaltests/test_connect.c @@ -14,8 +14,7 @@ void connect_jid(void **state) { - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); + prof_connect("stabber@localhost", "password"); assert_true(prof_output("Connecting as stabber@localhost")); assert_true(prof_output("stabber@localhost logged in successfully")); @@ -24,8 +23,7 @@ connect_jid(void **state) void connect_jid_requests_roster(void **state) { - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); + prof_connect("stabber@localhost", "password"); assert_true(stbbr_received( "" @@ -44,8 +42,7 @@ connect_jid_sends_presence_after_receiving_roster(void **state) "" ); - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); + prof_connect("stabber@localhost", "password"); assert_true(stbbr_received( "" @@ -57,8 +54,7 @@ connect_jid_sends_presence_after_receiving_roster(void **state) void connect_jid_requests_bookmarks(void **state) { - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); + prof_connect("stabber@localhost", "password"); assert_true(stbbr_received( "" @@ -72,14 +68,13 @@ connect_jid_requests_bookmarks(void **state) void connect_bad_password(void **state) { - prof_input("/connect stabber@localhost port 5230"); - prof_input("badpassword"); + prof_connect("stabber@localhost", "badpassword"); assert_true(prof_output("Login failed.")); } void -show_presence_updates(void **state) +connect_shows_presence_updates(void **state) { stbbr_for("roster", "" @@ -105,12 +100,11 @@ show_presence_updates(void **state) "" ); - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); + prof_connect("stabber@localhost", "password"); - assert_true(prof_output("Buddy1 (mobile) is dnd")); - assert_true(prof_output("Buddy1 (laptop) is chat")); - assert_true(prof_output("Buddy2 (work) is away")); + assert_true(prof_output("Buddy1 (mobile) is dnd, \"busy!\"")); + assert_true(prof_output("Buddy1 (laptop) is chat, \"Talk to me!\"")); + assert_true(prof_output("Buddy2 (work) is away, \"Out of office\"")); stbbr_send( "" @@ -119,77 +113,5 @@ show_presence_updates(void **state) "" ); - assert_true(prof_output("Buddy1 (mobile) is xa")); -} - -void -sends_rooms_iq(void **state) -{ - stbbr_for("confreq", - "" - "" - "" - "" - "" - "" - ); - - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); - prof_input("/rooms"); - - assert_true(stbbr_last_received( - "" - "" - "" - )); -} - -void -multiple_pings(void **state) -{ - stbbr_for("prof_ping_1", - "" - ); - stbbr_for("prof_ping_2", - "" - ); - - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); - - prof_input("/ping"); - assert_true(stbbr_received( - "" - "" - "" - )); - assert_true(prof_output("Ping response from server")); - - prof_input("/ping"); - assert_true(stbbr_received( - "" - "" - "" - )); - assert_true(prof_output("Ping response from server")); -} - -void -responds_to_ping(void **state) -{ - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); - - assert_true(prof_output("stabber@localhost logged in successfully")); - - stbbr_send( - "" - "" - "" - ); - - assert_true(stbbr_received( - "" - )); + assert_true(prof_output("Buddy1 (mobile) is xa, \"Gone :(\"")); } diff --git a/functionaltests/test_connect.h b/functionaltests/test_connect.h index 971652b0..c6ceb404 100644 --- a/functionaltests/test_connect.h +++ b/functionaltests/test_connect.h @@ -3,7 +3,5 @@ void connect_jid_requests_roster(void **state); void connect_jid_sends_presence_after_receiving_roster(void **state); void connect_jid_requests_bookmarks(void **state); void connect_bad_password(void **state); -void show_presence_updates(void **state); -void sends_rooms_iq(void **state); -void multiple_pings(void **state); -void responds_to_ping(void **state); +void connect_shows_presence_updates(void **state); + diff --git a/functionaltests/test_ping.c b/functionaltests/test_ping.c new file mode 100644 index 00000000..19a1e413 --- /dev/null +++ b/functionaltests/test_ping.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "proftest.h" + +void +ping_multiple(void **state) +{ + stbbr_for("prof_ping_1", + "" + ); + stbbr_for("prof_ping_2", + "" + ); + + prof_connect("stabber@localhost", "password"); + + prof_input("/ping"); + assert_true(stbbr_received( + "" + "" + "" + )); + assert_true(prof_output("Ping response from server")); + + prof_input("/ping"); + assert_true(stbbr_received( + "" + "" + "" + )); + assert_true(prof_output("Ping response from server")); +} + +void +ping_responds(void **state) +{ + prof_connect("stabber@localhost", "password"); + + assert_true(prof_output("stabber@localhost logged in successfully")); + + stbbr_send( + "" + "" + "" + ); + + assert_true(stbbr_received( + "" + )); +} diff --git a/functionaltests/test_ping.h b/functionaltests/test_ping.h new file mode 100644 index 00000000..a222a486 --- /dev/null +++ b/functionaltests/test_ping.h @@ -0,0 +1,2 @@ +void ping_multiple(void **state); +void ping_responds(void **state); diff --git a/functionaltests/test_rooms.c b/functionaltests/test_rooms.c new file mode 100644 index 00000000..c6097a54 --- /dev/null +++ b/functionaltests/test_rooms.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "proftest.h" + +void +rooms_query(void **state) +{ + stbbr_for("confreq", + "" + "" + "" + "" + "" + "" + ); + + prof_connect("stabber@localhost", "password"); + + prof_input("/rooms"); + + assert_true(stbbr_last_received( + "" + "" + "" + )); + + assert_true(prof_output("chatroom@conference.localhost, (A chat room)")); + assert_true(prof_output("hangout@conference.localhost, (Another chat room)")); +} diff --git a/functionaltests/test_rooms.h b/functionaltests/test_rooms.h new file mode 100644 index 00000000..a0cf5db8 --- /dev/null +++ b/functionaltests/test_rooms.h @@ -0,0 +1,2 @@ +void rooms_query(void **state); +