aboutsummaryrefslogtreecommitdiffstats
path: root/tests/check_jabber_util.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-03-18 14:38:06 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2010-03-18 14:38:06 +0000
commit638feab58aebc97d646820dd1bc9b8d9fbeec29d (patch)
treec4022afb6ffef2b672f3aaf16c8bd7a9f7b23ea8 /tests/check_jabber_util.c
parent6ce01bec119c96243a8d43e28681cc512fbd0950 (diff)
parent842cd8dbfb98b61af33b5fe481364c3cfbeaca04 (diff)
Merging in Jabber resource selection fix. This adds the activity_timeout
setting, which makes BitlBee send a message to bare JIDs if there was no recent seen activity from any of the person's resources. This should fix most issues with messages going to the wrong resource (i.e. someone's mobile phone instead of something more sensible).
Diffstat (limited to 'tests/check_jabber_util.c')
-rw-r--r--tests/check_jabber_util.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/tests/check_jabber_util.c b/tests/check_jabber_util.c
index 4728c5ee..bf6d3e60 100644
--- a/tests/check_jabber_util.c
+++ b/tests/check_jabber_util.c
@@ -13,12 +13,12 @@ static void check_buddy_add(int l)
struct jabber_buddy *budw1, *budw2, *budw3, *budn, *bud;
budw1 = jabber_buddy_add( ic, "wilmer@gaast.net/BitlBee" );
- budw1->last_act = time( NULL ) - 100;
+ budw1->last_msg = time( NULL ) - 100;
budw2 = jabber_buddy_add( ic, "WILMER@gaast.net/Telepathy" );
budw2->priority = 2;
- budw2->last_act = time( NULL );
+ budw2->last_msg = time( NULL );
budw3 = jabber_buddy_add( ic, "wilmer@GAAST.NET/bitlbee" );
- budw3->last_act = time( NULL ) - 200;
+ budw3->last_msg = time( NULL ) - 200;
budw3->priority = 4;
/* TODO(wilmer): Shouldn't this just return budw3? */
fail_if( jabber_buddy_add( ic, "wilmer@gaast.net/Telepathy" ) != NULL );
@@ -59,18 +59,39 @@ static void check_buddy_add(int l)
fail_if( jabber_buddy_by_jid( ic, "wilmer@GAAST.NET/telepathy", GET_BUDDY_CREAT ) == budw2 );
fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/Telepathy" ) );
fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/telepathy" ) );
- fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw1 );
+
+ /* Test activity_timeout and GET_BUDDY_BARE_OK. */
+ fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_BARE_OK ) == budw1 );
+ budw1->last_msg -= 50;
+ fail_unless( ( bud = jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_BARE_OK ) ) != NULL );
+ fail_unless( strcmp( bud->full_jid, "wilmer@gaast.net" ) == 0 );
fail_if( jabber_buddy_remove( ic, "wilmer@gaast.net" ) );
fail_unless( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) == budw1 );
+ fail_if( jabber_buddy_remove( ic, "wilmer@gaast.net" ) );
+ fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/bitlbee" ) );
+ fail_unless( jabber_buddy_remove( ic, "wilmer@gaast.net/BitlBee" ) );
+ fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net", GET_BUDDY_BARE_OK ) );
+
/* Check if remove_bare() indeed gets rid of all. */
+ /* disable this one for now.
fail_unless( jabber_buddy_remove_bare( ic, "wilmer@gaast.net" ) );
fail_if( jabber_buddy_by_jid( ic, "wilmer@gaast.net", 0 ) );
+ */
fail_if( jabber_buddy_remove( ic, "nekkid@lamejab.net/Illegal" ) );
fail_unless( jabber_buddy_remove( ic, "nekkid@lamejab.net" ) );
fail_if( jabber_buddy_by_jid( ic, "nekkid@lamejab.net", 0 ) );
+
+ /* Fixing a bug in this branch that caused information to get lost when
+ removing the first full JID from a list. */
+ jabber_buddy_add( ic, "bugtest@google.com/A" );
+ jabber_buddy_add( ic, "bugtest@google.com/B" );
+ jabber_buddy_add( ic, "bugtest@google.com/C" );
+ fail_unless( jabber_buddy_remove( ic, "bugtest@google.com/A" ) );
+ fail_unless( jabber_buddy_remove( ic, "bugtest@google.com/B" ) );
+ fail_unless( jabber_buddy_remove( ic, "bugtest@google.com/C" ) );
}
Suite *jabber_util_suite (void)
@@ -84,6 +105,7 @@ Suite *jabber_util_suite (void)
ic->proto_data = jd = g_new0( struct jabber_data, 1 );
jd->buddies = g_hash_table_new( g_str_hash, g_str_equal );
set_add( &ic->acc->set, "resource_select", "priority", NULL, ic->acc );
+ set_add( &ic->acc->set, "activity_timeout", "120", NULL, ic->acc );
suite_add_tcase (s, tc_core);
tcase_add_test (tc_core, check_buddy_add);