Package org.xmpp.packet

Examples of org.xmpp.packet.IQ


  public void testPacketTimeout() throws Exception {
    int TIMEOUT_DELAY = 0;
    int TIMEOUT_WAIT = 5;

    // Send a valid packet, so it is received by the remote Disco mock, but not processed.
    IQ packet = new IQ();
    packet.setFrom(server1.jid);
    packet.setID("disco");
    packet.setTo(server2.jid);
    packet.setType(IQ.Type.get);
    packet.setChildElement("query", XmppNamespace.NAMESPACE_DISCO_ITEMS);

    PacketCallback callback = mock(PacketCallback.class);
    final CountDownLatch finished = new CountDownLatch(1);

    Mockito.doAnswer(new Answer<Void>() {
View Full Code Here


    FederationError.Code TEST_CODE = FederationError.Code.NOT_AUTHORIZED;
    PacketError.Condition TEST_CONDITION = PacketError.Condition.not_authorized;

    // Send a valid packet, so it is received by the remote Disco mock, but not
    // explicitly processed.
    IQ packet = new IQ();
    packet.setFrom(server1.jid);
    packet.setID("disco");
    packet.setTo(server2.jid);
    packet.setType(IQ.Type.get);
    packet.setChildElement("query", XmppNamespace.NAMESPACE_DISCO_ITEMS);

    PacketCallback callback = mock(PacketCallback.class);
    server1.manager.send(packet, callback, PACKET_TIMEOUT);

    // Accept the disco request and return TEST_CODE error.
    ArgumentCaptor<PacketCallback> server2Callback = ArgumentCaptor.forClass(PacketCallback.class);
    verify(server2.disco).processDiscoItemsGet(eq(packet), server2Callback.capture());
    server2Callback.getValue().error(FederationErrors.newFederationError(TEST_CODE));

    // Try to then complete the message, but cause an IllegalStateException.
    IQ fakeResponse = IQ.createResultIQ(packet);
    try {
      server2Callback.getValue().run(fakeResponse);
      fail("Should not be able to invoke callback twice");
    } catch (IllegalStateException e) {
      // pass
    }

    // Check the outgoing packet log.
    assertEquals(1, server2.transport.packets.size());
    Packet errorResponse = server2.transport.packets.peek();
    PacketError error = errorResponse.getError();
    assertNotNull(error);
    assertEquals(TEST_CONDITION, error.getCondition());

    // Assert that the error response does *not* include the original packet.
    assertTrue(errorResponse instanceof IQ);
    IQ errorIQ = (IQ) errorResponse;
    assertEquals(null, errorIQ.getChildElement());

    // Confirm that the error is received properly on the first server.
    ArgumentCaptor<FederationError> returnedError = ArgumentCaptor.forClass(FederationError.class);
    verify(callback).error(returnedError.capture());
    verify(callback, never()).run(any(Packet.class));
View Full Code Here

  /**
   * Test that an unhandled error (e.g. <forbidden>) is translated to
   * UNDEFINED_CONDITION before being returned to the mocked callback.
   */
  public void testUnhandledErrorResponse() {
    IQ packet = new IQ();
    packet.setFrom(server1.jid);
    packet.setID("foo");
    packet.setTo(server2.jid);

    // Disable routing so we can intercept the packet.
    server1.transport.router = null;
    PacketCallback callback = mock(PacketCallback.class);
    server1.manager.send(packet, callback, PACKET_TIMEOUT);

    // Generate an explicit error <forbidden>.
    IQ errorPacket = IQ.createResultIQ(packet);
    errorPacket.setError(PacketError.Condition.forbidden);
    server1.manager.receivePacket(errorPacket);

    // Confirm that <forbidden> is transformed to UNDEFINED_CONDITION.
    ArgumentCaptor<FederationError> returnedError = ArgumentCaptor.forClass(FederationError.class);
    verify(callback).error(returnedError.capture());
View Full Code Here

   * be re-used later.
   */
  public void testReusePacketId() throws Exception {
    int REUSE_FAIL_WAIT = 5;

    IQ packet = new IQ();
    packet.setFrom(server1.jid);
    packet.setID("foo-packet");
    packet.setTo(server2.jid);

    // Disable routing so we can intercept the packet.
    server1.transport.router = null;
    PacketCallback callback = mock(PacketCallback.class);
    server1.manager.send(packet, callback, PACKET_TIMEOUT);
    assertEquals(1, server1.transport.packets.size());
    assertEquals(packet, server1.transport.packets.poll());

    // Try sending another packet with the same ID - must fail (called back in
    // another thread)!
    PacketCallback invalidCallback = mock(PacketCallback.class);
    final CountDownLatch finished = new CountDownLatch(1);
    Mockito.doAnswer(new Answer<Void>() {
      @Override
      public Void answer(InvocationOnMock invocation) throws Throwable {
        FederationError error = (FederationError) invocation.getArguments()[0];
        assertEquals(FederationError.Code.UNDEFINED_CONDITION, error.getErrorCode());
        finished.countDown();
        return null;
      }
    }).when(invalidCallback).error(any(FederationError.class));

    server1.manager.send(packet, invalidCallback, PACKET_TIMEOUT);
    assertTrue(finished.await(REUSE_FAIL_WAIT, TimeUnit.SECONDS));
    verify(invalidCallback, never()).run(any(Packet.class));

    // Generate an explicit success response.
    IQ successPacket = IQ.createResultIQ(packet);
    server1.manager.receivePacket(successPacket);
    verify(callback).run(eq(successPacket));
    verify(callback, never()).error(any(FederationError.class));

    // Again, re-use the ID: should succeed since it is cleared from callbacks.
View Full Code Here

    assertEquals("Expected disco packet to be sent", 1, transport.packetsSent);
    Packet packet = transport.lastPacketSent;
    assertEquals(EXPECTED_DISCO_ITEMS_GET, packet.toString());
    assertTrue(disco.isDiscoRequestPending(REMOTE_DOMAIN));

    IQ discoItemsResult = createDiscoItems(true /* wave */, false /* not pubsub */);
    discoItemsResult.setID(packet.getID());
    XmppUtil.fakeUniqueId = DISCO_INFO_ID;
    manager.receivePacket(discoItemsResult);
    assertEquals("Expected disco info get to be sent", 2, transport.packetsSent);
    assertEquals(EXPECTED_DISCO_INFO_GET, transport.lastPacketSent.toString());

View Full Code Here

   */
  public void testDiscoItemsResult() {
    initiateDiscoRequest()// sends one packet.
    checkAndResetStats(1, 0, 0)// started
    // create with wave, no pubsub
    IQ discoItemsResult = createDiscoItems(true /* wave */, false /* not pubsub */);

    XmppUtil.fakeUniqueId = DISCO_INFO_ID;
    manager.receivePacket(discoItemsResult);
    assertEquals(2, transport.packetsSent);
    Packet packet = transport.lastPacketSent;
View Full Code Here

   */
  public void testDiscoInfoResultWave() {
    initiateDiscoRequest()// sends one packet.
    checkAndResetStats(1, 0, 0)// started
    // create with wave, no pubsub
    IQ discoItemsResult = createDiscoItems(true /* wave */, false /* not pubsub */);
    // Start the process.
    XmppUtil.fakeUniqueId = DISCO_INFO_ID;
    manager.receivePacket(discoItemsResult);
    assertEquals(2, transport.packetsSent);
    Packet packet = transport.lastPacketSent;
View Full Code Here

    initiateDiscoRequest()// sends one packet.
    checkAndResetStats(1, 0, 0)// started
    transport.packets.remove(); // remove packet from queue

    // create with just pubsub
    IQ discoItemsResult = createDiscoItems(false /* not wave */, true /* pubsub */);
    XmppUtil.fakeUniqueId = DISCO_INFO_ID;
    manager.receivePacket(discoItemsResult);
    assertEquals(3, transport.packetsSent);

    // Expect a wave request even if we didn't send it (automatic wave request)
    Packet wavePacket = transport.packets.poll();
    assertEquals(EXPECTED_DISCO_INFO_GET, wavePacket.toString());

    // Expect pubsub packet
    Packet pubsubPacket = transport.packets.poll();
    assertEquals(EXPECTED_DISCO_INFO_GET_PUBSUB, pubsubPacket.toString());

    // Create pubsub response, should not yet invoke callback
    manager.receivePacket(createDiscoInfo(false /* not wave */));
    verifyZeroInteractions(discoCallback);

    // Create response to wave request, with ITEM_NOT_FOUND
    IQ failWaveResponse = IQ.createResultIQ((IQ) wavePacket);
    failWaveResponse.setError(PacketError.Condition.item_not_found);
    manager.receivePacket(failWaveResponse);
    verify(discoCallback).onFailure(anyString());
    checkAndResetStats(0, 0, 1)// failed

    // No more outgoing packets
View Full Code Here

    checkAndResetStats(1, 0, 0)// started

    transport.packets.remove(); // remove packet from queue

    // create with both pubsub and wave
    IQ discoItemsResult = createDiscoItems(true /* wave */, true /* pubsub */);
    XmppUtil.fakeUniqueId = DISCO_INFO_ID;
    manager.receivePacket(discoItemsResult);
    assertEquals(3, transport.packetsSent);

    // Expect a wave request
View Full Code Here

  /**
   * Tests that we return a (useless, empty) IQ for a disco#items.
   */
  public void testDiscoGetDiscoItems() {
    IQ request = createDiscoRequest(XmppNamespace.NAMESPACE_DISCO_ITEMS);
    manager.receivePacket(request);
    assertEquals(1, transport.packetsSent);
    Packet packet = transport.lastPacketSent;
    assertEquals(REMOTE_JID, packet.getTo().toString());
    assertEquals(LOCAL_JID, packet.getFrom().toString());
View Full Code Here

TOP

Related Classes of org.xmpp.packet.IQ

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.