mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-10 17:49:38 +02:00
Added support for offline presence, code cleanup (SMACK-74, SMACK-201).
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@7185 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
fb0cb0476a
commit
2e5f42aa39
3 changed files with 148 additions and 85 deletions
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* $RCSfile$
|
||||
* $Revision: $
|
||||
* $Date: $
|
||||
* $Revision$
|
||||
* $Date$
|
||||
*
|
||||
* Copyright 2003-2007 Jive Software.
|
||||
*
|
||||
|
@ -181,21 +181,23 @@ public class PresenceTest extends SmackTestCase {
|
|||
// Wait up to 2 seconds
|
||||
long initial = System.currentTimeMillis();
|
||||
while (System.currentTimeMillis() - initial < 2000 && (
|
||||
roster.getPresence(getBareJID(1)) == null)) {
|
||||
!roster.getPresence(getBareJID(1)).isAvailable()))
|
||||
{
|
||||
Thread.sleep(100);
|
||||
}
|
||||
|
||||
// Check that a presence is returned for the new contact
|
||||
Presence presence = roster.getPresence(getBareJID(1));
|
||||
assertNotNull("Returned a null Presence for an existing user", presence);
|
||||
assertTrue("Returned an offline Presence for an existing user", presence.isAvailable());
|
||||
|
||||
presence = roster.getPresenceResource(getBareJID(1) + "/Home");
|
||||
assertNotNull("Returned a null Presence for Home resource", presence);
|
||||
assertTrue("Returned an offline Presence for Home resource", presence.isAvailable());
|
||||
|
||||
presence = roster.getPresenceResource(getFullJID(1));
|
||||
assertNotNull("Returned a null Presence for Smack resource", presence);
|
||||
assertTrue("Returned an offline Presence for Smack resource", presence.isAvailable());
|
||||
|
||||
Iterator<Presence> presences = roster.getPresences(getBareJID(1));
|
||||
assertTrue("Returned an offline Presence for an existing user", presence.isAvailable());
|
||||
assertNotNull("No presence was found for user1", presences);
|
||||
assertTrue("No presence was found for user1", presences.hasNext());
|
||||
presences.next();
|
||||
|
@ -209,21 +211,57 @@ public class PresenceTest extends SmackTestCase {
|
|||
|
||||
// Check that a presence is returned for the new contact
|
||||
presence = roster.getPresence(getBareJID(1));
|
||||
assertNotNull("Returned a null Presence for an existing user", presence);
|
||||
assertTrue("Returned a null Presence for an existing user", presence.isAvailable());
|
||||
|
||||
presence = roster.getPresenceResource(getFullJID(1));
|
||||
assertNotNull("Returned a null Presence for Smack resource", presence);
|
||||
assertTrue("Returned a null Presence for Smack resource", presence.isAvailable());
|
||||
|
||||
presence = roster.getPresenceResource(getBareJID(1) + "/Home");
|
||||
assertNull("Returned a Presence for no longer connected resource", presence);
|
||||
assertTrue("Returned a Presence for no longer connected resource", !presence.isAvailable());
|
||||
|
||||
presences = roster.getPresences(getBareJID(1));
|
||||
assertNotNull("No presence was found for user1", presences);
|
||||
assertTrue("No presence was found for user1", presences.hasNext());
|
||||
presences.next();
|
||||
Presence value = presences.next();
|
||||
assertTrue("No presence was found for user1", value.isAvailable());
|
||||
assertFalse("More than one presence was found for user1", presences.hasNext());
|
||||
}
|
||||
|
||||
/**
|
||||
* User1 logs in, then sets offline presence information (presence with status text). User2
|
||||
* logs in and checks to see if offline presence is returned.
|
||||
*/
|
||||
public void testOfflineStatusPresence() throws Exception {
|
||||
// Add a new roster entry for other user.
|
||||
Roster roster = getConnection(0).getRoster();
|
||||
roster.createEntry(getBareJID(1), "gato1", null);
|
||||
|
||||
// Wait up to 2 seconds
|
||||
long initial = System.currentTimeMillis();
|
||||
while (System.currentTimeMillis() - initial < 2000 && (
|
||||
roster.getPresence(getBareJID(1)).getType().equals(Presence.Type.unavailable))) {
|
||||
Thread.sleep(100);
|
||||
}
|
||||
|
||||
// Sign out of conn0.
|
||||
getConnection(0).disconnect();
|
||||
|
||||
// Sign out of conn1 with status
|
||||
Presence offlinePresence = new Presence(Presence.Type.unavailable);
|
||||
offlinePresence.setStatus("Offline test");
|
||||
getConnection(1).disconnect(offlinePresence);
|
||||
|
||||
// See if conneciton 0 can get offline status.
|
||||
XMPPConnection con0 = getConnection(0);
|
||||
con0.connect();
|
||||
con0.login(getUsername(0), getUsername(0));
|
||||
|
||||
// Wait 500 ms
|
||||
Thread.sleep(500);
|
||||
Presence presence = con0.getRoster().getPresence(getBareJID(1));
|
||||
assertTrue("Offline presence status not received.",
|
||||
"Offline test".equals(presence.getStatus()));
|
||||
}
|
||||
|
||||
protected int getMaxConnections() {
|
||||
return 2;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue