Make StanzaHandler use StanzaBroker instead of returning stanzas for reply
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
index 24bcef8..3a48938 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
@@ -33,27 +33,24 @@
import org.apache.vysper.xmpp.stanza.Stanza;
/**
- * relays stanzas to a StanzaReceiver identified by an Entity
- * this relay is mostly for testing purposes
+ * relays stanzas to a StanzaReceiver identified by an Entity this relay is
+ * mostly for testing purposes
*/
public class StanzaReceiverRelay implements StanzaRelay {
- private final Map<Entity, StanzaReceiver> receiverMap = new HashMap<Entity, StanzaReceiver>();
+ private final Map<Entity, StanzaReceiver> receiverMap = new HashMap<>();
private boolean exploitFailureStrategy = true;
- private ServerRuntimeContext serverRuntimeContext = null;
-
private int countRelayed = 0;
private int countFailed = 0;
private int countDelivered = 0;
-
+
private final AtomicBoolean acceptingMode = new AtomicBoolean(true);
-
+
public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) {
- this.serverRuntimeContext = serverRuntimeContext;
}
/**
@@ -63,8 +60,8 @@
receiverMap.put(receiverID, receiver);
}
- public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy)
- throws DeliveryException {
+ public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza,
+ DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException {
if (!isRelaying()) {
throw new ServiceNotAvailableException("relay is not relaying");
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
index c918627..95bdf77 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandler.java
@@ -117,6 +117,6 @@
sessionContext.getResponseWriter().write(stanza);
}
- return null;
+ return Collections.emptyList();
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
index 4296f1e..14ef79a 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
@@ -24,11 +24,9 @@
import org.apache.vysper.xmpp.addressing.EntityFormatException;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StreamErrorCondition;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -62,15 +60,16 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
XMLElementVerifier xmlElementVerifier = stanza.getVerifier();
boolean jabberNamespace = NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS.equals(stanza.getNamespaceURI());
boolean clientCall = xmlElementVerifier.namespacePresent(NamespaceURIs.JABBER_CLIENT);
boolean serverCall = xmlElementVerifier.namespacePresent(NamespaceURIs.JABBER_SERVER);
- // TODO is it better to derive c2s or s2s from the type of endpoint and verify the namespace here?
+ // TODO is it better to derive c2s or s2s from the type of endpoint and verify
+ // the namespace here?
if (clientCall && serverCall)
serverCall = false; // silently ignore ambiguous attributes
if (serverCall)
@@ -81,13 +80,15 @@
if (sessionStateHolder.getState() != SessionState.INITIATED
&& sessionStateHolder.getState() != SessionState.ENCRYPTED
&& sessionStateHolder.getState() != SessionState.AUTHENTICATED) {
- return respondUnsupportedStanzaType("unexpected stream start");
+ stanzaBroker.writeToSession(buildUnsupportedStanzaType("unexpected stream start"));
+ return;
}
// http://etherx.jabber.org/streams cannot be omitted
if (!jabberNamespace) {
- return respondIllegalNamespaceError("namespace is mandatory: "
- + NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS);
+ stanzaBroker.writeToSession(buildIllegalNamespaceError(
+ "namespace is mandatory: " + NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS));
+ return;
}
// processing xml:lang
@@ -104,7 +105,9 @@
clientVersion = new XMPPVersion(versionAttributeValue);
} catch (IllegalArgumentException e) {
// version string does not conform to spec
- return respondUnsupportedVersionError(xmlLang, versionAttributeValue, "illegal version value: ");
+ stanzaBroker.writeToSession(
+ buildUnsupportedVersionError(xmlLang, versionAttributeValue, "illegal version value: "));
+ return;
}
// check if version is supported
if (!clientVersion.equals(XMPPVersion.VERSION_1_0)) {
@@ -113,8 +116,9 @@
responseVersion = XMPPVersion.VERSION_1_0;
} else {
// we do not support major changes, as of RFC3920
- return respondUnsupportedVersionError(xmlLang, versionAttributeValue,
- "major version change not supported: ");
+ stanzaBroker.writeToSession(buildUnsupportedVersionError(xmlLang, versionAttributeValue,
+ "major version change not supported: "));
+ return;
}
} else {
responseVersion = clientVersion;
@@ -133,16 +137,18 @@
try {
EntityImpl.parse(toValue);
} catch (EntityFormatException e) {
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getStreamError(
+ stanzaBroker.writeToSession(ServerErrorResponses.getStreamError(
StreamErrorCondition.IMPROPER_ADDRESSING, sessionContext.getXMLLang(),
"could not parse incoming stanza's TO attribute", null));
-
+ return;
}
// TODO check if toEntity is served by this server
// if (!server.doesServe(toEntity)) throw WhateverException();
- // TODO RFC3920: 'from' attribute SHOULD be silently ignored by the receiving entity
- // TODO RFC3920bis: 'from' attribute SHOULD be not ignored by the receiving entity and used as 'to' in responses
+ // TODO RFC3920: 'from' attribute SHOULD be silently ignored by the receiving
+ // entity
+ // TODO RFC3920bis: 'from' attribute SHOULD be not ignored by the receiving
+ // entity and used as 'to' in responses
}
responseStanza = new ServerResponses().getStreamOpenerForClient(sessionContext.getServerJID(),
responseVersion, sessionContext);
@@ -153,9 +159,9 @@
try {
EntityImpl.parse(fromValue);
} catch (EntityFormatException e) {
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getStreamError(
- StreamErrorCondition.INVALID_FROM, sessionContext.getXMLLang(),
- "could not parse incoming stanza's FROM attribute", null));
+ stanzaBroker.writeToSession(ServerErrorResponses.getStreamError(StreamErrorCondition.INVALID_FROM,
+ sessionContext.getXMLLang(), "could not parse incoming stanza's FROM attribute", null));
+ return;
}
}
@@ -164,7 +170,8 @@
} else {
String descriptiveText = "one of the two namespaces must be present: " + NamespaceURIs.JABBER_CLIENT
+ " or " + NamespaceURIs.JABBER_SERVER;
- return respondIllegalNamespaceError(descriptiveText);
+ stanzaBroker.writeToSession(buildIllegalNamespaceError(descriptiveText));
+ return;
}
// if all is correct, go to next phase
@@ -178,29 +185,26 @@
sessionStateHolder.setState(SessionState.STARTED);
}
- if (responseStanza != null)
- return new ResponseStanzaContainerImpl(responseStanza);
-
- return null;
+ if (responseStanza == null) {
+ return;
+ }
+ stanzaBroker.writeToSession(responseStanza);
}
- private ResponseStanzaContainer respondIllegalNamespaceError(String descriptiveText) {
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getStreamError(
- StreamErrorCondition.INVALID_NAMESPACE, null, descriptiveText, null));
+ private Stanza buildIllegalNamespaceError(String descriptiveText) {
+ return ServerErrorResponses.getStreamError(StreamErrorCondition.INVALID_NAMESPACE, null, descriptiveText, null);
}
- private ResponseStanzaContainer respondUnsupportedStanzaType(String descriptiveText) {
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getStreamError(
- StreamErrorCondition.UNSUPPORTED_STANZA_TYPE, null, descriptiveText, null));
+ private Stanza buildUnsupportedStanzaType(String descriptiveText) {
+ return ServerErrorResponses.getStreamError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE, null, descriptiveText,
+ null);
}
- private ResponseStanzaContainer respondUnsupportedVersionError(String xmlLang, String versionAttributeValue,
- String errorMessage) {
+ private Stanza buildUnsupportedVersionError(String xmlLang, String versionAttributeValue, String errorMessage) {
if (xmlLang == null)
xmlLang = "en_US";
- Stanza error = ServerErrorResponses.getStreamError(StreamErrorCondition.UNSUPPORTED_VERSION,
- xmlLang, errorMessage + versionAttributeValue, null);
- return new ResponseStanzaContainerImpl(error);
+ return ServerErrorResponses.getStreamError(StreamErrorCondition.UNSUPPORTED_VERSION, xmlLang,
+ errorMessage + versionAttributeValue, null);
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java
index ce82baf..f977884 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMLPrologHandler.java
@@ -20,7 +20,6 @@
package org.apache.vysper.xmpp.modules.core.base.handler;
import org.apache.vysper.xml.fragment.XMLElementVerifier;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
@@ -49,15 +48,13 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
+ boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
XMLElementVerifier xmlElementVerifier = stanza.getVerifier();
String version = stanza.getAttributeValue("version");
// TODO check version attribute and other attributes
// String encoding = stanza.getAttribute("encoding").getValue();
-
- return null;
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
index 3d4f362..9cabdd1 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
@@ -19,15 +19,15 @@
*/
package org.apache.vysper.xmpp.modules.core.base.handler;
+import java.util.List;
+
import org.apache.vysper.xml.fragment.Attribute;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StreamErrorCondition;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -38,8 +38,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-
/**
* foundation for the three core protocol stanzas: iq, message, presence
*
@@ -50,8 +48,9 @@
final static Logger logger = LoggerFactory.getLogger(XMPPCoreStanzaHandler.class);
public boolean verify(Stanza stanza) {
- if(stanza == null) return false;
-
+ if (stanza == null)
+ return false;
+
boolean typeVerified = verifyType(stanza);
boolean namespaceVerified = verifyNamespace(stanza);
return typeVerified && namespaceVerified;
@@ -64,13 +63,12 @@
protected abstract boolean verifyType(Stanza stanza);
protected boolean verifyNamespace(Stanza stanza) {
- return NamespaceURIs.JABBER_CLIENT.equals(stanza.getNamespaceURI()) ||
- NamespaceURIs.JABBER_SERVER.equals(stanza.getNamespaceURI());
+ return NamespaceURIs.JABBER_CLIENT.equals(stanza.getNamespaceURI())
+ || NamespaceURIs.JABBER_SERVER.equals(stanza.getNamespaceURI());
}
- public ResponseStanzaContainer execute(Stanza anyStanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder,
- StanzaBroker stanzaBroker) {
+ public void execute(Stanza anyStanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
XMPPCoreStanza stanza = XMPPCoreStanza.getWrapper(anyStanza);
if (stanza == null)
throw new IllegalArgumentException("can only handle core XMPP stanzas (iq, message, presence)");
@@ -98,44 +96,53 @@
// at this point, we are not allowed to respond with another error
// we cannot really close the stream
// we simply ignore it.
- /*ResponseStanzaContainerImpl errorResponseContainer = new ResponseStanzaContainerImpl(
- ServerErrorResponses.getInstance().getErrorResponse(xmppCoreStanza,
- StanzaErrorType.MODIFY, StanzaErrorCondition.BAD_REQUEST,
- errorDescription,
- sessionContext.getXMLLang(), null)
- );
- return errorResponseContainer;*/
+ /*
+ * ResponseStanzaContainerImpl errorResponseContainer = new
+ * ResponseStanzaContainerImpl(
+ * ServerErrorResponses.getInstance().getErrorResponse(xmppCoreStanza,
+ * StanzaErrorType.MODIFY, StanzaErrorCondition.BAD_REQUEST, errorDescription,
+ * sessionContext.getXMLLang(), null) ); return errorResponseContainer;
+ */
}
Entity to = stanza.getTo();
if (sessionContext != null && sessionContext.isServerToServer() && to == null) {
// "to" MUST be present for jabber:server
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getStreamError(
- StreamErrorCondition.IMPROPER_ADDRESSING, stanza.getXMLLang(), "missing to attribute", null));
+ stanzaBroker.writeToSession(ServerErrorResponses.getStreamError(StreamErrorCondition.IMPROPER_ADDRESSING,
+ stanza.getXMLLang(), "missing to attribute", null));
+ return;
}
if (to != null) {
- // TODO ensure, that RFC3920 9.1.1 "If the value of the 'to' attribute is invalid or cannot be contacted..." is enforced
+ // TODO ensure, that RFC3920 9.1.1 "If the value of the 'to' attribute is
+ // invalid or cannot be contacted..." is enforced
}
- List<Stanza> responseStanzas = executeCore(stanza, serverRuntimeContext, isOutboundStanza, sessionContext, stanzaBroker);
- return new ResponseStanzaContainerImpl(responseStanzas);
+ List<Stanza> responseStanzas = executeCore(stanza, serverRuntimeContext, isOutboundStanza, sessionContext,
+ stanzaBroker);
+ if (responseStanzas == null) {
+ return;
+ }
+ responseStanzas.forEach(stanzaBroker::writeToSession);
}
protected abstract List<Stanza> executeCore(XMPPCoreStanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, StanzaBroker stanzaBroker);
-
+ boolean isOutboundStanza, SessionContext sessionContext, StanzaBroker stanzaBroker);
+
/**
- * Extracts the from address either from the "from" attribute of the stanza, if this isn't given
- * retracts to using the address of the initiating entity plus the resource of the sessionContext (if available).
+ * Extracts the from address either from the "from" attribute of the stanza, if
+ * this isn't given retracts to using the address of the initiating entity plus
+ * the resource of the sessionContext (if available).
*
- * A client might send a stanza without a 'from' attribute, if the sending (bare or full) entity can be determined
- * from the context. such a missing from is determined here, if possible.
- * for a formal discussion, see RFC3921bis/Resource Binding/Binding multiple resources/From Addresses
+ * A client might send a stanza without a 'from' attribute, if the sending (bare
+ * or full) entity can be determined from the context. such a missing from is
+ * determined here, if possible. for a formal discussion, see
+ * RFC3921bis/Resource Binding/Binding multiple resources/From Addresses
*
* @param stanza
* @param sessionContext
- * @return The JID of the sender, either from the stanza or the context. A bare JID is returned if no, or more than one resource is bound.
+ * @return The JID of the sender, either from the stanza or the context. A bare
+ * JID is returned if no, or more than one resource is bound.
*/
public static Entity extractSenderJID(XMPPCoreStanza stanza, SessionContext sessionContext) {
Entity from = stanza.getFrom();
@@ -147,16 +154,19 @@
}
/**
- * Extracts the from address either from the "from" attribute of the stanza, if this isn't given
- * retracts to using the address of the initiating entity plus the resource of the sessionContext.
+ * Extracts the from address either from the "from" attribute of the stanza, if
+ * this isn't given retracts to using the address of the initiating entity plus
+ * the resource of the sessionContext.
*
- * A client might send a stanza without a 'from' attribute, if the sending (bare or full) entity can be determined
- * from the context. such a missing from is determined here, if possible.
- * for a formal discussion, see RFC3921bis/Resource Binding/Binding multiple resources/From Addresses
+ * A client might send a stanza without a 'from' attribute, if the sending (bare
+ * or full) entity can be determined from the context. such a missing from is
+ * determined here, if possible. for a formal discussion, see
+ * RFC3921bis/Resource Binding/Binding multiple resources/From Addresses
*
* @param stanza
* @param sessionContext
- * @return The JID of the sender, either from the stanza or the context. If there is no, or multiple resources bound, it returns null.
+ * @return The JID of the sender, either from the stanza or the context. If
+ * there is no, or multiple resources bound, it returns null.
*/
public static Entity extractUniqueSenderJID(XMPPCoreStanza stanza, SessionContext sessionContext) {
Entity from = stanza.getFrom();
@@ -170,13 +180,12 @@
throw new RuntimeException("no 'from' attribute, and initiating entity not set");
}
- String resourceId = sessionContext.getServerRuntimeContext().getResourceRegistry().getUniqueResourceForSession(
- sessionContext);
+ String resourceId = sessionContext.getServerRuntimeContext().getResourceRegistry()
+ .getUniqueResourceForSession(sessionContext);
if (resourceId == null) {
- logger
- .warn(
- "no 'from' attribute, and cannot uniquely determine sending resource for initiating entity {} in session {}",
- initiatingEntity.getFullQualifiedName(), sessionContext.getSessionId());
+ logger.warn(
+ "no 'from' attribute, and cannot uniquely determine sending resource for initiating entity {} in session {}",
+ initiatingEntity.getFullQualifiedName(), sessionContext.getSessionId());
return null;
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AbstractAsyncIQGetHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AbstractAsyncIQGetHandler.java
index 2242c3f..372aeda 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AbstractAsyncIQGetHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AbstractAsyncIQGetHandler.java
@@ -19,6 +19,7 @@
*/
package org.apache.vysper.xmpp.modules.core.base.handler.async;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executor;
@@ -57,7 +58,7 @@
switch (stanza.getIQType()) {
case GET:
executeGetIQLogicAsync(stanza, serverRuntimeContext, sessionContext);
- return null; // IQ response is sent later
+ return Collections.emptyList(); // IQ response is sent later
// all non-GET requests are handled synchronously, regardless of
case ERROR:
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandler.java
index aa2d7b5..0997036 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandler.java
@@ -20,7 +20,6 @@
package org.apache.vysper.xmpp.modules.core.sasl.handler;
import org.apache.vysper.xmpp.modules.core.sasl.AuthorizationRetriesCounter;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -41,15 +40,15 @@
}
@Override
- public ResponseStanzaContainer executeWorker(Stanza stanza, SessionContext sessionContext,
- SessionStateHolder sessionStateHolder) {
+ public Stanza executeWorker(Stanza stanza, SessionContext sessionContext,
+ SessionStateHolder sessionStateHolder) {
AuthorizationRetriesCounter counter = AuthorizationRetriesCounter.getFromSession(sessionContext);
boolean moreTriesLeft = counter.countFailedTry(); // record that client aborted
// TODO do more clean-ups as mechanism requires.
- return new ResponseStanzaContainerImpl(new ServerResponses().getAuthAborted());
+ return new ServerResponses().getAuthAborted();
}
}
\ No newline at end of file
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbstractSASLHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbstractSASLHandler.java
index 5d78a6d..75ec0e2 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbstractSASLHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbstractSASLHandler.java
@@ -23,11 +23,9 @@
import org.apache.vysper.xmpp.modules.core.sasl.AuthorizationRetriesCounter;
import org.apache.vysper.xmpp.modules.core.sasl.SASLFailureType;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StreamErrorCondition;
import org.apache.vysper.xmpp.protocol.exception.AuthenticationFailedException;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -49,13 +47,13 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
throws AuthenticationFailedException {
if (!AuthorizationRetriesCounter.getFromSession(sessionContext).hasTriesLeft()) {
AuthenticationFailedException failedException = new AuthenticationFailedException("too many retries");
- failedException.setErrorStanza(ServerErrorResponses.getStreamError(
- StreamErrorCondition.POLICY_VIOLATION, null, null, null));
+ failedException.setErrorStanza(
+ ServerErrorResponses.getStreamError(StreamErrorCondition.POLICY_VIOLATION, null, null, null));
throw failedException;
}
@@ -63,25 +61,26 @@
boolean saslNamespace = xmlElementVerifier.namespacePresent(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
if (!saslNamespace) {
- return respondSASLFailure();
+ stanzaBroker.writeToSession(buildSASLFailure());
+ return;
}
- // the session must be in status ENCRYPTED. HOWEVER, only if encryption is not required, SessionState.INITIATED
+ // the session must be in status ENCRYPTED. HOWEVER, only if encryption is not
+ // required, SessionState.INITIATED
// is fine, too.
- if (sessionStateHolder.getState() != SessionState.ENCRYPTED &&
- !(sessionStateHolder.getState() != SessionState.INITIATED &&
- !serverRuntimeContext.getServerFeatures().isStartTLSRequired())
- ) {
- return respondSASLFailure();
+ if (sessionStateHolder.getState() != SessionState.ENCRYPTED
+ && !(sessionStateHolder.getState() != SessionState.INITIATED
+ && !serverRuntimeContext.getServerFeatures().isStartTLSRequired())) {
+ stanzaBroker.writeToSession(buildSASLFailure());
+ return;
}
- return executeWorker(stanza, sessionContext, sessionStateHolder);
+ stanzaBroker.writeToSession(executeWorker(stanza, sessionContext, sessionStateHolder));
}
- protected ResponseStanzaContainer respondSASLFailure() {
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getSASLFailure(
- SASLFailureType.MALFORMED_REQUEST));
+ protected Stanza buildSASLFailure() {
+ return ServerErrorResponses.getSASLFailure(SASLFailureType.MALFORMED_REQUEST);
}
- protected abstract ResponseStanzaContainer executeWorker(Stanza stanza, SessionContext sessionContext,
+ protected abstract Stanza executeWorker(Stanza stanza, SessionContext sessionContext,
SessionStateHolder sessionStateHolder);
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java
index c7213d0..60f7e2e 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandler.java
@@ -23,8 +23,6 @@
import org.apache.vysper.xmpp.authentication.SASLMechanism;
import org.apache.vysper.xmpp.modules.core.sasl.AuthorizationRetriesCounter;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
@@ -44,11 +42,11 @@
}
@Override
- protected ResponseStanzaContainer executeWorker(Stanza stanza, SessionContext sessionContext,
+ protected Stanza executeWorker(Stanza stanza, SessionContext sessionContext,
SessionStateHolder sessionStateHolder) {
String requestedMechanism = stanza.getAttributeValue("mechanism");
if (requestedMechanism == null) {
- return respondSASLFailure();
+ return buildSASLFailure();
}
SASLMechanism identifiedMechanism = null;
@@ -71,7 +69,7 @@
AuthorizationRetriesCounter.getFromSession(sessionContext).countFailedTry();
}
- return new ResponseStanzaContainerImpl(responseStanza);
+ return responseStanza;
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandler.java
index 74d2de8..861c161 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandler.java
@@ -21,11 +21,9 @@
import org.apache.vysper.xml.fragment.XMLElementVerifier;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
@@ -54,16 +52,18 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
XMLElementVerifier xmlElementVerifier = stanza.getVerifier();
boolean tlsNamespace = xmlElementVerifier.namespacePresent(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS);
if (!tlsNamespace) {
- return respondTLSFailure();
+ stanzaBroker.writeToSession(ServerErrorResponses.getTLSFailure());
+ return;
}
if (sessionStateHolder.getState() != SessionState.STARTED) {
- return respondTLSFailure();
+ stanzaBroker.writeToSession(ServerErrorResponses.getTLSFailure());
+ return;
}
Stanza responseStanza = new ServerResponses().getTLSProceed();
@@ -73,10 +73,7 @@
sessionContext.switchToTLS(true, false);
- return new ResponseStanzaContainerImpl(responseStanza);
+ stanzaBroker.writeToSession(responseStanza);
}
- private ResponseStanzaContainer respondTLSFailure() {
- return new ResponseStanzaContainerImpl(ServerErrorResponses.getTLSFailure());
- }
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java
index 9d7bbbd..8c467a1 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbResultHandler.java
@@ -23,11 +23,9 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
@@ -42,10 +40,9 @@
* @author The Apache MINA Project (dev@mina.apache.org)
*/
public class DbResultHandler implements StanzaHandler {
-
+
private static final Logger LOG = LoggerFactory.getLogger(DbResultHandler.class);
-
public String getName() {
return "result";
}
@@ -65,55 +62,49 @@
return false;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
String type = stanza.getAttributeValue("type");
-
- if(type == null) {
+
+ if (type == null) {
// acting as the Receiving server
// start of dailback, respond
String streamId = sessionContext.getSessionId();
String dailbackId = stanza.getInnerText().getText();
Entity receiving = EntityImpl.parseUnchecked(stanza.getAttributeValue("from"));
Entity originating = serverRuntimeContext.getServerEntity();
-
+
try {
- XMPPServerConnector connector = serverRuntimeContext.getServerConnectorRegistry().connectForDialback(receiving, sessionContext, sessionStateHolder);
-
+ XMPPServerConnector connector = serverRuntimeContext.getServerConnectorRegistry()
+ .connectForDialback(receiving, sessionContext, sessionStateHolder);
+
/*
- <db:verify
- from='target.tld'
- id='417GAF25'
- to='sender.tld'>
- 38b501ec606752318f72ad53de17ac6d15f86257485b0d8f5d54e1f619e6b869
- </db:verify>
+ * <db:verify from='target.tld' id='417GAF25' to='sender.tld'>
+ * 38b501ec606752318f72ad53de17ac6d15f86257485b0d8f5d54e1f619e6b869 </db:verify>
*/
-
+
StanzaBuilder verifyBuilder = new StanzaBuilder("verify", NamespaceURIs.JABBER_SERVER_DIALBACK, "db");
verifyBuilder.addAttribute("from", originating.getFullQualifiedName());
verifyBuilder.addAttribute("to", receiving.getFullQualifiedName());
verifyBuilder.addAttribute("id", sessionContext.getSessionId());
verifyBuilder.addText(dailbackId);
connector.write(verifyBuilder.build());
- return null;
} catch (Exception e) {
StanzaBuilder builder = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db");
builder.addAttribute("from", originating.getDomain());
builder.addAttribute("to", receiving.getDomain());
builder.addAttribute("type", "invalid");
- return new ResponseStanzaContainerImpl(builder.build());
+ stanzaBroker.writeToSession(builder.build());
}
} else {
// acting as the Originating server
// receiving the result from the Receiving server
- if("valid".equals(type)) {
+ if ("valid".equals(type)) {
sessionStateHolder.setState(SessionState.AUTHENTICATED);
Entity receiving = EntityImpl.parseUnchecked(stanza.getAttributeValue("from"));
LOG.info("XMPP server connector to {} authenticated using dialback", receiving);
- }
-
- return null;
+ }
}
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandler.java
index 36ee278..75865a4 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandler.java
@@ -23,11 +23,9 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionContext.SessionTerminationCause;
@@ -41,7 +39,7 @@
*/
public class DbVerifyHandler implements StanzaHandler {
private DialbackIdGenerator dailbackIdGenerator = new DialbackIdGenerator();
-
+
public String getName() {
return "verify";
}
@@ -61,63 +59,68 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
-
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+
String type = stanza.getAttributeValue("type");
String id = stanza.getAttributeValue("id");
Entity receiving = EntityImpl.parseUnchecked(stanza.getAttributeValue("from"));
Entity originating = serverRuntimeContext.getServerEntity();
- if(type == null) {
+ if (type == null) {
// acting as a Authoritative server
// getting asked for verification from the Receiving server
String dailbackId = stanza.getInnerText().getText();
-
+
StanzaBuilder builder = new StanzaBuilder("verify", NamespaceURIs.JABBER_SERVER_DIALBACK, "db");
builder.addAttribute("from", originating.getDomain());
builder.addAttribute("to", receiving.getDomain());
builder.addAttribute("id", id);
-
- if(dailbackIdGenerator.verify(dailbackId, receiving, originating, id)) {
+
+ if (dailbackIdGenerator.verify(dailbackId, receiving, originating, id)) {
builder.addAttribute("type", "valid");
} else {
builder.addAttribute("type", "invalid");
}
- return new ResponseStanzaContainerImpl(builder.build());
+ stanzaBroker.writeToSession(builder.build());
+ return;
} else {
// acting as a Receiving server
// getting a response from the Authoritative server
- SessionStateHolder dialbackSessionStateHolder = (SessionStateHolder) sessionContext.getAttribute("DIALBACK_SESSION_STATE_HOLDER");
- SessionContext dialbackSessionContext = (SessionContext) sessionContext.getAttribute("DIALBACK_SESSION_CONTEXT");
+ SessionStateHolder dialbackSessionStateHolder = (SessionStateHolder) sessionContext
+ .getAttribute("DIALBACK_SESSION_STATE_HOLDER");
+ SessionContext dialbackSessionContext = (SessionContext) sessionContext
+ .getAttribute("DIALBACK_SESSION_CONTEXT");
-// XMPPServerConnector connector = serverRuntimeContext.getServerConnectorRegistry().getConnectorBySessionId(id);
-
-// if(connector != null) {
-// SessionStateHolder dialbackSessionStateHolder = connector.getSessionStateHolder();
-// SessionContext dialbackSessionContext = connector.getSessionContext();
-
-
- Entity otherServer = sessionContext.getInitiatingEntity();
- String resultType = "invalid";
- // dialbackSessionContext must be non-null or someone is trying to send this stanza in the wrong state
- if("valid".equals(type)) {
- dialbackSessionStateHolder.setState(SessionState.AUTHENTICATED);
- dialbackSessionContext.setInitiatingEntity(otherServer);
- resultType = "valid";
- }
-
- // <db:result xmlns:db="jabber:server:dialback" to="xmpp.protocol7.com" from="jabber.org" type="valid"></db:result>
- StanzaBuilder builder = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db");
- builder.addAttribute("from", originating.getDomain());
- builder.addAttribute("to", otherServer.getDomain());
- builder.addAttribute("type", resultType);
-
- dialbackSessionContext.getResponseWriter().write(builder.build());
-// }
-
+ // XMPPServerConnector connector =
+ // serverRuntimeContext.getServerConnectorRegistry().getConnectorBySessionId(id);
+
+ // if(connector != null) {
+ // SessionStateHolder dialbackSessionStateHolder =
+ // connector.getSessionStateHolder();
+ // SessionContext dialbackSessionContext = connector.getSessionContext();
+
+ Entity otherServer = sessionContext.getInitiatingEntity();
+ String resultType = "invalid";
+ // dialbackSessionContext must be non-null or someone is trying to send this
+ // stanza in the wrong state
+ if ("valid".equals(type)) {
+ dialbackSessionStateHolder.setState(SessionState.AUTHENTICATED);
+ dialbackSessionContext.setInitiatingEntity(otherServer);
+ resultType = "valid";
+ }
+
+ // <db:result xmlns:db="jabber:server:dialback" to="xmpp.protocol7.com"
+ // from="jabber.org" type="valid"></db:result>
+ StanzaBuilder builder = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db");
+ builder.addAttribute("from", originating.getDomain());
+ builder.addAttribute("to", otherServer.getDomain());
+ builder.addAttribute("type", resultType);
+
+ dialbackSessionContext.getResponseWriter().write(builder.build());
+ // }
+
// close this session as we are now done checking dialback
sessionContext.endSession(SessionTerminationCause.CLIENT_BYEBYE);
- return null;
}
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java
index 53dece2..0349715 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ServiceUnavailableStanzaErrorHandler.java
@@ -45,9 +45,8 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
- throws ProtocolException {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
if (!(stanza instanceof XMPPCoreStanza)) {
stanza = XMPPCoreStanza.getWrapper(stanza);
}
@@ -55,9 +54,8 @@
throw new IllegalArgumentException("cannot coerce into a message, iq or presence stanza");
XMPPCoreStanza coreStanza = (XMPPCoreStanza) stanza;
- Stanza errorStanza = ServerErrorResponses.getStanzaError(
- StanzaErrorCondition.SERVICE_UNAVAILABLE, coreStanza, StanzaErrorType.CANCEL,
- "namespace not supported", null, null);
- return new ResponseStanzaContainerImpl(errorStanza);
+ Stanza errorStanza = ServerErrorResponses.getStanzaError(StanzaErrorCondition.SERVICE_UNAVAILABLE, coreStanza,
+ StanzaErrorType.CANCEL, "namespace not supported", null, null);
+ stanzaBroker.writeToSession(errorStanza);
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
index 5a54b39..3398378 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
@@ -45,11 +45,17 @@
@Override
public void write(Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy)
throws DeliveryException {
+ if (stanza == null) {
+ return;
+ }
stanzaRelay.relay(sessionContext, receiver, stanza, deliveryFailureStrategy);
}
@Override
public void writeToSession(Stanza stanza) {
+ if (stanza == null) {
+ return;
+ }
if (sessionContext == null) {
// TODO Move offline storage here?
return;
@@ -71,13 +77,13 @@
if (!stanzaRelay.equals(that.stanzaRelay)) {
return false;
}
- return sessionContext.equals(that.sessionContext);
+ return sessionContext != null ? sessionContext.equals(that.sessionContext) : that.sessionContext == null;
}
@Override
public int hashCode() {
int result = stanzaRelay.hashCode();
- result = 31 * result + sessionContext.hashCode();
+ result = 31 * result + (sessionContext != null ? sessionContext.hashCode() : 0);
return result;
}
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
index 470f316..062d8ae 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
@@ -41,10 +41,9 @@
}
@Override
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder)
- throws ProtocolException {
- return stanzaHandler.execute(stanza, serverRuntimeContext, isOutboundStanza, sessionContext, sessionStateHolder,
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder) throws ProtocolException {
+ stanzaHandler.execute(stanza, serverRuntimeContext, isOutboundStanza, sessionContext, sessionStateHolder,
new SimpleStanzaBroker(stanzaRelay, sessionContext));
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandler.java
index d3c7b71..a2df28a 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandler.java
@@ -36,7 +36,7 @@
/**
* the stanza name handled by this handler
*/
- public String getName();
+ String getName();
/**
* Allows to check the type of the handler by maintaining compatibility with
@@ -55,12 +55,12 @@
* @param stanza
* @return true, if it is processed, false otherwise
*/
- public boolean verify(Stanza stanza);
+ boolean verify(Stanza stanza);
/**
* specifies if a session context is needed for this handler
*/
- public boolean isSessionRequired();
+ boolean isSessionRequired();
/**
* executes a stanza
@@ -70,10 +70,8 @@
* the session belonging to the given sessionContext parameter.
* false, if the session is receiving the stanza targeted to the
* session's client.
- * @return optionally returns a stanzaBroker which is passed to the session's
- * client
*/
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder,
- StanzaBroker stanzaBroker) throws ProtocolException;
+ void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
+ boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder,
+ StanzaBroker stanzaBroker) throws ProtocolException;
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java
index 3526d70..4a19e64 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java
@@ -37,6 +37,6 @@
* @author Réda Housni Alaoui
*/
public interface StanzaHandlerExecutor {
- ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
SessionContext sessionContext, SessionStateHolder sessionStateHolder) throws ProtocolException;
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
index af3c9f9..edcd9a6 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
@@ -22,7 +22,6 @@
import static java.util.Objects.requireNonNull;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.ResponseWriter;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
@@ -41,8 +40,7 @@
private final StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory;
- protected AbstractStateAwareProtocolWorker(
- StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory) {
+ protected AbstractStateAwareProtocolWorker(StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory) {
this.stanzaHandlerExecutorFactory = requireNonNull(stanzaHandlerExecutorFactory);
}
@@ -54,10 +52,7 @@
if (!proceed)
return; // TODO close stream?
- ResponseStanzaContainer responseStanzaContainer = executeHandler(sessionContext, sessionStateHolder, stanza,
- stanzaHandler);
-
- writeResponse(sessionContext, responseStanzaContainer);
+ executeHandler(sessionContext, sessionStateHolder, stanza, stanzaHandler);
}
protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza,
@@ -65,29 +60,14 @@
return 0 == getHandledState().compareTo(sessionContext.getState());
}
- protected void writeResponse(SessionContext sessionContext, ResponseStanzaContainer responseStanzaContainer) {
- if (responseStanzaContainer == null) {
- return;
- }
- if (sessionContext == null) {
- throw new IllegalStateException(
- "no session context to write stanza to: " + responseStanzaContainer.getResponseStanzas());
- }
- ResponseWriter.writeResponse(sessionContext, responseStanzaContainer);
- }
-
- protected ResponseStanzaContainer executeHandler(SessionContext sessionContext,
- SessionStateHolder sessionStateHolder, Stanza stanza, StanzaHandler stanzaHandler) {
- ResponseStanzaContainer responseStanzaContainer;
+ private void executeHandler(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza,
+ StanzaHandler stanzaHandler) {
try {
- responseStanzaContainer = stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza,
- sessionContext.getServerRuntimeContext(), isProcessingOutboundStanzas(), sessionContext,
- sessionStateHolder);
+ stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, sessionContext.getServerRuntimeContext(),
+ isProcessingOutboundStanzas(), sessionContext, sessionStateHolder);
} catch (ProtocolException e) {
ResponseWriter.handleProtocolError(e, sessionContext, stanza);
- return null;
}
- return responseStanzaContainer;
}
protected boolean isProcessingOutboundStanzas() {
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InboundStanzaProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InboundStanzaProtocolWorker.java
index 0c60769..0699de4 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InboundStanzaProtocolWorker.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InboundStanzaProtocolWorker.java
@@ -48,11 +48,4 @@
return false; // this worker is delivering inbound only
}
- @Override
- protected void writeResponse(SessionContext sessionContext, ResponseStanzaContainer responseStanzaContainer) {
- if (responseStanzaContainer == null) {
- return;
- }
- ResponseWriter.writeResponse(sessionContext, responseStanzaContainer);
- }
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
index 36737ca..7ed26f9 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
@@ -23,8 +23,6 @@
import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseWriter;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory;
@@ -69,20 +67,14 @@
throw new RuntimeException("no handler for stanza");
}
- ResponseStanzaContainer responseStanzaContainer = null;
try {
- responseStanzaContainer = stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza,
- serverRuntimeContext, false, sessionContext, sessionStateHolder);
+ stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, serverRuntimeContext, false,
+ sessionContext, sessionStateHolder);
} catch (ProtocolException e) {
// TODO handle
e.printStackTrace();
}
- if (responseStanzaContainer == null) {
- return;
- }
- ResponseWriter.writeResponse(sessionContext, responseStanzaContainer);
-
}
public void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder) {
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
index 99d400c..bf9849e 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
@@ -47,7 +47,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DialbackIdGenerator;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory;
@@ -110,8 +109,8 @@
protected final CountDownLatch authenticatedLatch = new CountDownLatch(1);
public DefaultXMPPServerConnector(Entity remoteServer, ServerRuntimeContext serverRuntimeContext,
- StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory, StanzaProcessor stanzaProcessor,
- SessionContext dialbackSessionContext, SessionStateHolder dialbackSessionStateHolder) {
+ StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory, StanzaProcessor stanzaProcessor,
+ SessionContext dialbackSessionContext, SessionStateHolder dialbackSessionStateHolder) {
this.serverRuntimeContext = serverRuntimeContext;
this.stanzaProcessor = stanzaProcessor;
this.stanzaHandlerExecutorFactory = stanzaHandlerExecutorFactory;
@@ -223,16 +222,12 @@
StanzaHandler s2sHandler = lookupS2SHandler(stanza);
if (s2sHandler != null) {
- ResponseStanzaContainer container;
try {
- container = stanzaHandlerExecutorFactory.build(s2sHandler).execute(stanza, serverRuntimeContext,
- false, sessionContext, sessionStateHolder);
+ stanzaHandlerExecutorFactory.build(s2sHandler).execute(stanza, serverRuntimeContext, false,
+ sessionContext, sessionStateHolder);
} catch (ProtocolException e) {
return;
}
- if (container != null && container.hasResponse()) {
- container.getResponseStanzas().forEach(sessionContext::write);
- }
if (sessionStateHolder.getState() == SessionState.AUTHENTICATED) {
LOG.info("XMPP server connector to {} authenticated", remoteServer);
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandler.java
index 78cd88e..35dcd2b 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandler.java
@@ -23,11 +23,9 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DialbackIdGenerator;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
@@ -41,16 +39,18 @@
* @author The Apache MINA Project (dev@mina.apache.org)
*/
public class FeaturesHandler implements StanzaHandler {
-
+
private static final Logger LOG = LoggerFactory.getLogger(FeaturesHandler.class);
-
+
public String getName() {
return "features";
}
public boolean verify(Stanza stanza) {
- if (stanza == null) return false;
- if (!getName().equals(stanza.getName())) return false;
+ if (stanza == null)
+ return false;
+ if (!getName().equals(stanza.getName()))
+ return false;
String namespaceURI = stanza.getNamespaceURI();
return namespaceURI.equals(NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS);
}
@@ -59,38 +59,36 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
- if(sessionStateHolder.getState() != SessionState.AUTHENTICATED) {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+ if (sessionStateHolder.getState() != SessionState.AUTHENTICATED) {
Entity otherServer = sessionContext.getInitiatingEntity();
-
- if(startTlsSupported(stanza) && serverRuntimeContext.getSslContext() != null) {
+
+ if (startTlsSupported(stanza) && serverRuntimeContext.getSslContext() != null) {
// remote server support TLS and we got keys set up
LOG.info("XMPP server connector to {} is starting TLS", otherServer);
- Stanza startTlsStanza = new StanzaBuilder("starttls", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).build();
-
- return new ResponseStanzaContainerImpl(startTlsStanza);
- } else if(dialbackSupported(stanza)) {
+ Stanza startTlsStanza = new StanzaBuilder("starttls", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS)
+ .build();
+
+ stanzaBroker.writeToSession(startTlsStanza);
+ } else if (dialbackSupported(stanza)) {
Entity originating = serverRuntimeContext.getServerEntity();
- String dailbackId = new DialbackIdGenerator().generate(otherServer, originating, sessionContext.getSessionId());
-
+ String dailbackId = new DialbackIdGenerator().generate(otherServer, originating,
+ sessionContext.getSessionId());
+
Stanza dbResult = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db")
- .addAttribute("from", originating.getDomain())
- .addAttribute("to", otherServer.getDomain())
- .addText(dailbackId)
- .build();
-
- return new ResponseStanzaContainerImpl(dbResult);
+ .addAttribute("from", originating.getDomain()).addAttribute("to", otherServer.getDomain())
+ .addText(dailbackId).build();
+
+ stanzaBroker.writeToSession(dbResult);
} else {
// TODO how to handle
throw new RuntimeException("Unsupported features");
}
}
-
- return null;
}
-
+
private boolean startTlsSupported(Stanza stanza) {
return !stanza.getInnerElementsNamed("starttls", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).isEmpty();
}
@@ -99,5 +97,4 @@
return !stanza.getInnerElementsNamed("dialback", NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).isEmpty();
}
-
}
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandler.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandler.java
index 6bb841d..4997d0c 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandler.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandler.java
@@ -21,7 +21,6 @@
package org.apache.vysper.xmpp.server.s2s;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
@@ -55,13 +54,11 @@
return true;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
+ boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker) {
sessionStateHolder.setState(SessionState.ENCRYPTION_STARTED);
LOG.debug("XMPP server connector switching to TLS");
sessionContext.switchToTLS(false, true);
-
- return null;
}
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
index 90783a5..135c873 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
@@ -20,11 +20,9 @@
package org.apache.vysper.xmpp.modules.core.base.handler;
-import junit.framework.TestCase;
-
import org.apache.vysper.xml.fragment.XMLElementVerifier;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.IQStanza;
@@ -33,6 +31,8 @@
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.stanza.XMPPCoreStanzaVerifier;
+import junit.framework.TestCase;
+
/**
*/
public class IQHandlerTestCase extends TestCase {
@@ -57,9 +57,10 @@
sessionContext.setServerToServer();
TestIQHandler iqHandler = new TestIQHandler();
- ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.build(), sessionContext
- .getServerRuntimeContext(), true, sessionContext, null, null);
- Stanza responseStanza = responseStanzaContainer.getUniqueResponseStanza();
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ iqHandler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
+ Stanza responseStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
XMLElementVerifier verifier = responseStanza.getVerifier();
assertTrue("error", verifier.nameEquals("error"));
}
@@ -76,18 +77,18 @@
Stanza stanza = stanzaBuilder.build(); // this stanza has no ID
IQHandler iqHandler = new IQHandler();
- ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, null, null);
- Stanza responseStanza = responseStanzaContainer.getUniqueResponseStanza();
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ iqHandler.execute(stanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null, stanzaBroker);
+ Stanza responseStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
XMLElementVerifier verifier = responseStanza.getVerifier();
assertTrue("error", verifier.nameEquals("error")); // response is _not_ IQ stanza
}
private void assertIQError(Stanza stanza) {
TestIQHandler iqHandler = new TestIQHandler();
- ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, null, null);
- Stanza responseStanza = responseStanzaContainer.getUniqueResponseStanza();
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ iqHandler.execute(stanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null, stanzaBroker);
+ Stanza responseStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
XMLElementVerifier verifier = responseStanza.getVerifier();
assertTrue("iq", verifier.nameEquals("iq"));
assertTrue("error type", verifier.attributeEquals("type", IQStanzaType.ERROR.value()));
@@ -149,8 +150,9 @@
stanzaBuilder.startInnerElement("getRequest", NamespaceURIs.JABBER_CLIENT).endInnerElement();
TestIQHandler iqHandler = new TestIQHandler();
- ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.build(), sessionContext
- .getServerRuntimeContext(), true, sessionContext, null, null);
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ iqHandler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
IQStanza incomingStanza = iqHandler.getIncomingStanza();
XMPPCoreStanzaVerifier verifier = incomingStanza.getCoreVerifier();
@@ -159,7 +161,7 @@
assertTrue("iq-type-get", verifier.attributeEquals("type", "get"));
// response is "result"
- Stanza responseStanza = responseStanzaContainer.getUniqueResponseStanza();
+ Stanza responseStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
XMLElementVerifier responseVerifier = responseStanza.getVerifier();
assertTrue("iq", responseVerifier.nameEquals("iq"));
assertTrue("iq-id", responseVerifier.attributeEquals("id", "1"));
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
index 944d108..cdd6bf9 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
@@ -29,7 +29,6 @@
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.modules.core.TestUser;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.server.TestSessionContext;
@@ -92,8 +91,7 @@
assertNull(senderUser.getNextStanza()); // nothing there yet
Stanza stanza = stanzaBuilder.build();
- ResponseStanzaContainer responseStanzaContainer = messageHandler.execute(stanza,
- senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null,
+ messageHandler.execute(stanza, senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null,
new SimpleStanzaBroker(senderSessionContext.getStanzaRelay(), senderSessionContext));
Stanza receivedStanza = receiverUser.getNextStanza();
@@ -120,15 +118,13 @@
stanzaRelay.add(receiver, receiverQueue);
Stanza successfulMessageStanza = StanzaBuilder.createMessageStanza(sender, receiver, "en", "info").build();
- ResponseStanzaContainer responseStanzaContainer = messageHandler.execute(successfulMessageStanza,
- senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null,
- new SimpleStanzaBroker(stanzaRelay, senderSessionContext));
+ messageHandler.execute(successfulMessageStanza, senderSessionContext.getServerRuntimeContext(), true,
+ senderSessionContext, null, new SimpleStanzaBroker(stanzaRelay, senderSessionContext));
assertEquals(successfulMessageStanza, receiverQueue.getNext());
Stanza failureMessageStanza = StanzaBuilder.createMessageStanza(sender, noReceiver, "en", "info").build();
- responseStanzaContainer = messageHandler.execute(failureMessageStanza,
- senderSessionContext.getServerRuntimeContext(), true, senderSessionContext, null,
- new SimpleStanzaBroker(stanzaRelay, senderSessionContext));
+ messageHandler.execute(failureMessageStanza, senderSessionContext.getServerRuntimeContext(), true,
+ senderSessionContext, null, new SimpleStanzaBroker(stanzaRelay, senderSessionContext));
assertNull(receiverQueue.getNext());
Stanza rejectionStanza = senderQueue.getNext();
assertNotNull(rejectionStanza);
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
index 2398e13..8db7188 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
@@ -21,7 +21,7 @@
import org.apache.vysper.xmpp.modules.core.im.handler.PresenceHandlerBaseTestCase;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -34,15 +34,23 @@
protected RelayingIQHandler relayingIQHandler = new RelayingIQHandler();
+ private RecordingStanzaBroker stanzaBroker;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ stanzaBroker = new RecordingStanzaBroker(new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ }
+
public void testIQClientToClient_Outbound_NotSubscribed() {
Stanza iqStanza = StanzaBuilder
.createIQStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), IQStanzaType.GET, "test")
.startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
- ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza,
- sessionContext.getServerRuntimeContext(), true, sessionContext, null, new SimpleStanzaBroker(
- sessionContext.getStanzaRelay(), sessionContext)/* don't we have as sessionStateHolder? */);
- XMPPCoreStanza response = XMPPCoreStanza.getWrapper(stanzaContainer.getUniqueResponseStanza());
+ relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker/* don't we have as sessionStateHolder? */);
+ XMPPCoreStanza response = XMPPCoreStanza.getWrapper(stanzaBroker.getUniqueStanzaWrittenToSession());
assertNotNull(response);
assertTrue(response.isError());
}
@@ -52,10 +60,9 @@
.createIQStanza(initiatingUser.getEntityFQ(), subscribed_FROM.getEntityFQ(), IQStanzaType.GET, "test")
.startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
- ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza,
- sessionContext.getServerRuntimeContext(), true, sessionContext, null, new SimpleStanzaBroker(
- sessionContext.getStanzaRelay(), sessionContext) /* don't we have as sessionStateHolder? */);
- assertFalse(stanzaContainer.hasResponse());
+ relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker /* don't we have as sessionStateHolder? */);
+ assertFalse(stanzaBroker.hasStanzaWrittenToSession());
Stanza deliveredStanza = subscribed_FROM.getNextStanza();
assertTrue(deliveredStanza.getVerifier().onlySubelementEquals("mandatory", NamespaceURIs.JABBER_CLIENT));
assertEquals(subscribed_FROM.getEntityFQ(), deliveredStanza.getTo());
@@ -66,10 +73,9 @@
.createIQStanza(subscribed_FROM.getEntityFQ(), initiatingUser.getEntityFQ(), IQStanzaType.GET, "test")
.startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
- ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza,
- sessionContext.getServerRuntimeContext(), false, sessionContext, null, new SimpleStanzaBroker(
- sessionContext.getStanzaRelay(), sessionContext)/* don't we have as sessionStateHolder? */);
- XMPPCoreStanza response = XMPPCoreStanza.getWrapper(stanzaContainer.getUniqueResponseStanza());
+ relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), false, sessionContext, null,
+ stanzaBroker/* don't we have as sessionStateHolder? */);
+ XMPPCoreStanza response = XMPPCoreStanza.getWrapper(stanzaBroker.getUniqueStanzaWrittenToSession());
assertNotNull(response);
assertTrue(response.isError());
}
@@ -79,10 +85,9 @@
.createIQStanza(subscribed_TO.getEntityFQ(), initiatingUser.getEntityFQ(), IQStanzaType.GET, "test")
.startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
- ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza,
- sessionContext.getServerRuntimeContext(), false, sessionContext, null, new SimpleStanzaBroker(
- sessionContext.getStanzaRelay(), sessionContext)/* don't we have as sessionStateHolder? */);
- assertFalse(stanzaContainer.hasResponse());
+ relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), false, sessionContext, null,
+ stanzaBroker/* don't we have as sessionStateHolder? */);
+ assertFalse(stanzaBroker.hasStanzaWrittenToSession());
Stanza deliveredStanza = sessionContext.getNextRecordedResponse();
assertTrue(deliveredStanza.getVerifier().onlySubelementEquals("mandatory", NamespaceURIs.JABBER_CLIENT));
assertEquals(initiatingUser.getEntityFQ(), deliveredStanza.getTo());
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
index 125bb9f..7224e7b 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
@@ -24,11 +24,9 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import junit.framework.TestCase;
-
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -39,6 +37,8 @@
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
+import junit.framework.TestCase;
+
/**
*
* @author The Apache MINA Project (dev@mina.apache.org)
@@ -49,10 +49,13 @@
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ private RecordingStanzaBroker stanzaBroker;
+
@Override
protected void setUp() throws Exception {
super.setUp();
sessionContext = new TestSessionContext(sessionStateHolder);
+ stanzaBroker = new RecordingStanzaBroker();
}
protected static final int SLEEP_INTERVAL = 50;
@@ -110,8 +113,8 @@
return response;
}
- public XMPPCoreStanza get(long l, TimeUnit timeUnit) throws InterruptedException, ExecutionException,
- TimeoutException {
+ public XMPPCoreStanza get(long l, TimeUnit timeUnit)
+ throws InterruptedException, ExecutionException, TimeoutException {
return response;
}
@@ -125,9 +128,10 @@
}
}
try {
- Stanza finalStanza = StanzaBuilder.createIQStanza(requestStanza.getTo(), requestStanza.getFrom(),
- IQStanzaType.RESULT, requestStanza.getID()).startInnerElement("success",
- NamespaceURIs.JABBER_CLIENT).endInnerElement().build();
+ Stanza finalStanza = StanzaBuilder
+ .createIQStanza(requestStanza.getTo(), requestStanza.getFrom(), IQStanzaType.RESULT,
+ requestStanza.getID())
+ .startInnerElement("success", NamespaceURIs.JABBER_CLIENT).endInnerElement().build();
response = XMPPCoreStanza.getWrapper(finalStanza);
} catch (Throwable e) {
e.printStackTrace();
@@ -152,9 +156,9 @@
stanzaBuilder.startInnerElement("query", NamespaceURIs.JABBER_CLIENT).endInnerElement();
Stanza iqStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = asyncIQGetHandler.execute(iqStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
- assertTrue(container == null || container.hasNoResponse());
+ asyncIQGetHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
+ assertFalse(stanzaBroker.hasStanzaWrittenToSession());
TriggeredRunnableFuture runnableFuture = asyncIQGetHandler.getWaitingRunnableFuture();
assertNotNull("future has been created", runnableFuture);
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/AuthCompatibilityIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/AuthCompatibilityIQHandlerTestCase.java
index 24480a8..b2389b3 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/AuthCompatibilityIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/compatibility/jabber_iq_auth/handler/AuthCompatibilityIQHandlerTestCase.java
@@ -23,9 +23,8 @@
import org.apache.vysper.StanzaAssert;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaBroker;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.IQStanza;
@@ -33,6 +32,7 @@
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.state.resourcebinding.BindException;
+import org.junit.Before;
import org.junit.Test;
import junit.framework.Assert;
@@ -57,7 +57,7 @@
private AuthCompatibilityIQHandler handler = new AuthCompatibilityIQHandler();
- private StanzaBroker stanzaBroker = mock(StanzaBroker.class);
+ private RecordingStanzaBroker stanzaBroker;
private Stanza buildStanza(String type) {
return buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "query", NamespaceURIs.JABBER_IQ_AUTH_COMPATIBILITY,
@@ -74,6 +74,11 @@
.startInnerElement(innerName, innerNamespaceUri).build();
}
+ @Before
+ public void before() {
+ stanzaBroker = new RecordingStanzaBroker();
+ }
+
@Test
public void nameMustBeIq() {
Assert.assertEquals("iq", handler.getName());
@@ -137,20 +142,21 @@
@Test
public void handleResult() throws BindException {
- Assert.assertFalse(handler.execute(stanzaWithResult, serverRuntimeContext, false, sessionContext,
- sessionStateHolder, stanzaBroker).hasResponse());
+ handler.execute(stanzaWithResult, serverRuntimeContext, false, sessionContext, sessionStateHolder,
+ stanzaBroker);
+
+ Assert.assertFalse(stanzaBroker.hasStanzaWrittenToSession());
}
@Test
public void handleError() throws BindException {
- Assert.assertFalse(handler
- .execute(stanzaWithError, serverRuntimeContext, false, sessionContext, sessionStateHolder, stanzaBroker)
- .hasResponse());
+ handler.execute(stanzaWithError, serverRuntimeContext, false, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Assert.assertFalse(stanzaBroker.hasStanzaWrittenToSession());
}
private void assertResponse(Stanza stanza) {
- ResponseStanzaContainer response = handler.execute(stanza, serverRuntimeContext, false, sessionContext,
- sessionStateHolder, stanzaBroker);
+ handler.execute(stanza, serverRuntimeContext, false, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expectedResponse = StanzaBuilder.createIQStanza(null, null, IQStanzaType.ERROR, "1")
.startInnerElement("query", NamespaceURIs.JABBER_IQ_AUTH_COMPATIBILITY).endInnerElement()
@@ -159,7 +165,7 @@
.endInnerElement().startInnerElement("text", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
.addAttribute(NamespaceURIs.XML, "lang", "en").addText("jabber:iq:auth not supported").build();
- StanzaAssert.assertEquals(expectedResponse, response.getUniqueResponseStanza());
+ StanzaAssert.assertEquals(expectedResponse, stanzaBroker.getUniqueStanzaWrittenToSession());
}
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandlerTestCase.java
index 458d9bb..786a502 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AbortHandlerTestCase.java
@@ -22,18 +22,15 @@
import java.util.ArrayList;
import java.util.List;
-import junit.framework.TestCase;
-
import org.apache.commons.codec.binary.Base64;
import org.apache.vysper.storage.OpenStorageProviderRegistry;
-import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.authentication.Plain;
import org.apache.vysper.xmpp.authentication.SASLMechanism;
import org.apache.vysper.xmpp.authentication.SimpleUserAuthentication;
import org.apache.vysper.xmpp.modules.core.sasl.AuthorizationRetriesCounter;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.exception.AuthenticationFailedException;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
@@ -42,6 +39,8 @@
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import junit.framework.TestCase;
+
/**
*/
public class AbortHandlerTestCase extends TestCase {
@@ -55,7 +54,7 @@
sessionContext = new TestSessionContext(sessionStateHolder);
sessionContext.setSessionState(SessionState.ENCRYPTED);
- List<SASLMechanism> methods = new ArrayList<SASLMechanism>();
+ List<SASLMechanism> methods = new ArrayList<>();
methods.add(new Plain());
sessionContext.getServerRuntimeContext().getServerFeatures().setAuthenticationMethods(methods);
@@ -67,13 +66,11 @@
.setStorageProviderRegistry(providerRegistry);
}
- public void testAbort() throws XMLSemanticError, AuthenticationFailedException {
+ public void testAbort() throws AuthenticationFailedException {
executeAbortAuthorization_3Times();
- StanzaBuilder stanzaBuilder = createAbort();
-
- stanzaBuilder = new StanzaBuilder("auth", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
+ StanzaBuilder stanzaBuilder = new StanzaBuilder("auth", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
stanzaBuilder.addAttribute("mechanism", "PLAIN");
stanzaBuilder.addText(new String(Base64.encodeBase64("dummy\0user007\0pass007".getBytes())));
Stanza authPlainStanza = stanzaBuilder.build();
@@ -81,8 +78,8 @@
// correct credential no longer work - no retries left
AuthHandler authHandler = new AuthHandler();
try {
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, new RecordingStanzaBroker());
fail("should raise error - no tries left");
} catch (AuthenticationFailedException e) {
// test succeeded
@@ -113,15 +110,14 @@
Stanza abortStanza = stanzaBuilder.build();
AbortHandler abortHandler = new AbortHandler();
- ResponseStanzaContainer responseContainer = abortHandler.execute(abortStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
- Stanza responseStanza = responseContainer.getUniqueResponseStanza();
- return responseStanza;
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ abortHandler.execute(abortStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
private StanzaBuilder createAbort() {
- StanzaBuilder stanzaBuilder = new StanzaBuilder("abort", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
- return stanzaBuilder;
+ return new StanzaBuilder("abort", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
}
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java
index a87d7f9..48bb44a 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerPlainMechanismTestCase.java
@@ -22,8 +22,6 @@
import java.util.ArrayList;
import java.util.List;
-import junit.framework.TestCase;
-
import org.apache.commons.codec.binary.Base64;
import org.apache.vysper.storage.OpenStorageProviderRegistry;
import org.apache.vysper.xml.fragment.XMLSemanticError;
@@ -33,7 +31,7 @@
import org.apache.vysper.xmpp.authentication.SimpleUserAuthentication;
import org.apache.vysper.xmpp.modules.core.sasl.AuthorizationRetriesCounter;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.exception.AuthenticationFailedException;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
@@ -42,6 +40,8 @@
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import junit.framework.TestCase;
+
/**
*/
public class AuthHandlerPlainMechanismTestCase extends TestCase {
@@ -52,10 +52,11 @@
@Override
protected void setUp() throws Exception {
super.setUp();
+
sessionContext = new TestSessionContext(sessionStateHolder);
sessionContext.setSessionState(SessionState.ENCRYPTED);
- List<SASLMechanism> methods = new ArrayList<SASLMechanism>();
+ List<SASLMechanism> methods = new ArrayList<>();
methods.add(new Plain());
sessionContext.getServerRuntimeContext().getServerFeatures().setAuthenticationMethods(methods);
@@ -72,10 +73,11 @@
Stanza authPlainStanza = stanzaBuilder.build();
AuthHandler authHandler = new AuthHandler();
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
- assertTrue(responseContainer.getUniqueResponseStanza().getVerifier().nameEquals("failure"));
+ assertTrue(stanzaBroker.getUniqueStanzaWrittenToSession().getVerifier().nameEquals("failure"));
assertTrue(sessionStateHolder.getState() == SessionState.ENCRYPTED);
}
@@ -85,10 +87,11 @@
Stanza authPlainStanza = stanzaBuilder.build();
AuthHandler authHandler = new AuthHandler();
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
- assertTrue(responseContainer.getUniqueResponseStanza().getVerifier().nameEquals("failure"));
+ assertTrue(stanzaBroker.getUniqueStanzaWrittenToSession().getVerifier().nameEquals("failure"));
assertTrue(sessionStateHolder.getState() == SessionState.ENCRYPTED);
}
@@ -101,9 +104,10 @@
assertEquals(3, AuthorizationRetriesCounter.getFromSession(sessionContext).getTriesLeft());
AuthHandler authHandler = new AuthHandler();
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
- Stanza responseStanza = responseContainer.getUniqueResponseStanza();
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
+ Stanza responseStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
assertTrue(responseStanza.getVerifier().nameEquals("success"));
assertTrue(sessionStateHolder.getState() == SessionState.AUTHENTICATED);
@@ -121,8 +125,9 @@
// correct credential no longer work - no retries left
AuthHandler authHandler = new AuthHandler();
try {
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
fail("should raise error - no tries left");
} catch (AuthenticationFailedException e) {
// test succeeded
@@ -154,10 +159,10 @@
Stanza authPlainStanza = stanzaBuilder.build();
AuthHandler authHandler = new AuthHandler();
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
- Stanza responseStanza = responseContainer.getUniqueResponseStanza();
- return responseStanza;
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
private StanzaBuilder createAuthPlain() {
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerUnavailableMechanismTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerUnavailableMechanismTestCase.java
index c353af3..b9ffaa5 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerUnavailableMechanismTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/sasl/handler/AuthHandlerUnavailableMechanismTestCase.java
@@ -23,12 +23,10 @@
import java.util.ArrayList;
import java.util.List;
-import junit.framework.TestCase;
-
import org.apache.vysper.xmpp.authentication.Plain;
import org.apache.vysper.xmpp.authentication.SASLMechanism;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.exception.AuthenticationFailedException;
import org.apache.vysper.xmpp.server.SessionState;
@@ -36,6 +34,8 @@
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import junit.framework.TestCase;
+
/**
*/
public class AuthHandlerUnavailableMechanismTestCase extends TestCase {
@@ -43,6 +43,8 @@
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ private RecordingStanzaBroker stanzaBroker;
+
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -53,6 +55,8 @@
methods.add(new Plain());
sessionContext.getServerRuntimeContext().getServerFeatures().setAuthenticationMethods(methods);
+
+ stanzaBroker = new RecordingStanzaBroker();
}
public void testAuthPlainWrongCase() throws AuthenticationFailedException {
@@ -62,8 +66,8 @@
AuthHandler authHandler = new AuthHandler();
try {
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
fail("should raise exception");
} catch (RuntimeException e) {
@@ -78,8 +82,8 @@
AuthHandler authHandler = new AuthHandler();
try {
- ResponseStanzaContainer responseContainer = authHandler.execute(authPlainStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
+ authHandler.execute(authPlainStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
fail("should raise exception");
} catch (RuntimeException e) {
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandlerTestCase.java
index 34877ac..902efbd 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandlerTestCase.java
@@ -19,13 +19,12 @@
*/
package org.apache.vysper.xmpp.modules.core.session.handler;
-import junit.framework.Assert;
-
import org.apache.vysper.StanzaAssert;
import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -38,44 +37,50 @@
import org.junit.Test;
import org.mockito.Mockito;
+import junit.framework.Assert;
+
/**
*/
public class SessionIQHandlerTestCase {
private static final Entity FROM = EntityImpl.parseUnchecked("from@vysper.org");
+
private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
private ServerRuntimeContext serverRuntimeContext = Mockito.mock(ServerRuntimeContext.class);
+
private SessionContext sessionContext = Mockito.mock(SessionContext.class);
+
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
-
+
private IQStanza verifyStanza = (IQStanza) IQStanza.getWrapper(buildStanza());
-
+
private SessionIQHandler handler = new SessionIQHandler();
-
+
+ private RecordingStanzaBroker stanzaBroker;
+
@Before
public void before() {
Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(FROM);
Mockito.when(sessionContext.getServerJID()).thenReturn(TO);
+
+ stanzaBroker = new RecordingStanzaBroker();
}
-
-
+
private Stanza buildStanza() {
- return buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "session", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION);
+ return buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "session",
+ NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION);
}
private Stanza buildStanza(String name, String namespaceUri) {
return buildStanza(name, namespaceUri, "session", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION);
}
-
+
private Stanza buildStanza(String name, String namespaceUri, String innerName, String innerNamespaceUri) {
- return new StanzaBuilder(name, namespaceUri)
- .addAttribute("type", "get")
- .addAttribute("id", "1")
- .startInnerElement(innerName, innerNamespaceUri)
- .build();
+ return new StanzaBuilder(name, namespaceUri).addAttribute("type", "get").addAttribute("id", "1")
+ .startInnerElement(innerName, innerNamespaceUri).build();
}
-
+
@Test
public void nameMustBeIq() {
Assert.assertEquals("iq", handler.getName());
@@ -110,10 +115,11 @@
public void verifyInvalidInnerNamespace() {
Assert.assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "session", "dummy")));
}
-
+
@Test
public void verifyInvalidInnerName() {
- Assert.assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "dummy", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION)));
+ Assert.assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "dummy",
+ NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION)));
}
@Test
@@ -121,7 +127,7 @@
Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT).build();
Assert.assertFalse(handler.verify(stanza));
}
-
+
@Test
public void verifyValidStanza() {
Assert.assertTrue(handler.verify(verifyStanza));
@@ -133,15 +139,16 @@
}
@Test
- public void handleSet() throws BindException, XMLSemanticError {
+ public void handleSet() throws XMLSemanticError {
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
- .startInnerElement("session", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ .startInnerElement("session", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Stanza expected = StanzaBuilder.createIQStanza(TO, null, IQStanzaType.RESULT, "id1").build();
-
+
StanzaAssert.assertEquals(expected, response);
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java
index cc246b6..80558c5 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java
@@ -20,17 +20,17 @@
package org.apache.vysper.xmpp.modules.core.starttls.handler;
-import junit.framework.TestCase;
-
import org.apache.vysper.xml.fragment.XMLElementVerifier;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import junit.framework.TestCase;
+
/**
*/
public class StartTLSHandlerTestCase extends TestCase {
@@ -67,17 +67,17 @@
responseStanza = executeStartTLSHandler(starttlsStanza, sessionContext);
verifier = responseStanza.getVerifier();
assertTrue("session state ready", verifier.nameEquals("proceed"));
- assertEquals("session stat is encryption started", SessionState.ENCRYPTION_STARTED, sessionStateHolder
- .getState());
+ assertEquals("session stat is encryption started", SessionState.ENCRYPTION_STARTED,
+ sessionStateHolder.getState());
assertTrue("tls init", sessionContext.isSwitchToTLSCalled());
}
private Stanza executeStartTLSHandler(Stanza starttlsStanza, TestSessionContext sessionContext) {
StartTLSHandler startTLSHandler = new StartTLSHandler();
- ResponseStanzaContainer responseStanzaContainer = startTLSHandler.execute(starttlsStanza, sessionContext
- .getServerRuntimeContext(), true, sessionContext, sessionStateHolder, null);
- Stanza responseStanza = responseStanzaContainer.getUniqueResponseStanza();
- return responseStanza;
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ startTLSHandler.execute(starttlsStanza, sessionContext.getServerRuntimeContext(), true, sessionContext,
+ sessionStateHolder, stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
public void testNamespace() {
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandlerTestCase.java
index 82e5f08..9f426cb 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandlerTestCase.java
@@ -19,8 +19,6 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0049_privatedata;
-import junit.framework.Assert;
-
import org.apache.vysper.StanzaAssert;
import org.apache.vysper.xml.fragment.Renderer;
import org.apache.vysper.xml.fragment.XMLElement;
@@ -29,6 +27,7 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -41,35 +40,45 @@
import org.junit.Test;
import org.mockito.Mockito;
+import junit.framework.Assert;
+
/**
*/
public class PrivateDataIQHandlerTestCase {
private static final String NS = "http://example.com";
+
private static final Entity FROM = EntityImpl.parseUnchecked("from@vysper.org");
+
private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
private static final String KEY = "foo-http-//example.com";
-
+
private ServerRuntimeContext serverRuntimeContext = Mockito.mock(ServerRuntimeContext.class);
+
private SessionContext sessionContext = Mockito.mock(SessionContext.class);
+
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
+
private PrivateDataPersistenceManager persistenceManager = Mockito.mock(PrivateDataPersistenceManager.class);
-
+
private IQStanza verifyStanza = (IQStanza) IQStanza.getWrapper(buildStanza());
-
+
private PrivateDataIQHandler handler = new PrivateDataIQHandler();
-
+
+ private RecordingStanzaBroker stanzaBroker;
+
@Before
public void before() {
Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(FROM);
-
+
Mockito.when(persistenceManager.getPrivateData(FROM, KEY)).thenReturn("<bar xmlns=\"http://example.com\" />");
-
+
handler.setPersistenceManager(persistenceManager);
+
+ stanzaBroker = new RecordingStanzaBroker();
}
-
-
+
private Stanza buildStanza() {
return buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "query", NamespaceURIs.PRIVATE_DATA);
}
@@ -77,15 +86,12 @@
private Stanza buildStanza(String name, String namespaceUri) {
return buildStanza(name, namespaceUri, "query", NamespaceURIs.PRIVATE_DATA);
}
-
+
private Stanza buildStanza(String name, String namespaceUri, String innerName, String innerNamespaceUri) {
- return new StanzaBuilder(name, namespaceUri)
- .addAttribute("type", "get")
- .addAttribute("id", "1")
- .startInnerElement(innerName, innerNamespaceUri)
- .build();
+ return new StanzaBuilder(name, namespaceUri).addAttribute("type", "get").addAttribute("id", "1")
+ .startInnerElement(innerName, innerNamespaceUri).build();
}
-
+
@Test
public void nameMustBeIq() {
Assert.assertEquals("iq", handler.getName());
@@ -120,10 +126,11 @@
public void verifyInvalidInnerNamespace() {
Assert.assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "query", "dummy")));
}
-
+
@Test
public void verifyInvalidInnerName() {
- Assert.assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "dummy", NamespaceURIs.PRIVATE_DATA)));
+ Assert.assertFalse(
+ handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "dummy", NamespaceURIs.PRIVATE_DATA)));
}
@Test
@@ -131,7 +138,7 @@
Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT).build();
Assert.assertFalse(handler.verify(stanza));
}
-
+
@Test
public void verifyValidStanza() {
Assert.assertTrue(handler.verify(verifyStanza));
@@ -145,121 +152,108 @@
@Test
public void handleGet() throws BindException, XMLSemanticError {
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Stanza expected = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.RESULT, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("bar", NS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("bar", NS).build();
+
StanzaAssert.assertEquals(expected, response);
}
-
+
@Test
public void handleGetNonExisting() throws BindException, XMLSemanticError {
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("dummy", NS)
- .addAttribute("attr", "attrval")
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("dummy", NS)
+ .addAttribute("attr", "attrval").build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
Stanza expected = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.RESULT, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("dummy", NS)
- .addAttribute("attr", "attrval")
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("dummy", NS)
+ .addAttribute("attr", "attrval").build();
+
StanzaAssert.assertEquals(expected, response);
}
-
+
@Test
public void handleGetWithoutInnerElement() throws BindException, XMLSemanticError {
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).endInnerElement()
- .startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "modify")
- .startInnerElement("not-acceptable", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).endInnerElement()
+ .startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "modify")
+ .startInnerElement("not-acceptable", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
+
StanzaAssert.assertEquals(expected, response);
}
@Test
public void handleGetForOtherUser() throws BindException, XMLSemanticError {
Entity other = EntityImpl.parseUnchecked("other@vysper.org");
-
+
Stanza request = StanzaBuilder.createIQStanza(FROM, other, IQStanzaType.GET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).endInnerElement()
- .startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "cancel")
- .addAttribute("code", "403")
- .startInnerElement("forbidden", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).endInnerElement()
+ .startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "cancel")
+ .addAttribute("code", "403")
+ .startInnerElement("forbidden", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
+
StanzaAssert.assertEquals(expected, response);
}
-
+
@Test
public void handleGetWithoutPersitenceManager() throws BindException, XMLSemanticError {
handler.setPersistenceManager(null);
-
+
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS).endInnerElement()
- .endInnerElement()
- .startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "wait")
- .startInnerElement("internal-server-error", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).endInnerElement()
+ .endInnerElement().startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "wait")
+ .startInnerElement("internal-server-error", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
+
StanzaAssert.assertEquals(expected, response);
}
@Test
public void handleSet() throws BindException, XMLSemanticError {
- XMLElement stored = new XMLElementBuilder("foo", NS)
- .startInnerElement("fez", NS)
- .build();
-
- String storedXml = new Renderer(stored).getComplete();
-
- Mockito.when(persistenceManager.setPrivateData(FROM, KEY, storedXml)).thenReturn(true);
-
- Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .addPreparedElement(stored)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ XMLElement stored = new XMLElementBuilder("foo", NS).startInnerElement("fez", NS).build();
- Stanza expected = StanzaBuilder.createIQStanza(null, FROM, IQStanzaType.RESULT, "id1")
- .build();
-
+ String storedXml = new Renderer(stored).getComplete();
+
+ Mockito.when(persistenceManager.setPrivateData(FROM, KEY, storedXml)).thenReturn(true);
+
+ Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).addPreparedElement(stored).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ Stanza expected = StanzaBuilder.createIQStanza(null, FROM, IQStanzaType.RESULT, "id1").build();
+
StanzaAssert.assertEquals(expected, response);
Mockito.verify(persistenceManager).setPrivateData(FROM, KEY, storedXml);
@@ -268,85 +262,73 @@
@Test
public void handleSetWithoutPersistenceManager() throws BindException, XMLSemanticError {
handler.setPersistenceManager(null);
-
+
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS).endInnerElement()
- .endInnerElement()
- .startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "wait")
- .startInnerElement("internal-server-error", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).endInnerElement()
+ .endInnerElement().startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "wait")
+ .startInnerElement("internal-server-error", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
+
StanzaAssert.assertEquals(expected, response);
}
@Test
public void handleSetForOtherUser() throws BindException, XMLSemanticError {
Entity other = EntityImpl.parseUnchecked("other@vysper.org");
-
+
Stanza request = StanzaBuilder.createIQStanza(FROM, other, IQStanzaType.SET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS).endInnerElement()
- .endInnerElement()
- .startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "cancel")
- .addAttribute("code", "403")
- .startInnerElement("forbidden", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).endInnerElement()
+ .endInnerElement().startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
+ .addAttribute("type", "cancel").addAttribute("code", "403")
+ .startInnerElement("forbidden", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
+
StanzaAssert.assertEquals(expected, response);
}
@Test
public void handleSetWithoutInnerElement() throws BindException, XMLSemanticError {
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .endInnerElement()
- .startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "modify")
- .startInnerElement("not-acceptable", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS)
- .build();
-
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).endInnerElement()
+ .startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "modify")
+ .startInnerElement("not-acceptable", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
+
StanzaAssert.assertEquals(expected, response);
}
@Test
public void handleSetFailedPersisting() throws BindException, XMLSemanticError {
// persistence manager mock will always default to return false
-
- Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
- .startInnerElement("query", NamespaceURIs.PRIVATE_DATA)
- .startInnerElement("foo", NS)
- .build();
-
- Stanza response = handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
- Stanza expected = StanzaBuilder.createIQStanza(null, FROM, IQStanzaType.ERROR, "id1")
- .build();
-
+ Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
+ .startInnerElement("query", NamespaceURIs.PRIVATE_DATA).startInnerElement("foo", NS).build();
+
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ Stanza expected = StanzaBuilder.createIQStanza(null, FROM, IQStanzaType.ERROR, "id1").build();
+
StanzaAssert.assertEquals(expected, response);
}
-
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandlerTestCase.java
index bd4058f..23d46d2 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandlerTestCase.java
@@ -20,8 +20,8 @@
package org.apache.vysper.xmpp.modules.extension.xep0054_vcardtemp;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
-import org.apache.vysper.StanzaAssert;
import org.apache.vysper.xml.fragment.Renderer;
import org.apache.vysper.xml.fragment.XMLElement;
import org.apache.vysper.xml.fragment.XMLElementBuilder;
@@ -165,14 +165,12 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1").addPreparedElement(VCARD)
.build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.RESULT, "id1").addPreparedElement(VCARD)
.build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -182,14 +180,12 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1")
.startInnerElement("vCard", NamespaceURIs.VCARD_TEMP).build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.RESULT, "id1")
.startInnerElement("vCard", NamespaceURIs.VCARD_TEMP).build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -197,14 +193,12 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, OTHER, IQStanzaType.GET, "id1")
.startInnerElement("vCard", NamespaceURIs.VCARD_TEMP).build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(OTHER, FROM, IQStanzaType.RESULT, "id1")
.addPreparedElement(OTHER_VCARD).build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -214,16 +208,14 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.GET, "id1")
.startInnerElement("vCard", NamespaceURIs.VCARD_TEMP).build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
.startInnerElement("vCard", NamespaceURIs.VCARD_TEMP).endInnerElement()
.startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "wait")
.startInnerElement("internal-server-error", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -233,13 +225,11 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1").addPreparedElement(VCARD)
.build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(null, FROM, IQStanzaType.RESULT, "id1").build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
Mockito.verify(persistenceManager).setVcard(FROM, VCARD_STRING);
}
@@ -251,15 +241,13 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1").addPreparedElement(VCARD)
.build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1").addPreparedElement(VCARD)
.startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "wait")
.startInnerElement("internal-server-error", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -267,16 +255,14 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1")
.startInnerElement("dummy", NamespaceURIs.VCARD_TEMP).build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
.startInnerElement("dummy", NamespaceURIs.VCARD_TEMP).endInnerElement()
.startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "modify")
.startInnerElement("bad-request", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -284,16 +270,14 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, OTHER, IQStanzaType.SET, "id1")
.addPreparedElement(OTHER_VCARD).build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(TO, FROM, IQStanzaType.ERROR, "id1")
.addPreparedElement(OTHER_VCARD).startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
.addAttribute("type", "auth")
.startInnerElement("forbidden", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
@Test
@@ -303,13 +287,11 @@
Stanza request = StanzaBuilder.createIQStanza(FROM, FROM, IQStanzaType.SET, "id1").addPreparedElement(VCARD)
.build();
- Stanza response = handler
- .execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker)
- .getUniqueResponseStanza();
+ handler.execute(request, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expected = StanzaBuilder.createIQStanza(null, FROM, IQStanzaType.ERROR, "id1").build();
- StanzaAssert.assertEquals(expected, response);
+ verify(stanzaBroker).writeToSession(expected);
}
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep007_inbandreg/InBandRegistrationHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep007_inbandreg/InBandRegistrationHandlerTestCase.java
index 24b09e7..df1d5b7 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep007_inbandreg/InBandRegistrationHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep007_inbandreg/InBandRegistrationHandlerTestCase.java
@@ -27,6 +27,7 @@
import org.apache.vysper.xmpp.authentication.AccountManagement;
import org.apache.vysper.xmpp.modules.extension.xep0077_inbandreg.InBandRegistrationHandler;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -46,80 +47,90 @@
private static final String IQ_ID = "id1";
private AccountManagement accountManagement = Mockito.mock(AccountManagement.class);
+
private SessionContext sessionContext = Mockito.mock(SessionContext.class);
+
private ServerRuntimeContext serverRuntimeContext = Mockito.mock(ServerRuntimeContext.class);
+
private SessionStateHolder sessionStateHolder = Mockito.mock(SessionStateHolder.class);
private static final Entity FROM = EntityImpl.parseUnchecked("from@vysper.org");
+
private static final Entity SERVER = EntityImpl.parseUnchecked("vysper.org");
+
private static final Entity EXISTING = EntityImpl.parseUnchecked("existing@vysper.org");
protected InBandRegistrationHandler handler = new InBandRegistrationHandler();
+ private RecordingStanzaBroker stanzaBroker;
+
@Before
public void before() {
Mockito.when(serverRuntimeContext.getStorageProvider(AccountManagement.class)).thenReturn(accountManagement);
Mockito.when(serverRuntimeContext.getServerEntity()).thenReturn(SERVER);
Mockito.when(accountManagement.verifyAccountExists(EXISTING)).thenReturn(true);
Mockito.when(sessionContext.getState()).thenReturn(SessionState.STARTED);
+ stanzaBroker = new RecordingStanzaBroker();
}
-
-
+
@Test
public void testGetUnauthenticated() throws XMLSemanticError {
- // <iq type='get' id='reg1'>
- // <query xmlns='jabber:iq:register'/>
- // </iq>
+ // <iq type='get' id='reg1'>
+ // <query xmlns='jabber:iq:register'/>
+ // </iq>
Stanza get = StanzaBuilder.createIQStanza(FROM, SERVER, IQStanzaType.GET, IQ_ID)
- .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER).build();
-
- Stanza response = handler.execute(get, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER).build();
- // <iq type='result' id='reg1'>
- // <query xmlns='jabber:iq:register'>
- // <instructions>
- // Choose a username and password for use with this service.
- // Please also provide your email address.
- // </instructions>
- // <username/>
- // <password/>
- // <email/>
- // </query>
- // </iq>
+ handler.execute(get, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ // <iq type='result' id='reg1'>
+ // <query xmlns='jabber:iq:register'>
+ // <instructions>
+ // Choose a username and password for use with this service.
+ // Please also provide your email address.
+ // </instructions>
+ // <username/>
+ // <password/>
+ // <email/>
+ // </query>
+ // </iq>
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Assert.assertNotNull(response);
Assert.assertEquals("iq", response.getName());
Assert.assertEquals(NamespaceURIs.JABBER_CLIENT, response.getNamespaceURI());
Assert.assertEquals(IQ_ID, response.getAttributeValue("id"));
Assert.assertEquals(SERVER.getFullQualifiedName(), response.getAttributeValue("from"));
Assert.assertEquals(FROM.getFullQualifiedName(), response.getAttributeValue("to"));
-
+
XMLElement query = response.getSingleInnerElementsNamed("query", NamespaceURIs.JABBER_IQ_REGISTER);
Assert.assertNotNull(query.getSingleInnerElementsNamed("instructions", NamespaceURIs.JABBER_IQ_REGISTER));
Assert.assertNotNull(query.getSingleInnerElementsNamed("username", NamespaceURIs.JABBER_IQ_REGISTER));
Assert.assertNotNull(query.getSingleInnerElementsNamed("password", NamespaceURIs.JABBER_IQ_REGISTER));
}
-
+
@Test
public void testGetAuthenticated() throws XMLSemanticError {
- // <iq type='get' id='reg1'>
- // <query xmlns='jabber:iq:register'/>
- // </iq>
+ // <iq type='get' id='reg1'>
+ // <query xmlns='jabber:iq:register'/>
+ // </iq>
Stanza get = StanzaBuilder.createIQStanza(EXISTING, SERVER, IQStanzaType.GET, IQ_ID)
- .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER).build();
-
+ .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER).build();
+
Mockito.when(sessionContext.getState()).thenReturn(SessionState.AUTHENTICATED);
Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(EXISTING);
- Stanza response = handler.execute(get, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ handler.execute(get, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
- // <iq type='result' id='reg1'>
- // <query xmlns='jabber:iq:register'>
- // <registered/>
- // <username>juliet</username>
- // <password>R0m30</password>
- // <email>juliet@capulet.com</email>
- // </query>
- // </iq>
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ // <iq type='result' id='reg1'>
+ // <query xmlns='jabber:iq:register'>
+ // <registered/>
+ // <username>juliet</username>
+ // <password>R0m30</password>
+ // <email>juliet@capulet.com</email>
+ // </query>
+ // </iq>
Assert.assertNotNull(response);
Assert.assertEquals("iq", response.getName());
Assert.assertEquals(NamespaceURIs.JABBER_CLIENT, response.getNamespaceURI());
@@ -127,31 +138,32 @@
Assert.assertEquals("result", response.getAttributeValue("type"));
Assert.assertEquals(SERVER.getFullQualifiedName(), response.getAttributeValue("from"));
Assert.assertEquals(EXISTING.getFullQualifiedName(), response.getAttributeValue("to"));
-
+
XMLElement query = response.getSingleInnerElementsNamed("query", NamespaceURIs.JABBER_IQ_REGISTER);
Assert.assertNotNull(query.getSingleInnerElementsNamed("registered", NamespaceURIs.JABBER_IQ_REGISTER));
- assertInnerText(EXISTING.getNode(), "username", query);
+ assertInnerText(EXISTING.getNode(), "username", query);
}
@Test
public void testSet() throws XMLSemanticError, AccountCreationException {
- // <iq type='set' id='reg2'>
- // <query xmlns='jabber:iq:register'>
- // <username>bill</username>
- // <password>Calliope</password>
- // <email>bard@shakespeare.lit</email>
- // </query>
- // </iq>
- Stanza set = StanzaBuilder.createIQStanza(FROM, SERVER, IQStanzaType.SET, IQ_ID)
- .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
- .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(FROM.getNode()).endInnerElement()
- .startInnerElement("password", NamespaceURIs.JABBER_IQ_REGISTER).addText("password").endInnerElement()
- .endInnerElement()
- .build();
-
- Stanza response = handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ // <iq type='set' id='reg2'>
+ // <query xmlns='jabber:iq:register'>
+ // <username>bill</username>
+ // <password>Calliope</password>
+ // <email>bard@shakespeare.lit</email>
+ // </query>
+ // </iq>
+ Stanza set = StanzaBuilder.createIQStanza(FROM, SERVER, IQStanzaType.SET, IQ_ID)
+ .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
+ .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(FROM.getNode())
+ .endInnerElement().startInnerElement("password", NamespaceURIs.JABBER_IQ_REGISTER).addText("password")
+ .endInnerElement().endInnerElement().build();
- // <iq type='result' id='reg2'/>
+ handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ // <iq type='result' id='reg2'/>
Assert.assertNotNull(response);
Assert.assertEquals("iq", response.getName());
Assert.assertEquals(NamespaceURIs.JABBER_CLIENT, response.getNamespaceURI());
@@ -160,38 +172,39 @@
Assert.assertEquals(SERVER.getFullQualifiedName(), response.getAttributeValue("from"));
Assert.assertEquals(FROM.getFullQualifiedName(), response.getAttributeValue("to"));
Assert.assertEquals(0, response.getInnerElements().size());
-
+
Mockito.verify(accountManagement).addUser(FROM, "password");
}
@Test
public void testSetExisting() throws XMLSemanticError, AccountCreationException {
- // <iq type='set' id='reg2'>
- // <query xmlns='jabber:iq:register'>
- // <username>bill</username>
- // <password>Calliope</password>
- // <email>bard@shakespeare.lit</email>
- // </query>
- // </iq>
- Stanza set = StanzaBuilder.createIQStanza(EXISTING, SERVER, IQStanzaType.SET, IQ_ID)
- .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
- .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(EXISTING.getNode()).endInnerElement()
- .startInnerElement("password", NamespaceURIs.JABBER_IQ_REGISTER).addText("password").endInnerElement()
- .endInnerElement()
- .build();
-
- Stanza response = handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ // <iq type='set' id='reg2'>
+ // <query xmlns='jabber:iq:register'>
+ // <username>bill</username>
+ // <password>Calliope</password>
+ // <email>bard@shakespeare.lit</email>
+ // </query>
+ // </iq>
+ Stanza set = StanzaBuilder.createIQStanza(EXISTING, SERVER, IQStanzaType.SET, IQ_ID)
+ .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
+ .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(EXISTING.getNode())
+ .endInnerElement().startInnerElement("password", NamespaceURIs.JABBER_IQ_REGISTER).addText("password")
+ .endInnerElement().endInnerElement().build();
- // <iq type='error' id='reg2'>
- // <query xmlns='jabber:iq:register'>
- // <username>bill</username>
- // <password>m1cro$oft</password>
- // <email>billg@bigcompany.com</email>
- // </query>
- // <error code='409' type='cancel'>
- // <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
- // </error>
- // </iq>
+ handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ // <iq type='error' id='reg2'>
+ // <query xmlns='jabber:iq:register'>
+ // <username>bill</username>
+ // <password>m1cro$oft</password>
+ // <email>billg@bigcompany.com</email>
+ // </query>
+ // <error code='409' type='cancel'>
+ // <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
+ // </error>
+ // </iq>
Assert.assertNotNull(response);
Assert.assertEquals("iq", response.getName());
Assert.assertEquals(NamespaceURIs.JABBER_CLIENT, response.getNamespaceURI());
@@ -199,45 +212,47 @@
Assert.assertEquals("error", response.getAttributeValue("type"));
Assert.assertEquals(SERVER.getFullQualifiedName(), response.getAttributeValue("from"));
Assert.assertEquals(EXISTING.getFullQualifiedName(), response.getAttributeValue("to"));
-
+
XMLElement query = response.getSingleInnerElementsNamed("query", NamespaceURIs.JABBER_IQ_REGISTER);
- assertInnerText(EXISTING.getNode(), "username", query);
- assertInnerText("password", "password", query);
+ assertInnerText(EXISTING.getNode(), "username", query);
+ assertInnerText("password", "password", query);
XMLElement error = response.getSingleInnerElementsNamed("error", NamespaceURIs.JABBER_CLIENT);
Assert.assertEquals("409", error.getAttributeValue("code"));
Assert.assertEquals("cancel", error.getAttributeValue("type"));
- Assert.assertNotNull(error.getSingleInnerElementsNamed("conflict", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS));
-
+ Assert.assertNotNull(
+ error.getSingleInnerElementsNamed("conflict", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS));
+
Mockito.verify(accountManagement, Mockito.never()).addUser(EXISTING, "password");
}
@Test
public void testSetMissingPassword() throws XMLSemanticError, AccountCreationException {
- // <iq type='set' id='reg2'>
- // <query xmlns='jabber:iq:register'>
- // <username>bill</username>
- // <password>Calliope</password>
- // <email>bard@shakespeare.lit</email>
- // </query>
- // </iq>
- Stanza set = StanzaBuilder.createIQStanza(FROM, SERVER, IQStanzaType.SET, IQ_ID)
- .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
- .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(FROM.getNode()).endInnerElement()
- .endInnerElement()
- .build();
-
- Stanza response = handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, null).getUniqueResponseStanza();
+ // <iq type='set' id='reg2'>
+ // <query xmlns='jabber:iq:register'>
+ // <username>bill</username>
+ // <password>Calliope</password>
+ // <email>bard@shakespeare.lit</email>
+ // </query>
+ // </iq>
+ Stanza set = StanzaBuilder.createIQStanza(FROM, SERVER, IQStanzaType.SET, IQ_ID)
+ .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
+ .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(FROM.getNode())
+ .endInnerElement().endInnerElement().build();
- // <iq type='error' id='reg2'>
- // <query xmlns='jabber:iq:register'>
- // <username>bill</username>
- // <password>Calliope</password>
- // </query>
- // <error code='406' type='modify'>
- // <not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
- // </error>
- // </iq>
+ handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ // <iq type='error' id='reg2'>
+ // <query xmlns='jabber:iq:register'>
+ // <username>bill</username>
+ // <password>Calliope</password>
+ // </query>
+ // <error code='406' type='modify'>
+ // <not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
+ // </error>
+ // </iq>
Assert.assertNotNull(response);
Assert.assertEquals("iq", response.getName());
Assert.assertEquals(NamespaceURIs.JABBER_CLIENT, response.getNamespaceURI());
@@ -245,41 +260,42 @@
Assert.assertEquals("error", response.getAttributeValue("type"));
Assert.assertEquals(SERVER.getFullQualifiedName(), response.getAttributeValue("from"));
Assert.assertEquals(FROM.getFullQualifiedName(), response.getAttributeValue("to"));
-
+
XMLElement query = response.getSingleInnerElementsNamed("query", NamespaceURIs.JABBER_IQ_REGISTER);
- assertInnerText(FROM.getNode(), "username", query);
+ assertInnerText(FROM.getNode(), "username", query);
XMLElement error = response.getSingleInnerElementsNamed("error", NamespaceURIs.JABBER_CLIENT);
Assert.assertEquals("406", error.getAttributeValue("code"));
Assert.assertEquals("modify", error.getAttributeValue("type"));
- Assert.assertNotNull(error.getSingleInnerElementsNamed("not-acceptable", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS));
-
+ Assert.assertNotNull(
+ error.getSingleInnerElementsNamed("not-acceptable", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS));
+
Mockito.verify(accountManagement, Mockito.never()).addUser(EXISTING, "password");
}
@Test
public void testSetChangePassword() throws XMLSemanticError, AccountCreationException {
- // <iq type='set' id='reg2'>
- // <query xmlns='jabber:iq:register'>
- // <username>bill</username>
- // <password>Calliope</password>
- // <email>bard@shakespeare.lit</email>
- // </query>
- // </iq>
+ // <iq type='set' id='reg2'>
+ // <query xmlns='jabber:iq:register'>
+ // <username>bill</username>
+ // <password>Calliope</password>
+ // <email>bard@shakespeare.lit</email>
+ // </query>
+ // </iq>
Stanza set = StanzaBuilder.createIQStanza(EXISTING, SERVER, IQStanzaType.SET, IQ_ID)
- .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
- .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(EXISTING.getNode()).endInnerElement()
- .startInnerElement("password", NamespaceURIs.JABBER_IQ_REGISTER).addText("password").endInnerElement()
- .endInnerElement()
- .build();
-
+ .startInnerElement("query", NamespaceURIs.JABBER_IQ_REGISTER)
+ .startInnerElement("username", NamespaceURIs.JABBER_IQ_REGISTER).addText(EXISTING.getNode())
+ .endInnerElement().startInnerElement("password", NamespaceURIs.JABBER_IQ_REGISTER).addText("password")
+ .endInnerElement().endInnerElement().build();
+
Mockito.when(sessionContext.getState()).thenReturn(SessionState.AUTHENTICATED);
Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(EXISTING);
- Stanza response = handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, null)
- .getUniqueResponseStanza();
+ handler.execute(set, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
- // <iq type='result' id='reg2'/>
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
+
+ // <iq type='result' id='reg2'/>
Assert.assertNotNull(response);
Assert.assertEquals("iq", response.getName());
Assert.assertEquals(NamespaceURIs.JABBER_CLIENT, response.getNamespaceURI());
@@ -288,19 +304,18 @@
Assert.assertEquals(SERVER.getFullQualifiedName(), response.getAttributeValue("from"));
Assert.assertEquals(EXISTING.getFullQualifiedName(), response.getAttributeValue("to"));
Assert.assertEquals(0, response.getInnerElements().size());
-
+
Mockito.verify(accountManagement).changePassword(EXISTING, "password");
}
-
private void assertInnerText(String expected, String name, XMLElement parent) {
try {
- Assert.assertEquals(expected,
- parent.getSingleInnerElementsNamed(name, NamespaceURIs.JABBER_IQ_REGISTER).getInnerText().getText());
+ Assert.assertEquals(expected, parent.getSingleInnerElementsNamed(name, NamespaceURIs.JABBER_IQ_REGISTER)
+ .getInnerText().getText());
} catch (XMLSemanticError e) {
Assert.fail("Incorrect number of elements: " + e.getMessage());
}
-
+
}
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0199_xmppping/XmppPingIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0199_xmppping/XmppPingIQHandlerTestCase.java
index 9f25db5..f89adc9 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0199_xmppping/XmppPingIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0199_xmppping/XmppPingIQHandlerTestCase.java
@@ -19,10 +19,12 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0199_xmppping;
+import static org.junit.Assert.assertFalse;
+
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -32,8 +34,6 @@
import org.junit.Test;
import org.mockito.Mockito;
-import static org.junit.Assert.assertFalse;
-
/**
*/
public class XmppPingIQHandlerTestCase {
@@ -50,14 +50,18 @@
protected XmppPingIQHandler handler = new XmppPingIQHandler();
+ private RecordingStanzaBroker stanzaBroker;
+
@Before
public void before() throws Exception {
sessionContext.setInitiatingEntity(client);
boundClient = new EntityImpl(client, sessionContext.bindResource());
server = sessionContext.getServerJID();
+
+ stanzaBroker = new RecordingStanzaBroker();
}
-
+
private Stanza buildStanza() {
return buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "ping", NamespaceURIs.URN_XMPP_PING);
}
@@ -65,15 +69,12 @@
private Stanza buildStanza(String name, String namespaceUri) {
return buildStanza(name, namespaceUri, "ping", NamespaceURIs.URN_XMPP_PING);
}
-
+
private Stanza buildStanza(String name, String namespaceUri, String innerName, String innerNamespaceUri) {
- return new StanzaBuilder(name, namespaceUri)
- .addAttribute("type", "get")
- .addAttribute("id", "1")
- .startInnerElement(innerName, innerNamespaceUri)
- .build();
+ return new StanzaBuilder(name, namespaceUri).addAttribute("type", "get").addAttribute("id", "1")
+ .startInnerElement(innerName, innerNamespaceUri).build();
}
-
+
@Test
public void nameMustBeIq() {
Assert.assertEquals("iq", handler.getName());
@@ -108,10 +109,11 @@
public void verifyInvalidInnerNamespace() {
assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "ping", "dummy")));
}
-
+
@Test
public void verifyInvalidInnerName() {
- assertFalse(handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "dummy", NamespaceURIs.URN_XMPP_PING)));
+ assertFalse(
+ handler.verify(buildStanza("iq", NamespaceURIs.JABBER_CLIENT, "dummy", NamespaceURIs.URN_XMPP_PING)));
}
@Test
@@ -119,7 +121,7 @@
Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT).build();
assertFalse(handler.verify(stanza));
}
-
+
@Test
public void verifyValidStanza() {
Assert.assertTrue(handler.verify(buildStanza()));
@@ -127,49 +129,46 @@
@Test
public void verifyValidResultStanza() {
- Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "result")
- .addAttribute("id", "xmppping-1")
- .build();
+ Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "result")
+ .addAttribute("id", "xmppping-1").build();
Assert.assertTrue(handler.verify(stanza));
}
@Test
public void verifyInvalidResultStanza() {
- Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT)
- .addAttribute("type", "result")
- .addAttribute("id", "dummy-1")
- .build();
-
+ Stanza stanza = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "result")
+ .addAttribute("id", "dummy-1").build();
+
assertFalse(handler.verify(stanza));
}
-
+
@Test
public void sessionIsRequired() {
Assert.assertTrue(handler.isSessionRequired());
}
-
@Test
public void clientToServerPing() {
- // C: <iq from='juliet@capulet.lit/balcony' to='capulet.lit' id='c2s1' type='get'>
- // <ping xmlns='urn:xmpp:ping'/>
- // </iq>
+ // C: <iq from='juliet@capulet.lit/balcony' to='capulet.lit' id='c2s1'
+ // type='get'>
+ // <ping xmlns='urn:xmpp:ping'/>
+ // </iq>
//
- // S: <iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='c2s1' type='result'/>
+ // S: <iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='c2s1'
+ // type='result'/>
StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(boundClient, server, IQStanzaType.GET, IQ_ID);
stanzaBuilder.startInnerElement("ping", NamespaceURIs.URN_XMPP_PING).endInnerElement();
Stanza requestStanza = stanzaBuilder.build();
- ResponseStanzaContainer resp = handler.execute(requestStanza, sessionContext.getServerRuntimeContext(), true,
- sessionContext, null, null);
+ handler.execute(requestStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
// we should always get a response
- Assert.assertTrue(resp.hasResponse());
+ Assert.assertTrue(stanzaBroker.hasStanzaWrittenToSession());
- Stanza respStanza = resp.getUniqueResponseStanza();
+ Stanza respStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
Assert.assertEquals("iq", respStanza.getName());
Assert.assertEquals(boundClient, respStanza.getTo());
@@ -180,24 +179,24 @@
@Test
public void handleResult() {
- // S: <iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='c2s1' type='result'/>
+ // S: <iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='c2s1'
+ // type='result'/>
Stanza stanza = StanzaBuilder.createIQStanza(boundClient, server, IQStanzaType.RESULT, IQ_ID).build();
XmppPinger pinger1 = Mockito.mock(XmppPinger.class);
XmppPinger pinger2 = Mockito.mock(XmppPinger.class);
XmppPinger pinger3 = Mockito.mock(XmppPinger.class);
-
+
handler.addPinger(pinger1);
handler.addPinger(pinger2);
handler.addPinger(pinger3);
handler.removePinger(pinger3);
-
- ResponseStanzaContainer resp = handler.execute(stanza, sessionContext.getServerRuntimeContext(), true,
- sessionContext, null, null);
- assertFalse(resp.hasResponse());
-
+ handler.execute(stanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null, stanzaBroker);
+
+ assertFalse(stanzaBroker.hasStanzaWrittenToSession());
+
Mockito.verify(pinger1).pong(IQ_ID);
Mockito.verify(pinger1).pong(IQ_ID);
Mockito.verifyZeroInteractions(pinger3);
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandlerTestCase.java
index fed5e03..63e8727 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0220_server_dailback/DbVerifyHandlerTestCase.java
@@ -22,6 +22,7 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -40,6 +41,15 @@
private DbVerifyHandler handler = new DbVerifyHandler();
+ private RecordingStanzaBroker stanzaBroker;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ stanzaBroker = new RecordingStanzaBroker();
+ }
+
public void testVerify() {
Stanza correct = new StanzaBuilder("verify", NamespaceURIs.JABBER_SERVER_DIALBACK).build();
Stanza invalidNamespace = new StanzaBuilder("verify", "dummy").build();
@@ -48,6 +58,7 @@
Assert.assertTrue(handler.verify(correct));
Assert.assertFalse(handler.verify(invalidNamespace));
Assert.assertFalse(handler.verify(invalidName));
+
}
public void testExecuteValidVerification() {
@@ -67,8 +78,9 @@
.addAttribute("from", FROM.getFullQualifiedName()).addAttribute("to", TO.getFullQualifiedName())
.addAttribute("id", ID).addText(token).build();
- Stanza response = handler.execute(stanza, serverRuntimeContext, false, null, null, null)
- .getUniqueResponseStanza();
+ handler.execute(stanza, serverRuntimeContext, false, null, null, stanzaBroker);
+
+ Stanza response = stanzaBroker.getUniqueStanzaWrittenToSession();
Assert.assertNotNull(response);
Assert.assertEquals(TO, response.getFrom());
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
index 5448dae..1473483 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
@@ -19,10 +19,13 @@
*/
package org.apache.vysper.xmpp.modules.roster.handler;
+import static org.mockito.Mockito.mock;
+
import org.apache.vysper.storage.OpenStorageProviderRegistry;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.modules.roster.persistence.MemoryRosterManager;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.StanzaBroker;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
@@ -68,7 +71,7 @@
assertEquals(ResourceState.CONNECTED, getResourceState());
handler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null,
- null);
+ mock(StanzaBroker.class));
assertEquals(ResourceState.CONNECTED_INTERESTED, getResourceState());
// C: <iq from='juliet@example.com/balcony'
@@ -88,7 +91,7 @@
ResourceState.AVAILABLE);
handler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null,
- null);
+ mock(StanzaBroker.class));
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java b/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
index 43d373d..6dfd9ce 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandler.java
@@ -85,15 +85,14 @@
this.exception = exception;
}
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
+ boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
throws ProtocolException {
if (stanza == null || !stanza.getName().equals(getName()) || sessionContext == null)
throw new RuntimeException("test failed");
handlerCalled = true;
if (exception != null)
throw exception;
- return null;
}
public void assertHandlerCalled() {
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandlerResponse.java b/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandlerResponse.java
index 7c9eea4..724c02f 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandlerResponse.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/protocol/CallTestStanzaHandlerResponse.java
@@ -20,13 +20,13 @@
package org.apache.vysper.xmpp.protocol;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.Stanza;
-import java.util.Collections;
-import java.util.List;
-
/**
*/
public class CallTestStanzaHandlerResponse extends CallTestStanzaHandler implements ResponseStanzaContainer {
@@ -37,11 +37,11 @@
}
@Override
- public ResponseStanzaContainer execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext,
- boolean isOutboundStanza, SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
+ public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza,
+ SessionContext sessionContext, SessionStateHolder sessionStateHolder, StanzaBroker stanzaBroker)
throws ProtocolException {
super.execute(stanza, serverRuntimeContext, true, sessionContext, null, stanzaBroker);
- return new ResponseStanzaContainerImpl(getResponseStanzas());
+ getResponseStanzas().forEach(stanzaBroker::writeToSession);
}
public void setResponseStanza(Stanza response) {
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/protocol/RecordingStanzaBroker.java b/server/core/src/test/java/org/apache/vysper/xmpp/protocol/RecordingStanzaBroker.java
new file mode 100644
index 0000000..55b570a
--- /dev/null
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/protocol/RecordingStanzaBroker.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.protocol;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
+import org.apache.vysper.xmpp.stanza.Stanza;
+
+/**
+ * @author Réda Housni Alaoui
+ */
+public class RecordingStanzaBroker implements StanzaBroker {
+
+ private final List<Stanza> stanzasWrittenToSession = new ArrayList<>();
+
+ private StanzaBroker delegate;
+
+ public RecordingStanzaBroker() {
+
+ }
+
+ public RecordingStanzaBroker(StanzaBroker delegate) {
+ this.delegate = delegate;
+ }
+
+ public Stanza getUniqueStanzaWrittenToSession() {
+ assertTrue(stanzasWrittenToSession.size() < 2);
+ return stanzasWrittenToSession.stream().findFirst().orElse(null);
+ }
+
+ public boolean hasStanzaWrittenToSession() {
+ return !stanzasWrittenToSession.isEmpty();
+ }
+
+ @Override
+ public void write(Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy)
+ throws DeliveryException {
+ if (delegate == null) {
+ return;
+ }
+
+ delegate.write(receiver, stanza, deliveryFailureStrategy);
+ }
+
+ @Override
+ public void writeToSession(Stanza stanza) {
+ stanzasWrittenToSession.add(stanza);
+ }
+}
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
index f801ba9..eb35444 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
@@ -19,14 +19,15 @@
*/
package org.apache.vysper.xmpp.server.components;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
-import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
-import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.SimpleStanzaHandlerExecutorFactory;
@@ -40,11 +41,6 @@
import org.junit.Test;
import org.mockito.Mockito;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
/**
*/
public class ComponentStanzaProcessorTestCase {
@@ -67,11 +63,9 @@
private Stanza responseStanza = StanzaBuilder.createMessageStanza(TO, FROM, null, "response").build();
- private ResponseStanzaContainer container = new ResponseStanzaContainerImpl(responseStanza);
-
private ComponentStanzaProcessor processor = new ComponentStanzaProcessor(
new SimpleStanzaHandlerExecutorFactory(stanzaRelay));
-
+
private StanzaWriter sessionContextStanzaWriter;
@Before
@@ -109,22 +103,17 @@
}
@Test
- public void processSuccessfulWithResponse() throws ProtocolException, DeliveryException {
- when(handler.execute(stanza, serverRuntimeContext, false, sessionContext, sessionStateHolder,
- new SimpleStanzaBroker(stanzaRelay, sessionContext))).thenReturn(container);
-
+ public void processSuccessfulWithResponse() throws ProtocolException {
processor.addHandler(handler);
processor.processStanza(serverRuntimeContext, sessionContext, stanza, sessionStateHolder);
- verify(sessionContextStanzaWriter).write(responseStanza);
+ verify(handler).execute(stanza, serverRuntimeContext, false, sessionContext, sessionStateHolder,
+ new SimpleStanzaBroker(stanzaRelay, sessionContext));
}
@Test
- public void handlerThrowsException() throws ProtocolException, DeliveryException {
- when(handler.execute(stanza, serverRuntimeContext, false, sessionContext, sessionStateHolder,
- new SimpleStanzaBroker(stanzaRelay, sessionContext))).thenThrow(new ProtocolException());
-
+ public void handlerThrowsException() {
processor.addHandler(handler);
processor.processStanza(serverRuntimeContext, sessionContext, stanza, sessionStateHolder);
@@ -134,9 +123,12 @@
@Test(expected = RuntimeException.class)
public void processThenFailRelaying() throws ProtocolException {
- when(handler.execute(stanza, serverRuntimeContext, false, sessionContext, sessionStateHolder,
- new SimpleStanzaBroker(stanzaRelay, sessionContext))).thenReturn(container);
- doThrow(new RuntimeException()).when(sessionContextStanzaWriter).write(responseStanza);
+ // when(handler.execute(stanza, serverRuntimeContext, false, sessionContext,
+ // sessionStateHolder,
+ // new SimpleStanzaBroker(stanzaRelay, sessionContext))).thenReturn(container);
+
+ doThrow(new RuntimeException()).when(handler).execute(stanza, serverRuntimeContext, false, sessionContext,
+ sessionStateHolder, new SimpleStanzaBroker(stanzaRelay, sessionContext));
processor.addHandler(handler);
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java
index 570e0f8..93867ce 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java
@@ -27,9 +27,8 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaBroker;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.SessionState;
@@ -57,7 +56,7 @@
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
- private StanzaBroker stanzaBroker = mock(StanzaBroker.class);
+ private RecordingStanzaBroker stanzaBroker;
@Before
public void before() {
@@ -69,6 +68,8 @@
Mockito.when(sessionContext.getSessionId()).thenReturn("session-id");
sessionStateHolder.setState(SessionState.STARTED);
+
+ stanzaBroker = new RecordingStanzaBroker();
}
@Test
@@ -116,12 +117,11 @@
.startInnerElement("starttls", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).endInnerElement()
.startInnerElement("dialback", NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement().build();
- ResponseStanzaContainer response = handler.execute(stanza, serverRuntimeContext, true, sessionContext,
- sessionStateHolder, stanzaBroker);
+ handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
Stanza expectedResponse = new StanzaBuilder("starttls", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).build();
- StanzaAssert.assertEquals(expectedResponse, response.getUniqueResponseStanza());
+ StanzaAssert.assertEquals(expectedResponse, stanzaBroker.getUniqueStanzaWrittenToSession());
}
@Test
@@ -132,10 +132,9 @@
.startInnerElement("starttls", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).endInnerElement()
.startInnerElement("dialback", NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement().build();
- ResponseStanzaContainer response = handler.execute(stanza, serverRuntimeContext, true, sessionContext,
- sessionStateHolder, stanzaBroker);
+ handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
- assertDialbackStanza(response.getUniqueResponseStanza());
+ assertDialbackStanza(stanzaBroker.getUniqueStanzaWrittenToSession());
}
@Test
@@ -143,10 +142,9 @@
Stanza stanza = new StanzaBuilder("features", NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS)
.startInnerElement("dialback", NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement().build();
- ResponseStanzaContainer response = handler.execute(stanza, serverRuntimeContext, true, sessionContext,
- sessionStateHolder, stanzaBroker);
+ handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
- assertDialbackStanza(response.getUniqueResponseStanza());
+ assertDialbackStanza(stanzaBroker.getUniqueStanzaWrittenToSession());
}
@Test
@@ -156,8 +154,9 @@
Stanza stanza = new StanzaBuilder("features", NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS)
.startInnerElement("dialback", NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement().build();
- Assert.assertNull(
- handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker));
+ handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Assert.assertFalse(stanzaBroker.hasStanzaWrittenToSession());
}
// TODO Is this the correct behavior?
diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java
index 039d597..b217713 100644
--- a/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java
+++ b/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java
@@ -21,12 +21,10 @@
import javax.net.ssl.SSLContext;
-import junit.framework.Assert;
-
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -37,30 +35,40 @@
import org.junit.Test;
import org.mockito.Mockito;
+import junit.framework.Assert;
+
/**
*/
public class TlsProceedHandlerTestCase {
private static final Entity FROM = EntityImpl.parseUnchecked("other.org");
+
private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
private TlsProceedHandler handler = new TlsProceedHandler();
+
private ServerRuntimeContext serverRuntimeContext = Mockito.mock(ServerRuntimeContext.class);
+
private SessionContext sessionContext = Mockito.mock(SessionContext.class);
+
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ private RecordingStanzaBroker stanzaBroker;
+
@Before
public void before() {
SSLContext sslContext = Mockito.mock(SSLContext.class);
Mockito.when(serverRuntimeContext.getSslContext()).thenReturn(sslContext);
Mockito.when(serverRuntimeContext.getServerEntity()).thenReturn(TO);
-
+
Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(FROM);
Mockito.when(sessionContext.getSessionId()).thenReturn("session-id");
sessionStateHolder.setState(SessionState.STARTED);
+
+ stanzaBroker = new RecordingStanzaBroker();
}
-
+
@Test
public void nameMustBeFeatures() {
Assert.assertEquals("proceed", handler.getName());
@@ -103,13 +111,13 @@
@Test
public void execute() {
Stanza stanza = new StanzaBuilder("proceed", NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS).build();
-
- ResponseStanzaContainer response = handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, null);
-
- Assert.assertNull(response);
+
+ handler.execute(stanza, serverRuntimeContext, true, sessionContext, sessionStateHolder, stanzaBroker);
+
+ Assert.assertFalse(stanzaBroker.hasStanzaWrittenToSession());
Assert.assertEquals(SessionState.ENCRYPTION_STARTED, sessionStateHolder.getState());
-
+
Mockito.verify(sessionContext).switchToTLS(false, true);
}
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
index dd84033..a49fbaa 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractDiscoTestCase.java
@@ -19,6 +19,8 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0045_muc;
+import static org.mockito.Mockito.mock;
+
import org.apache.vysper.xml.fragment.XMLElement;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
@@ -26,7 +28,6 @@
import org.apache.vysper.xmpp.modules.Module;
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
import org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
import org.apache.vysper.xmpp.server.components.Component;
@@ -35,8 +36,6 @@
import junit.framework.TestCase;
-import static org.mockito.Mockito.mock;
-
/**
*
* @author The Apache MINA Project (dev@mina.apache.org)
@@ -86,11 +85,10 @@
StanzaBuilder request = buildRequest();
- ResponseStanzaContainer resultStanzaContainer = infoIQHandler.execute(request.build(), serverRuntimeContext,
- false, new TestSessionContext(serverRuntimeContext, new SessionStateHolder(),
- serverRuntimeContext.getStanzaRelay()),
- null, null);
- Stanza resultStanza = resultStanzaContainer.getUniqueResponseStanza();
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker();
+ infoIQHandler.execute(request.build(), serverRuntimeContext, false, new TestSessionContext(serverRuntimeContext,
+ new SessionStateHolder(), serverRuntimeContext.getStanzaRelay()), null, stanzaBroker);
+ Stanza resultStanza = stanzaBroker.getUniqueStanzaWrittenToSession();
assertEquals("Disco request must not return error", "result", resultStanza.getAttributeValue("type"));
XMLElement queryElement = resultStanza.getFirstInnerElement();
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
index 762793f..b7f8c35 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
@@ -37,13 +37,12 @@
public abstract class AbstractMUCOccupantDiscoTestCase extends AbstractMUCHandlerTestCase {
private Stanza sendDisco(Stanza stanza) throws ProtocolException {
- ResponseStanzaContainer container = handler.execute(stanza, sessionContext.getServerRuntimeContext(), true,
- sessionContext, null, new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+ RecordingStanzaBroker recordingStanzaBroker = new RecordingStanzaBroker(
+ new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+
+ handler.execute(stanza, sessionContext.getServerRuntimeContext(), true,
+ sessionContext, null, recordingStanzaBroker);
+ return recordingStanzaBroker.getUniqueStanzaWrittenToSession();
}
@Override
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/RecordingStanzaBroker.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/RecordingStanzaBroker.java
new file mode 100644
index 0000000..33aa46b
--- /dev/null
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/RecordingStanzaBroker.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0045_muc;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
+import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.stanza.Stanza;
+
+/**
+ * @author Réda Housni Alaoui
+ */
+public class RecordingStanzaBroker implements StanzaBroker {
+
+ private final List<Stanza> stanzasWrittenToSession = new ArrayList<>();
+
+ private StanzaBroker delegate;
+
+ public RecordingStanzaBroker() {
+
+ }
+
+ public RecordingStanzaBroker(StanzaBroker delegate) {
+ this.delegate = delegate;
+ }
+
+ public Stanza getUniqueStanzaWrittenToSession() {
+ assertTrue(stanzasWrittenToSession.size() < 2);
+ return stanzasWrittenToSession.stream().findFirst().orElse(null);
+ }
+
+ public boolean hasStanzaWrittenToSession() {
+ return !stanzasWrittenToSession.isEmpty();
+ }
+
+ @Override
+ public void write(Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy)
+ throws DeliveryException {
+ if (delegate == null) {
+ return;
+ }
+
+ delegate.write(receiver, stanza, deliveryFailureStrategy);
+ }
+
+ @Override
+ public void writeToSession(Stanza stanza) {
+ stanzasWrittenToSession.add(stanza);
+ }
+
+}
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
index 1706766..40e15b1 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
@@ -31,6 +31,7 @@
import org.apache.vysper.xmpp.delivery.StanzaReceiverQueue;
import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.MUCFeatures;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroker;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.TestSessionContext;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserItem;
@@ -38,7 +39,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.IQStanza;
@@ -271,13 +271,10 @@
stanzaBuilder.endInnerElement();
Stanza iqStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = handler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true,
- sessionContext, null, new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ handler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null, stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
}
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
index 20c8d38..febacae 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
@@ -24,10 +24,10 @@
import org.apache.vysper.xml.fragment.XMLElement;
import org.apache.vysper.xml.fragment.XMLElementBuilder;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroker;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
@@ -61,13 +61,11 @@
}
Stanza messageStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = handler.execute(messageStanza, sessionContext.getServerRuntimeContext(),
- true, sessionContext, null, new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
+ new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ handler.execute(messageStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
protected void assertMessageErrorStanza(Stanza actualResponse, Entity expectedFrom, Entity expectedTo,
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
index 2dd1883..27e46e7 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
@@ -23,6 +23,7 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroker;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
@@ -31,7 +32,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
@@ -49,13 +49,12 @@
stanzaBuilder.endInnerElement();
Stanza presenceStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = handler.execute(presenceStanza, sessionContext.getServerRuntimeContext(),
- true, sessionContext, null, new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
+ new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ handler.execute(presenceStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
@Override
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
index 0c696ec..e5e44c7 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
@@ -23,12 +23,12 @@
import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroker;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserItem;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -44,13 +44,10 @@
status);
Stanza presenceStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = handler.execute(presenceStanza, sessionContext.getServerRuntimeContext(),
- true, sessionContext, null, new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ handler.execute(presenceStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
@Override
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
index 93fa7f6..ba37ca5 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
@@ -26,6 +26,7 @@
import org.apache.vysper.xml.fragment.XMLElementBuilder;
import org.apache.vysper.xml.fragment.XMLElementVerifier;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroker;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.TestSessionContext;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.ConferenceTestUtils;
@@ -38,7 +39,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.SessionContext;
@@ -77,14 +77,11 @@
stanzaBuilder.addPreparedElement(new X(xInnerElms));
}
Stanza presenceStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = handler.execute(presenceStanza,
- userSessionContext.getServerRuntimeContext(), true, userSessionContext, null,
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+ handler.execute(presenceStanza, userSessionContext.getServerRuntimeContext(), true, userSessionContext, null,
+ stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
protected TestSessionContext sessionContext2;
diff --git a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
index bc684f2..1774684 100644
--- a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
+++ b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
@@ -24,13 +24,13 @@
import org.apache.vysper.xml.fragment.XMLElement;
import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroker;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.ConferenceTestUtils;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.RoomType;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
@@ -50,13 +50,11 @@
PresenceStanzaType.UNAVAILABLE, null, status);
Stanza presenceStanza = stanzaBuilder.build();
- ResponseStanzaContainer container = handler.execute(presenceStanza, sessionContext.getServerRuntimeContext(),
- true, sessionContext, null, new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
- if (container != null) {
- return container.getUniqueResponseStanza();
- } else {
- return null;
- }
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
+ new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ handler.execute(presenceStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null,
+ stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
@Override
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java
new file mode 100644
index 0000000..d742af8
--- /dev/null
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.delivery.StanzaRelay;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
+import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.stanza.Stanza;
+
+/**
+ * @author Réda Housni Alaoui
+ */
+public class RecordingStanzaBroker implements StanzaBroker {
+
+ private final List<Stanza> stanzasWrittenToSession = new ArrayList<>();
+
+ private StanzaBroker delegate;
+
+ public RecordingStanzaBroker() {
+
+ }
+
+ public RecordingStanzaBroker(StanzaBroker delegate) {
+ this.delegate = delegate;
+ }
+
+ public Stanza getUniqueStanzaWrittenToSession() {
+ assertTrue(stanzasWrittenToSession.size() < 2);
+ return stanzasWrittenToSession.stream().findFirst().orElse(null);
+ }
+
+ public boolean hasStanzaWrittenToSession() {
+ return !stanzasWrittenToSession.isEmpty();
+ }
+
+ @Override
+ public void write(Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy)
+ throws DeliveryException {
+ if (delegate == null) {
+ return;
+ }
+
+ delegate.write(receiver, stanza, deliveryFailureStrategy);
+ }
+
+ @Override
+ public void writeToSession(Stanza stanza) {
+ stanzasWrittenToSession.add(stanza);
+ }
+}
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
index bb0ffde..4193130 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
@@ -19,6 +19,7 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
+import org.apache.vysper.RecordingStanzaBroker;
import org.apache.vysper.storage.OpenStorageProviderRegistry;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
@@ -29,7 +30,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionNodeInMemoryStorageProvider;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
import org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
@@ -151,9 +151,11 @@
*/
protected abstract AbstractStanzaGenerator getDefaultStanzaGenerator();
- protected ResponseStanzaContainer sendStanza(Stanza toSend, boolean isOutboundStanza) {
- return handler.execute(toSend, sessionContext.getServerRuntimeContext(), isOutboundStanza, sessionContext, null,
- new SimpleStanzaBroker(relay, sessionContext));
+ protected Stanza sendStanza(Stanza toSend, boolean isOutboundStanza) {
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ handler.execute(toSend, sessionContext.getServerRuntimeContext(), isOutboundStanza, sessionContext, null,
+ stanzaBroker);
+ return stanzaBroker.getUniqueStanzaWrittenToSession();
}
public void testSimpleStanza() {
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
index aed786a..72f3437 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
@@ -31,7 +31,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoInfoIQHandler;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -53,9 +52,9 @@
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator) getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123");
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
@@ -70,17 +69,21 @@
// at least we have an identity and a feature element
assertTrue(inner.size() >= 2);
- // ordering etc. is unknown; step through all subelements and pick the ones we need
+ // ordering etc. is unknown; step through all subelements and pick the ones we
+ // need
XMLElement identity = null;
XMLElement feature = null;
for (XMLElement el : inner) {
if (el.getName().equals("identity")
- //&& el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) // TODO enable when the parser is fixed
+ // && el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) //
+ // TODO enable when the parser is fixed
&& el.getAttributeValue("category").equals("pubsub")
&& el.getAttributeValue("type").equals("service")) {
identity = el;
} else if (el.getName().equals("feature")
- /*&& el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO)*/// TODO enable when the parser is fixed
+ /* && el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) */// TODO enable when
+ // the parser is
+ // fixed
&& el.getAttributeValue("var").equals(NamespaceURIs.XEP0060_PUBSUB)) {
feature = el;
}
@@ -97,9 +100,9 @@
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator) getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123", "news");
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
@@ -114,12 +117,15 @@
// at least we have an identity element
assertTrue(inner.size() >= 1);
- // ordering etc. is unknown; step through all subelements and pick the ones we need
+ // ordering etc. is unknown; step through all subelements and pick the ones we
+ // need
XMLElement identity = null;
for (XMLElement el : inner) {
if (el.getName().equals("identity")
- //&& el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) // TODO enable when the parser is fixed
- && el.getAttributeValue("category").equals("pubsub") && el.getAttributeValue("type").equals("leaf")) {
+ // && el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) //
+ // TODO enable when the parser is fixed
+ && el.getAttributeValue("category").equals("pubsub")
+ && el.getAttributeValue("type").equals("leaf")) {
identity = el;
}
}
@@ -135,7 +141,8 @@
XMLElement[] elementList = collectFeatures(inner, featuresList);
for (int idx = 0; idx < elementList.length; ++idx) {
- assertNotNull(featuresList[idx], elementList[idx]); // add a more descriptive error message if the test fails
+ assertNotNull(featuresList[idx], elementList[idx]); // add a more descriptive error message if the test
+ // fails
}
}
@@ -144,7 +151,8 @@
Arrays.sort(features);
for (XMLElement el : inner) {
if (el.getName().equals("feature"))
- /*&& el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO)*/{ // TODO enable when the parser is fixed
+ /* && el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) */ { // TODO enable when the
+ // parser is fixed
int index = Arrays.binarySearch(features, el.getAttributeValue("var"));
if (index != -1) {
elementList[index] = el;
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
index 4e00508..127cba6 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
@@ -31,7 +31,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoItemIQHandler;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
@@ -54,9 +53,9 @@
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator) getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123");
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
@@ -79,9 +78,9 @@
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator) getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123");
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
@@ -126,9 +125,9 @@
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator) getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123", "news");
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
@@ -167,9 +166,9 @@
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator) getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123", "news");
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
index 60c2dcd..d837eb7 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
@@ -25,7 +25,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -72,9 +71,9 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
@@ -90,9 +89,9 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
index 603cfec..9c9918c 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
@@ -28,9 +28,9 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.state.resourcebinding.BindException;
@@ -61,9 +61,9 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
node.subscribe("id", client);
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
@@ -95,12 +95,12 @@
assertEquals(3, node.countSubscriptions());
// publish a message
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id1", "news"), true);
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id1", "news"), true);
// verify response
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
@@ -125,16 +125,15 @@
DefaultPublishStanzaGenerator sg = new DefaultPublishStanzaGenerator();
Entity pubsubWrongNode = EntityImpl.parse("pubsub.vysper.org");
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubWrongNode, "id123", "doesnotexist"),
- true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubWrongNode, "id123", "doesnotexist"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
@@ -148,17 +147,16 @@
DefaultPublishStanzaGenerator sg = new DefaultPublishStanzaGenerator();
Entity yodaNotSubscribed = new EntityImpl("yoda", "vysper.org", "dagobah"); // yoda@vysper.org/dagobah
- ResponseStanzaContainer result = sendStanza(sg.getStanza(yodaNotSubscribed, pubsubService, "id123", "news"),
- true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(yodaNotSubscribed, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals(0, node.countSubscriptions(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("auth", error.getAttributeValue("type"));
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsTestCase.java
index e83ae80..2826436 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsTestCase.java
@@ -70,11 +70,11 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client2, pubsubService, "id123", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
assertEquals("affiliations", sub.getName());
@@ -85,11 +85,11 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "4711", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
assertEquals("affiliations", sub.getName());
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsTestCase.java
index 4e250ad..7e7b537 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsTestCase.java
@@ -25,7 +25,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -67,11 +66,11 @@
public void testNoSubscriptions() {
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "id123", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
assertEquals("subscriptions", sub.getName());
@@ -87,11 +86,11 @@
n3.subscribe("id126", client);
Stanza stanza = sg.getStanza(client, pubsubService, "4711", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
assertEquals("subscriptions", sub.getName());
@@ -107,11 +106,11 @@
n3.subscribe("id126", client);
Stanza stanza = sg.getStanza(client, pubsubService, "4711", "Node1");
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
assertEquals("subscriptions", sub.getName());
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
index c8cacb6..91866e1 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
@@ -28,7 +28,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -62,9 +61,9 @@
public void testSubscribe() throws Exception {
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertTrue(node.isSubscribed(client));
@@ -85,9 +84,9 @@
sg.overrideSubscriberJID(client.getFullQualifiedName());
Stanza stanza = sg.getStanza(null, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertTrue(node.isSubscribed(client));
@@ -107,15 +106,15 @@
DefaultSubscribeStanzaGenerator sg = new DefaultSubscribeStanzaGenerator();
sg.overrideSubscriberJID("someone@quite.dif/ferent");
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", testNode), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", testNode), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("modify", error.getAttributeValue("type"));
@@ -132,15 +131,15 @@
DefaultSubscribeStanzaGenerator sg = new DefaultSubscribeStanzaGenerator();
sg.overrideSubscriberJID("@@");
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", testNode), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", testNode), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("modify", error.getAttributeValue("type"));
@@ -154,16 +153,15 @@
DefaultSubscribeStanzaGenerator sg = new DefaultSubscribeStanzaGenerator();
Entity pubsubWrongNode = EntityImpl.parse("pubsub.vysper.org");
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubWrongNode, "id123", "doesnotexist"),
- true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubWrongNode, "id123", "doesnotexist"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
@@ -185,6 +183,7 @@
/**
* Use this method to force a different subscriber JID.
+ *
* @param jid
*/
public void overrideSubscriberJID(String jid) {
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
index 35a3e38..4ce2647 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
@@ -28,9 +28,9 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
/**
@@ -60,6 +60,7 @@
/**
* Use this method to force a different subscriber JID.
+ *
* @param jid
*/
public void overrideSubscriberJID(String jid) {
@@ -115,11 +116,11 @@
assertTrue(node.isSubscribed(client));
// unsubscribe via XMPP
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
// check subscription and response stanza
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertFalse(node.isSubscribed(client));
}
@@ -131,16 +132,16 @@
node.subscribe("subid1", client);
node.subscribe("subid2", client);
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertTrue(node.isSubscribed(client));
assertEquals(2, node.countSubscriptions(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("modify", error.getAttributeValue("type"));
@@ -157,16 +158,16 @@
DefaultUnsubscribeStanzaGenerator sg = new DefaultUnsubscribeStanzaGenerator();
assertFalse(node.isSubscribed(client));
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals(0, node.countSubscriptions(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
@@ -186,16 +187,16 @@
node.subscribe("subid1", EntityImpl.parse(yoda));
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals(0, node.countSubscriptions(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("auth", error.getAttributeValue("type"));
@@ -209,16 +210,15 @@
DefaultUnsubscribeStanzaGenerator sg = new DefaultUnsubscribeStanzaGenerator();
Entity pubsubWrongNode = new EntityImpl(null, "pubsub.vysper.org", null);
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubWrongNode, "id123", "doesnotexsist"),
- true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubWrongNode, "id123", "doesnotexsist"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
@@ -236,16 +236,16 @@
node.subscribe("subid1", client);
node.subscribe("subid2", client);
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertTrue(node.isSubscribed(client));
assertEquals(2, node.countSubscriptions(client)); // still 2 subscriptions
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("modify", error.getAttributeValue("type"));
@@ -262,15 +262,15 @@
DefaultUnsubscribeStanzaGenerator sg = new DefaultUnsubscribeStanzaGenerator();
sg.overrideSubscriberJID("@@");
- ResponseStanzaContainer result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(sg.getStanza(client, pubsubService, "id123", "news"), true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertFalse(node.isSubscribed(client));
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("modify", error.getAttributeValue("type"));
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
index 5d7cb0f..2b308cb 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
@@ -29,7 +29,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -86,9 +85,9 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
@@ -109,14 +108,14 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(clientNotAuthorized, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("auth", error.getAttributeValue("type"));
@@ -135,14 +134,14 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerModifyAffiliationsTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerModifyAffiliationsTestCase.java
index efe5502..c7fdf17 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerModifyAffiliationsTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerModifyAffiliationsTestCase.java
@@ -30,7 +30,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -74,16 +73,16 @@
AbstractStanzaGenerator sg = new DefaultModifyAffiliationsStanzaGenerator("Node1", client,
PubSubAffiliation.MEMBER);
Stanza stanza = sg.getStanza(client2, pubsubService, "id123", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("auth", error.getAttributeValue("type"));
@@ -100,14 +99,14 @@
AbstractStanzaGenerator sg = new DefaultModifyAffiliationsStanzaGenerator("test", client,
PubSubAffiliation.MEMBER);
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
@@ -125,11 +124,11 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "4711", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertEquals("4711", response.getAttributeValue("id")); // IDs must match
@@ -147,11 +146,11 @@
client2, PubSubAffiliation.NONE);
Stanza stanza = sg.getStanza(client, pubsubService, "4711", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
assertEquals("4711", response.getAttributeValue("id")); // IDs must match
@@ -165,20 +164,20 @@
assertEquals(PubSubAffiliation.MEMBER, n1.getAffiliation(client2));
assertEquals(PubSubAffiliation.NONE, n1.getAffiliation(client3));
- DefaultModifyAffiliationsStanzaGenerator sg = new DefaultModifyAffiliationsStanzaGenerator(n1.getName(),
- client, PubSubAffiliation.NONE);
+ DefaultModifyAffiliationsStanzaGenerator sg = new DefaultModifyAffiliationsStanzaGenerator(n1.getName(), client,
+ PubSubAffiliation.NONE);
Stanza stanza = sg.getStanza(client, pubsubService, "4711", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("4711", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("modify", error.getAttributeValue("type"));
assertEquals("not-acceptable", error.getFirstInnerElement().getName());
diff --git a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerRetrieveAffiliationsTestCase.java b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerRetrieveAffiliationsTestCase.java
index 12eaad0..96d3043 100644
--- a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerRetrieveAffiliationsTestCase.java
+++ b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerRetrieveAffiliationsTestCase.java
@@ -30,7 +30,6 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -70,16 +69,16 @@
AbstractStanzaGenerator sg = new DefaultRetrieveAffiliationsStanzaGenerator("Node1");
Stanza stanza = sg.getStanza(client2, pubsubService, "id123", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("auth", error.getAttributeValue("type"));
@@ -95,14 +94,14 @@
AbstractStanzaGenerator sg = new DefaultRetrieveAffiliationsStanzaGenerator("test");
Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
- ResponseStanzaContainer result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ Stanza result = sendStanza(stanza, true);
+ assertNotNull(result);
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.ERROR.value(), response.getType());
assertEquals("id123", response.getAttributeValue("id")); // IDs must match
- XMLElement error = response.getInnerElementsNamed("error").get(0); //jump directly to the error part
+ XMLElement error = response.getInnerElementsNamed("error").get(0); // jump directly to the error part
assertEquals("error", error.getName());
assertEquals("cancel", error.getAttributeValue("type"));
@@ -116,11 +115,11 @@
AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService, "4711", null);
- ResponseStanzaContainer result = sendStanza(stanza, true);
+ Stanza result = sendStanza(stanza, true);
- assertTrue(result.hasResponse());
+ assertNotNull(result);
- IQStanza response = new IQStanza(result.getUniqueResponseStanza());
+ IQStanza response = new IQStanza(result);
assertEquals(IQStanzaType.RESULT.value(), response.getType());
XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
assertEquals("affiliations", sub.getName());