diff options
author | James Booth <boothj5@gmail.com> | 2015-12-20 02:13:01 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-12-20 02:13:01 +0000 |
commit | 87b4d7cbab44d30d272d87d5b59dbaad51fa90dd (patch) | |
tree | 8474e5f0aae0a80db32232c2e9ac2286a908d9be /tests/functionaltests | |
parent | 1f56c12377f15ac4892f7f72eb31be6bf084061e (diff) | |
download | profani-tty-87b4d7cbab44d30d272d87d5b59dbaad51fa90dd.tar.gz |
Added muc functional tests
Diffstat (limited to 'tests/functionaltests')
-rw-r--r-- | tests/functionaltests/functionaltests.c | 10 | ||||
-rw-r--r-- | tests/functionaltests/test_muc.c | 139 | ||||
-rw-r--r-- | tests/functionaltests/test_muc.h | 12 |
3 files changed, 161 insertions, 0 deletions
diff --git a/tests/functionaltests/functionaltests.c b/tests/functionaltests/functionaltests.c index 6226af7f..39f43b49 100644 --- a/tests/functionaltests/functionaltests.c +++ b/tests/functionaltests/functionaltests.c @@ -20,6 +20,7 @@ #include "test_receipts.h" #include "test_roster.h" #include "test_software.h" +#include "test_muc.h" #define PROF_FUNC_TEST(test) unit_test_setup_teardown(test, init_prof_test, close_prof_test) @@ -82,6 +83,15 @@ int main(int argc, char* argv[]) { PROF_FUNC_TEST(display_software_version_result_when_from_domainpart), PROF_FUNC_TEST(show_message_in_chat_window_when_no_resource), PROF_FUNC_TEST(display_software_version_result_in_chat), + + PROF_FUNC_TEST(sends_room_join), + PROF_FUNC_TEST(sends_room_join_with_default_muc_service), + PROF_FUNC_TEST(sends_room_join_with_nick), + PROF_FUNC_TEST(sends_room_join_with_password), + PROF_FUNC_TEST(sends_room_join_with_nick_and_password), + PROF_FUNC_TEST(show_role_and_affiliation_on_join), + PROF_FUNC_TEST(show_subject_on_join), + }; return run_tests(all_tests); diff --git a/tests/functionaltests/test_muc.c b/tests/functionaltests/test_muc.c new file mode 100644 index 00000000..83e383be --- /dev/null +++ b/tests/functionaltests/test_muc.c @@ -0,0 +1,139 @@ +#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 +sends_room_join(void **state) +{ + prof_connect(); + + prof_input("/join testroom@conference.localhost"); + + assert_true(stbbr_last_received( + "<presence id=\"*\" to=\"testroom@conference.localhost/stabber\">" + "<x xmlns=\"http://jabber.org/protocol/muc\"/>" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>" + "</presence>" + )); +} + +void +sends_room_join_with_default_muc_service(void **state) +{ + prof_connect(); + + prof_input("/join testroom"); + + assert_true(stbbr_last_received( + "<presence id=\"*\" to=\"testroom@conference.localhost/stabber\">" + "<x xmlns=\"http://jabber.org/protocol/muc\"/>" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>" + "</presence>" + )); +} + +void +sends_room_join_with_nick(void **state) +{ + prof_connect(); + + prof_input("/join testroom@conference.localhost nick testnick"); + + assert_true(stbbr_last_received( + "<presence id=\"*\" to=\"testroom@conference.localhost/testnick\">" + "<x xmlns=\"http://jabber.org/protocol/muc\"/>" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>" + "</presence>" + )); +} + +void +sends_room_join_with_password(void **state) +{ + prof_connect(); + + prof_input("/join testroom@conference.localhost password testpassword"); + + assert_true(stbbr_last_received( + "<presence id=\"*\" to=\"testroom@conference.localhost/stabber\">" + "<x xmlns=\"http://jabber.org/protocol/muc\">" + "<password>testpassword</password>" + "</x>" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>" + "</presence>" + )); +} + +void +sends_room_join_with_nick_and_password(void **state) +{ + prof_connect(); + + prof_input("/join testroom@conference.localhost nick testnick password testpassword"); + + assert_true(stbbr_last_received( + "<presence id=\"*\" to=\"testroom@conference.localhost/testnick\">" + "<x xmlns=\"http://jabber.org/protocol/muc\">" + "<password>testpassword</password>" + "</x>" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" ver=\"*\" node=\"http://www.profanity.im\"/>" + "</presence>" + )); +} + +void +show_role_and_affiliation_on_join(void **state) +{ + prof_connect(); + + stbbr_for_id("prof_join_2", + "<presence id=\"prof_join_2\" lang=\"en\" to=\"stabber@localhost/profanity\" from=\"testroom@conference.localhost/stabber\">" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" node=\"http://www.profanity.im\" ver=\"*\"/>" + "<x xmlns=\"http://jabber.org/protocol/muc#user\">" + "<item role=\"participant\" jid=\"stabber@localhost/profanity\" affiliation=\"none\"/>" + "</x>" + "<status code=\"110\"/>" + "</presence>" + ); + + prof_input("/join testroom@conference.localhost"); + + assert_true(prof_output_exact("-> You have joined the room as stabber, role: participant, affiliation: none")); +} + +void +show_subject_on_join(void **state) +{ + prof_connect(); + + stbbr_for_id("prof_join_2", + "<presence id=\"prof_join_2\" lang=\"en\" to=\"stabber@localhost/profanity\" from=\"testroom@conference.localhost/stabber\">" + "<c hash=\"sha-1\" xmlns=\"http://jabber.org/protocol/caps\" node=\"http://www.profanity.im\" ver=\"*\"/>" + "<x xmlns=\"http://jabber.org/protocol/muc#user\">" + "<item role=\"participant\" jid=\"stabber@localhost/profanity\" affiliation=\"none\"/>" + "</x>" + "<status code=\"110\"/>" + "</presence>" + ); + + prof_input("/join testroom@conference.localhost"); + assert_true(prof_output_exact("-> You have joined the room as stabber, role: participant, affiliation: none")); + + stbbr_send( + "<message type=\"groupchat\" to=\"stabber@localhost/profanity\" from=\"testroom@conference.localhost\">" + "<subject>Test room subject</subject>" + "<body>anothernick has set the subject to: Test room subject</body>" + "</message>" + ); + + assert_true(prof_output_regex("Room subject: .+Test room subject")); +} diff --git a/tests/functionaltests/test_muc.h b/tests/functionaltests/test_muc.h new file mode 100644 index 00000000..49329a36 --- /dev/null +++ b/tests/functionaltests/test_muc.h @@ -0,0 +1,12 @@ +void sends_room_join(void **state); +void sends_room_join_with_default_muc_service(void **state); +void sends_room_join_with_nick(void **state); +void sends_room_join_with_password(void **state); +void sends_room_join_with_nick_and_password(void **state); +void show_role_and_affiliation_on_join(void **state); +void show_subject_on_join(void **state); + + + + + |