/** * If a listener for all requests is registered it should be notified on incoming requests. * * @throws Exception should not happen */ @Test public void shouldInvokeListenerForAllRequests() throws Exception { // add listener InBandBytestreamListener listener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(listener); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert listener is called once ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(listener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert that listener is called for the correct request assertEquals(initiatorJID, byteStreamRequest.getValue().getFrom()); }
/** * If a listener for a specific user in registered it should be notified on incoming requests * for that user. * * @throws Exception should not happen */ @Test public void shouldInvokeListenerForUser() throws Exception { // add listener InBandBytestreamListener listener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(listener, initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert listener is called once ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(listener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert that reply is the correct error packet assertEquals(initiatorJID, byteStreamRequest.getValue().getFrom()); }
/** * If a listener for all requests is registered it should be notified on incoming requests. * * @throws Exception should not happen */ @Test public void shouldInvokeListenerForAllRequests() throws Exception { // add listener Socks5BytestreamListener listener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(listener); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert listener is called once ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(listener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert that listener is called for the correct request assertEquals(initiatorJID, byteStreamRequest.getValue().getFrom()); }
/** * If a listener for a specific user in registered it should be notified on incoming requests * for that user. * * @throws Exception should not happen */ @Test public void shouldInvokeListenerForUser() throws Exception { // add listener Socks5BytestreamListener listener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(listener, initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert listener is called once ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(listener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert that reply is the correct error packet assertEquals(initiatorJID, byteStreamRequest.getValue().getFrom()); }
/** * If listener for a specific user is registered it should not be notified on incoming requests * from other users. * * @throws Exception should not happen */ @Test public void shouldNotInvokeListenerForUser() throws Exception { // add listener for request of user "other_initiator" InBandBytestreamListener listener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(listener, "other_" + initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert listener is not called ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(listener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // capture reply to the In-Band Bytestream open request ArgumentCaptor<IQ> argument = ArgumentCaptor.forClass(IQ.class); verify(connection).sendStanza(argument.capture()); // assert that reply is the correct error packet assertEquals(initiatorJID, argument.getValue().getTo()); assertEquals(IQ.Type.error, argument.getValue().getType()); assertEquals(XMPPError.Condition.not_acceptable, argument.getValue().getError().getCondition()); }
/** * If a user specific listener and an all requests listener is registered only the user specific * listener should be notified. * * @throws Exception should not happen */ @Test public void shouldNotInvokeAllRequestsListenerIfUserListenerExists() throws Exception { // add listener for all request InBandBytestreamListener allRequestsListener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(allRequestsListener); // add listener for request of user "initiator" InBandBytestreamListener userRequestsListener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(userRequestsListener, initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is called once ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(userRequestsListener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is not called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); }
/** * If a user specific listener and an all requests listener is registered only the all requests * listener should be notified on an incoming request for another user. * * @throws Exception should not happen */ @Test public void shouldInvokeAllRequestsListenerIfUserListenerExists() throws Exception { // add listener for all request InBandBytestreamListener allRequestsListener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(allRequestsListener); // add listener for request of user "other_initiator" InBandBytestreamListener userRequestsListener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(userRequestsListener, "other_" + initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is not called ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(userRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener).incomingBytestreamRequest(byteStreamRequest.capture()); }
/** * If listener for a specific user is registered it should not be notified on incoming requests * from other users. * * @throws Exception should not happen */ @Test public void shouldNotInvokeListenerForUser() throws Exception { // add listener for request of user "other_initiator" Socks5BytestreamListener listener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(listener, "other_" + initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert listener is not called ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(listener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // capture reply to the SOCKS5 Bytestream initiation ArgumentCaptor<IQ> argument = ArgumentCaptor.forClass(IQ.class); verify(connection).sendStanza(argument.capture()); // assert that reply is the correct error packet assertEquals(initiatorJID, argument.getValue().getTo()); assertEquals(IQ.Type.error, argument.getValue().getType()); assertEquals(XMPPError.Condition.not_acceptable, argument.getValue().getError().getCondition()); }
/** * If a user specific listener and an all requests listener is registered only the user specific * listener should be notified. * * @throws Exception should not happen */ @Test public void shouldNotInvokeAllRequestsListenerIfUserListenerExists() throws Exception { // add listener for all request Socks5BytestreamListener allRequestsListener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(allRequestsListener); // add listener for request of user "initiator" Socks5BytestreamListener userRequestsListener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(userRequestsListener, initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is called once ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(userRequestsListener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is not called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); }
/** * If a user specific listener and an all requests listener is registered only the all requests * listener should be notified on an incoming request for another user. * * @throws Exception should not happen */ @Test public void shouldInvokeAllRequestsListenerIfUserListenerExists() throws Exception { // add listener for all request Socks5BytestreamListener allRequestsListener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(allRequestsListener); // add listener for request of user "other_initiator" Socks5BytestreamListener userRequestsListener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(userRequestsListener, "other_" + initiatorJID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is not called ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(userRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener).incomingBytestreamRequest(byteStreamRequest.capture()); }
public void incomingBytestreamRequest(BytestreamRequest request) { incomingBytestreamRequest((InBandBytestreamRequest) request); }
public void incomingBytestreamRequest(BytestreamRequest request) { incomingBytestreamRequest((Socks5BytestreamRequest) request); }
/** * If a request with a specific session ID should be ignored no listeners should be notified. * * @throws Exception should not happen */ @Test public void shouldIgnoreInBandBytestreamRequestOnce() throws Exception { // add listener for all request InBandBytestreamListener allRequestsListener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(allRequestsListener); // add listener for request of user "initiator" InBandBytestreamListener userRequestsListener = mock(InBandBytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(userRequestsListener, initiatorJID); // ignore session ID byteStreamManager.ignoreBytestreamRequestOnce(sessionID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is not called ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(userRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is not called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // run the listener with the initiation packet again initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is called on the second request with the // same session ID verify(userRequestsListener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is not called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); }
/** * If a request with a specific session ID should be ignored no listeners should be notified. * * @throws Exception should not happen */ @Test public void shouldIgnoreSocks5BytestreamRequestOnce() throws Exception { // add listener for all request Socks5BytestreamListener allRequestsListener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(allRequestsListener); // add listener for request of user "initiator" Socks5BytestreamListener userRequestsListener = mock(Socks5BytestreamListener.class); byteStreamManager.addIncomingBytestreamListener(userRequestsListener, initiatorJID); // ignore session ID byteStreamManager.ignoreBytestreamRequestOnce(sessionID); // run the listener with the initiation packet initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is not called ArgumentCaptor<BytestreamRequest> byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(userRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is not called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); // run the listener with the initiation packet again initiationListener.handleIQRequest(initBytestream); // wait because packet is processed in an extra thread Thread.sleep(200); // assert user request listener is called on the second request with the same session ID verify(userRequestsListener).incomingBytestreamRequest(byteStreamRequest.capture()); // assert all requests listener is not called byteStreamRequest = ArgumentCaptor.forClass(BytestreamRequest.class); verify(allRequestsListener, never()).incomingBytestreamRequest(byteStreamRequest.capture()); }