1 5 package org.jivesoftware.smackx.packet; 6 7 import java.util.Iterator ; 8 9 import org.jivesoftware.smack.*; 10 import org.jivesoftware.smack.filter.*; 11 import org.jivesoftware.smack.packet.*; 12 import org.jivesoftware.smack.test.SmackTestCase; 13 import org.jivesoftware.smackx.*; 14 15 21 public class RosterExchangeTest extends SmackTestCase { 22 23 27 public RosterExchangeTest(String arg0) { 28 super(arg0); 29 } 30 31 36 public void testSendRosterEntries() { 37 Chat chat1 = getConnection(0).createChat(getBareJID(1)); 39 40 Message msg = chat1.createMessage(); 42 msg.setSubject("Any subject you want"); 43 msg.setBody("This message contains roster items."); 44 assertTrue("Roster has no entries", getConnection(0).getRoster().getEntryCount() > 0); 46 RosterExchange rosterExchange = new RosterExchange(getConnection(0).getRoster()); 47 msg.addExtension(rosterExchange); 48 49 try { 51 chat1.sendMessage(msg); 52 } catch (Exception e) { 53 fail("An error occured sending the message with the roster"); 54 } 55 } 56 57 63 public void testSendAndReceiveRosterEntries() { 64 Chat chat1 = getConnection(0).createChat(getBareJID(1)); 66 final Chat chat2 = new Chat(getConnection(1), getBareJID(0), chat1.getThreadID()); 67 68 PacketFilter packetFilter = new PacketExtensionFilter("x", "jabber:x:roster"); 71 PacketListener packetListener = new PacketListener() { 72 public void processPacket(Packet packet) { 73 Message message = (Message) packet; 74 assertNotNull("Body is null", message.getBody()); 75 try { 76 RosterExchange rosterExchange = 77 (RosterExchange) message.getExtension("x", "jabber:x:roster"); 78 assertNotNull("Message without extension \"jabber:x:roster\"", rosterExchange); 79 assertTrue( 80 "Roster without entries", 81 rosterExchange.getRosterEntries().hasNext()); 82 for (Iterator it = rosterExchange.getRosterEntries(); it.hasNext();) { 83 RemoteRosterEntry remoteRosterEntry = (RemoteRosterEntry) it.next(); 84 } 85 } catch (ClassCastException e) { 86 fail("ClassCastException - Most probable cause is that smack providers is misconfigured"); 87 } 88 try { 89 chat2.sendMessage("ok"); 90 } catch (Exception e) { 91 fail("An error occured sending ack " + e.getMessage()); 92 } 93 } 94 }; 95 getConnection(1).addPacketListener(packetListener, packetFilter); 96 97 Message msg = chat1.createMessage(); 99 msg.setSubject("Any subject you want"); 100 msg.setBody("This message contains roster items."); 101 assertTrue("Roster has no entries", getConnection(0).getRoster().getEntryCount() > 0); 103 RosterExchange rosterExchange = new RosterExchange(getConnection(0).getRoster()); 104 msg.addExtension(rosterExchange); 105 106 try { 108 chat1.sendMessage(msg); 109 } catch (Exception e) { 110 fail("An error occured sending the message with the roster"); 111 } 112 msg = chat1.nextMessage(2000); 114 assertNotNull("No reply received", msg); 115 } 116 117 123 public void testSendAndAcceptRosterEntries() { 124 Chat chat1 = getConnection(0).createChat(getBareJID(1)); 126 final Chat chat2 = new Chat(getConnection(1), getBareJID(0), chat1.getThreadID()); 127 128 PacketFilter packetFilter = new PacketExtensionFilter("x", "jabber:x:roster"); 131 PacketListener packetListener = new PacketListener() { 132 public void processPacket(Packet packet) { 133 Message message = (Message) packet; 134 assertNotNull("Body is null", message.getBody()); 135 try { 136 RosterExchange rosterExchange = 137 (RosterExchange) message.getExtension("x", "jabber:x:roster"); 138 assertNotNull("Message without extension \"jabber:x:roster\"", rosterExchange); 139 assertTrue( 140 "Roster without entries", 141 rosterExchange.getRosterEntries().hasNext()); 142 for (Iterator it = rosterExchange.getRosterEntries(); it.hasNext();) { 144 RemoteRosterEntry remoteRosterEntry = (RemoteRosterEntry) it.next(); 145 getConnection(1).getRoster().createEntry( 146 remoteRosterEntry.getUser(), 147 remoteRosterEntry.getName(), 148 remoteRosterEntry.getGroupArrayNames()); 149 } 150 } catch (ClassCastException e) { 151 fail("ClassCastException - Most probable cause is that smack providers is misconfigured"); 152 } catch (Exception e) { 153 fail(e.toString()); 154 } 155 try { 156 chat2.sendMessage("ok"); 157 } catch (Exception e) { 158 fail("An error occured sending ack " + e.getMessage()); 159 } 160 } 161 }; 162 getConnection(1).addPacketListener(packetListener, packetFilter); 163 164 Message msg = chat1.createMessage(); 166 msg.setSubject("Any subject you want"); 167 msg.setBody("This message contains roster items."); 168 assertTrue("Roster has no entries", getConnection(0).getRoster().getEntryCount() > 0); 170 RosterExchange rosterExchange = new RosterExchange(getConnection(0).getRoster()); 171 msg.addExtension(rosterExchange); 172 173 try { 175 chat1.sendMessage(msg); 176 } catch (Exception e) { 177 fail("An error occured sending the message with the roster"); 178 } 179 msg = chat1.nextMessage(5000); 181 assertNotNull("No reply received", msg); 182 try { 183 Thread.sleep(200); 184 } catch (Exception e) { 185 } 186 assertTrue("Roster2 has no entries", getConnection(1).getRoster().getEntryCount() > 0); 187 } 188 189 protected void setUp() throws Exception { 190 super.setUp(); 191 try { 192 getConnection(0).getRoster().createEntry( 193 getBareJID(2), 194 "gato5", 195 new String [] { "Friends, Coworker" }); 196 getConnection(0).getRoster().createEntry(getBareJID(3), "gato6", null); 197 Thread.sleep(300); 198 199 } catch (Exception e) { 200 fail(e.getMessage()); 201 } 202 } 203 204 protected int getMaxConnections() { 205 return 4; 206 } 207 208 } 209 | Popular Tags |