diff options
Diffstat (limited to 'tests/functionaltests/test_roster.c')
-rw-r--r-- | tests/functionaltests/test_roster.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tests/functionaltests/test_roster.c b/tests/functionaltests/test_roster.c new file mode 100644 index 00000000..ba1c851a --- /dev/null +++ b/tests/functionaltests/test_roster.c @@ -0,0 +1,121 @@ +#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_new_item(void **state) +{ + prof_connect(); + + stbbr_for_query("jabber:iq:roster", + "<iq type=\"set\" from=\"stabber@localhost\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"bob@localhost\" subscription=\"none\" name=\"\"/>" + "</query>" + "</iq>" + ); + + prof_input("/roster add bob@localhost"); + + assert_true(stbbr_received( + "<iq type=\"set\" id=\"*\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"bob@localhost\" name=\"\"/>" + "</query>" + "</iq>" + )); + + assert_true(prof_output_exact("Roster item added: bob@localhost")); +} + +void +sends_new_item_nick(void **state) +{ + prof_connect(); + + stbbr_for_query("jabber:iq:roster", + "<iq type=\"set\" from=\"stabber@localhost\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"bob@localhost\" subscription=\"none\" name=\"Bobby\"/>" + "</query>" + "</iq>" + ); + + prof_input("/roster add bob@localhost Bobby"); + + assert_true(stbbr_received( + "<iq type=\"set\" id=\"*\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"bob@localhost\" name=\"Bobby\"/>" + "</query>" + "</iq>" + )); + + assert_true(prof_output_exact("Roster item added: bob@localhost (Bobby)")); +} + +void +sends_remove_item(void **state) +{ + prof_connect_with_roster( + "<iq type=\"result\" to=\"stabber@localhost/profanity\">" + "<query xmlns=\"jabber:iq:roster\" ver=\"362\">" + "<item jid=\"buddy1@localhost\" subscription=\"both\"/>" + "<item jid=\"buddy2@localhost\" subscription=\"both\"/>" + "</query>" + "</iq>" + ); + + stbbr_for_query("jabber:iq:roster", + "<iq id=\"*\" type=\"set\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"buddy1@localhost\" subscription=\"remove\"/>" + "</query>" + "</iq>" + ); + + prof_input("/roster remove buddy1@localhost"); + + assert_true(stbbr_received( + "<iq type=\"set\" id=\"*\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"buddy1@localhost\" subscription=\"remove\"/>" + "</query>" + "</iq>" + )); + + assert_true(prof_output_exact("Roster item removed: buddy1@localhost")); +} + +void +sends_nick_change(void **state) +{ + prof_connect_with_roster( + "<iq type=\"result\" to=\"stabber@localhost/profanity\">" + "<query xmlns=\"jabber:iq:roster\" ver=\"362\">" + "<item jid=\"buddy1@localhost\" subscription=\"both\"/>" + "</query>" + "</iq>" + ); + + prof_input("/roster nick buddy1@localhost Buddy1"); + + assert_true(prof_output_exact("Nickname for buddy1@localhost set to: Buddy1.")); + + assert_true(stbbr_received( + "<iq type=\"set\" id=\"*\">" + "<query xmlns=\"jabber:iq:roster\">" + "<item jid=\"buddy1@localhost\" name=\"Buddy1\"/>" + "</query>" + "</iq>" + )); +} |