diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-03-18 14:38:06 +0000 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-03-18 14:38:06 +0000 |
commit | 638feab58aebc97d646820dd1bc9b8d9fbeec29d (patch) | |
tree | c4022afb6ffef2b672f3aaf16c8bd7a9f7b23ea8 /tests/check_jabber_util.c | |
parent | 6ce01bec119c96243a8d43e28681cc512fbd0950 (diff) | |
parent | 842cd8dbfb98b61af33b5fe481364c3cfbeaca04 (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.c | 30 |
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); |