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());
+    }
+}


Reply via email to