Author: ngn
Date: Tue Jul 14 22:11:14 2009
New Revision: 794090
URL: http://svn.apache.org/viewvc?rev=794090&view=rev
Log:
Fixing bug where we included the wrapper element in error responses (VYSPER-98)
Added:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/server/response/ServerErrorResponsesTestCase.java
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java?rev=794090&r1=794089&r2=794090&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
(original)
+++
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
Tue Jul 14 22:11:14 2009
@@ -112,7 +112,9 @@
private void fillErrorStanza(XMPPCoreStanza stanza, StanzaErrorType type,
StanzaErrorCondition errorCondition, String errorText, String errorLang,
XMLElement errorConditionElement, StanzaBuilder responseBuilder) {
// inline incoming stanza as of RFC 3920 9.3.1
- responseBuilder.addPreparedElement(stanza);
+ for(XMLElement innerElement : stanza.getInnerElements()) {
+ responseBuilder.addPreparedElement(innerElement);
+ }
// error element
responseBuilder.startInnerElement("error")
Added:
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/server/response/ServerErrorResponsesTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/server/response/ServerErrorResponsesTestCase.java?rev=794090&view=auto
==============================================================================
---
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/server/response/ServerErrorResponsesTestCase.java
(added)
+++
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/server/response/ServerErrorResponsesTestCase.java
Tue Jul 14 22:11:14 2009
@@ -0,0 +1,80 @@
+/*
+ * 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.server.response;
+
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.vysper.xmpp.parser.ParsingException;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
+import org.apache.vysper.xmpp.stanza.StanzaErrorType;
+import org.apache.vysper.xmpp.xmlfragment.Renderer;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+
+/**
+ */
+public class ServerErrorResponsesTestCase extends TestCase {
+
+ private static final String SERVER_JID = "vysper.org";
+ private static final String CLIENT_JID = "[email protected]/test";
+
+ public void testStanzaError() throws ParsingException {
+ StanzaBuilder builder = new StanzaBuilder("iq");
+ builder.addAttribute("to", SERVER_JID);
+ builder.addAttribute("from", CLIENT_JID);
+ builder.startInnerElement("ping", NamespaceURIs.URN_XMPP_PING);
+ builder.endInnerElement();
+
+ Stanza request = builder.getFinalStanza();
+ IQStanza requestIq = new IQStanza(request);
+
+ ServerErrorResponses serverErrorResponses =
ServerErrorResponses.getInstance();
+
+ Stanza errorReply =
serverErrorResponses.getStanzaError(StanzaErrorCondition.SERVICE_UNAVAILABLE,
+ requestIq, StanzaErrorType.CANCEL, "Test", "en", null);
+ assertEquals("error", errorReply.getAttributeValue("type"));
+ assertEquals(SERVER_JID, errorReply.getAttributeValue("from"));
+ assertEquals(CLIENT_JID, errorReply.getAttributeValue("to"));
+
+ List<XMLElement> children = errorReply.getInnerElements();
+
+ XMLElement pingElm = children.get(0);
+ assertEquals("ping", pingElm.getName());
+ assertEquals(NamespaceURIs.URN_XMPP_PING, pingElm.getNamespaceURI());
+
+ XMLElement errorElm = children.get(1);
+ assertEquals("error", errorElm.getName());
+ assertEquals(StanzaErrorType.CANCEL.value(),
errorElm.getAttributeValue("type"));
+
+ XMLElement errorTypeElm = errorElm.getInnerElements().get(0);
+ assertEquals(StanzaErrorCondition.SERVICE_UNAVAILABLE.value(),
errorTypeElm.getName());
+
+ XMLElement textElm = errorElm.getInnerElements().get(1);
+ assertEquals("text", textElm.getName());
+ assertEquals("en", textElm.getXMLLang());
+ assertEquals("Test", textElm.getFirstInnerText().getText());
+ }
+}