diff options
author | James Booth <boothj5@gmail.com> | 2015-05-28 20:02:16 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-05-28 20:02:16 +0100 |
commit | f17afcf5d421ee987cd2f4fe45cf7d3ad25a6eb9 (patch) | |
tree | 461100bcbb65f0d937ed154007544c16e1d3083f | |
parent | d4784db7e1cb4d6bb85cbd8a0caddafb7a7afdec (diff) | |
download | profani-tty-f17afcf5d421ee987cd2f4fe45cf7d3ad25a6eb9.tar.gz |
Split functional tests
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | functionaltests/functionaltests.c | 12 | ||||
-rw-r--r-- | functionaltests/proftest.c | 12 | ||||
-rw-r--r-- | functionaltests/proftest.h | 2 | ||||
-rw-r--r-- | functionaltests/test_connect.c | 100 | ||||
-rw-r--r-- | functionaltests/test_connect.h | 6 | ||||
-rw-r--r-- | functionaltests/test_ping.c | 59 | ||||
-rw-r--r-- | functionaltests/test_ping.h | 2 | ||||
-rw-r--r-- | functionaltests/test_rooms.c | 38 | ||||
-rw-r--r-- | functionaltests/test_rooms.h | 2 |
10 files changed, 138 insertions, 97 deletions
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( "<iq id=\"*\" type=\"get\"><query xmlns=\"jabber:iq:roster\"/></iq>" @@ -44,8 +42,7 @@ connect_jid_sends_presence_after_receiving_roster(void **state) "</iq>" ); - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); + prof_connect("stabber@localhost", "password"); assert_true(stbbr_received( "<presence id=\"*\">" @@ -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( "<iq id=\"*\" type=\"get\">" @@ -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", "<iq id=\"roster\" type=\"result\" to=\"stabber@localhost/profanity\">" @@ -105,12 +100,11 @@ show_presence_updates(void **state) "</presence>" ); - 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( "<presence to=\"stabber@localhost\" from=\"buddy1@localhost/mobile\">" @@ -119,77 +113,5 @@ show_presence_updates(void **state) "</presence>" ); - assert_true(prof_output("Buddy1 (mobile) is xa")); -} - -void -sends_rooms_iq(void **state) -{ - stbbr_for("confreq", - "<iq id=\"confreq\" 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\"/>" - "</query>" - "</iq>" - ); - - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); - prof_input("/rooms"); - - assert_true(stbbr_last_received( - "<iq id=\"confreq\" to=\"conference.localhost\" type=\"get\">" - "<query xmlns=\"http://jabber.org/protocol/disco#items\"/>" - "</iq>" - )); -} - -void -multiple_pings(void **state) -{ - stbbr_for("prof_ping_1", - "<iq id=\"prof_ping_1\" type=\"result\" to=\"stabber@localhost/profanity\"/>" - ); - stbbr_for("prof_ping_2", - "<iq id=\"prof_ping_2\" type=\"result\" to=\"stabber@localhost/profanity\"/>" - ); - - prof_input("/connect stabber@localhost port 5230"); - prof_input("password"); - - prof_input("/ping"); - assert_true(stbbr_received( - "<iq id=\"prof_ping_1\" type=\"get\">" - "<ping xmlns=\"urn:xmpp:ping\"/>" - "</iq>" - )); - assert_true(prof_output("Ping response from server")); - - prof_input("/ping"); - assert_true(stbbr_received( - "<iq id=\"prof_ping_2\" type=\"get\">" - "<ping xmlns=\"urn:xmpp:ping\"/>" - "</iq>" - )); - 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( - "<iq id=\"pingtest1\" type=\"get\" to=\"stabber@localhost/profanity\" from=\"localhost\">" - "<ping xmlns=\"urn:xmpp:ping\"/>" - "</iq>" - ); - - assert_true(stbbr_received( - "<iq id=\"pingtest1\" type=\"result\" from=\"stabber@localhost/profanity\" to=\"localhost\"/>" - )); + 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 <glib.h> +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> +#include <stdlib.h> +#include <string.h> + +#include <stabber.h> +#include <expect.h> + +#include "proftest.h" + +void +ping_multiple(void **state) +{ + stbbr_for("prof_ping_1", + "<iq id=\"prof_ping_1\" type=\"result\" to=\"stabber@localhost/profanity\"/>" + ); + stbbr_for("prof_ping_2", + "<iq id=\"prof_ping_2\" type=\"result\" to=\"stabber@localhost/profanity\"/>" + ); + + prof_connect("stabber@localhost", "password"); + + prof_input("/ping"); + assert_true(stbbr_received( + "<iq id=\"prof_ping_1\" type=\"get\">" + "<ping xmlns=\"urn:xmpp:ping\"/>" + "</iq>" + )); + assert_true(prof_output("Ping response from server")); + + prof_input("/ping"); + assert_true(stbbr_received( + "<iq id=\"prof_ping_2\" type=\"get\">" + "<ping xmlns=\"urn:xmpp:ping\"/>" + "</iq>" + )); + 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( + "<iq id=\"pingtest1\" type=\"get\" to=\"stabber@localhost/profanity\" from=\"localhost\">" + "<ping xmlns=\"urn:xmpp:ping\"/>" + "</iq>" + ); + + assert_true(stbbr_received( + "<iq id=\"pingtest1\" type=\"result\" from=\"stabber@localhost/profanity\" to=\"localhost\"/>" + )); +} 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 <glib.h> +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> +#include <stdlib.h> +#include <string.h> + +#include <stabber.h> +#include <expect.h> + +#include "proftest.h" + +void +rooms_query(void **state) +{ + stbbr_for("confreq", + "<iq id=\"confreq\" 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\"/>" + "</query>" + "</iq>" + ); + + prof_connect("stabber@localhost", "password"); + + prof_input("/rooms"); + + assert_true(stbbr_last_received( + "<iq id=\"confreq\" to=\"conference.localhost\" type=\"get\">" + "<query xmlns=\"http://jabber.org/protocol/disco#items\"/>" + "</iq>" + )); + + 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); + |