You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by be...@apache.org on 2007/06/13 10:14:06 UTC

svn commit: r546772 - in /labs/vysper/src: main/java/org/apache/vysper/xmpp/protocol/ main/java/org/apache/vysper/xmpp/server/ test/java/org/apache/vysper/xmpp/parser/ test/java/org/apache/vysper/xmpp/protocol/

Author: berndf
Date: Wed Jun 13 01:14:05 2007
New Revision: 546772

URL: http://svn.apache.org/viewvc?view=rev&rev=546772
Log:
[vysper] more tests on pre-authenticated session states

Added:
    labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/AbstractStreamParserTestCase.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptedTestCase.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptionStartedTestCase.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiatedTestCase.java
      - copied, changed from r542950, labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiationTestCase.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStartedTestCase.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java
Removed:
    labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiationTestCase.java
Modified:
    labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
    labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
    labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/StringStreamParserTestCase.java

Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java?view=diff&rev=546772&r1=546771&r2=546772
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java Wed Jun 13 01:14:05 2007
@@ -77,12 +77,16 @@
     }
 
     private StanzaHandler getIQHandler(Stanza stanza) {
-        if (!stanza.getVerifier().subElementsPresentExact(1)) {
-            return iqHandler; // cannot identify specialized handler, return general handler
-        }
 
-        XMLElement firstInnerElement = stanza.getFirstInnerElement();
-        StanzaHandler handlerForElement = getHandlerForElement(stanza, firstInnerElement);
+        StanzaHandler handlerForElement = null;
+        
+        if (stanza.getVerifier().subElementsPresentExact(1)) {
+            XMLElement firstInnerElement = stanza.getFirstInnerElement();
+            handlerForElement = getHandlerForElement(stanza, firstInnerElement);
+        } else {
+            // if no specialized handler can be identified, return general handler
+            return iqHandler;
+        }
 
         return handlerForElement;
     }

Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java?view=diff&rev=546772&r1=546771&r2=546772
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java Wed Jun 13 01:14:05 2007
@@ -17,21 +17,20 @@
 
 package org.apache.vysper.xmpp.server;
 
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.protocol.StanzaHandlerLookup;
 import org.apache.vysper.xmpp.stanza.Stanza;
-import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.delivery.StanzaRelay;
 
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.UUID;
 
 /**
  */
 public class DefaultServerRuntimeContext implements ServerRuntimeContext {
 
     private StanzaHandlerLookup stanzaHandlerLookup = new StanzaHandlerLookup();
-    private AtomicInteger sessionIdCounter = new AtomicInteger(1);
     private Entity serverEntity;
     private StanzaRelay stanzaRelay;
 
@@ -45,8 +44,9 @@
     }
 
     public String getNextSessionId() {
-        // TODO session ID must be truely random
-        return "vysperSession" + sessionIdCounter.getAndIncrement();
+        // generates UUID-type 4, pseudo random session id
+        // is this random enough?
+        return UUID.randomUUID().toString();
     }
 
     public Entity getServerEnitity() {

Added: labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/AbstractStreamParserTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/AbstractStreamParserTestCase.java?view=auto&rev=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/AbstractStreamParserTestCase.java (added)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/AbstractStreamParserTestCase.java Wed Jun 13 01:14:05 2007
@@ -0,0 +1,186 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation.             *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed 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.parser;
+
+import junit.framework.TestCase;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+import org.apache.vysper.xmpp.xmlfragment.Attribute;
+import org.apache.vysper.xmpp.xmlfragment.XMLFragment;
+import org.apache.vysper.xmpp.xmlfragment.XMLText;
+
+import java.util.List;
+
+/**
+ * testing all implementations of StreamParser
+ * @see org.apache.vysper.xmpp.parser.StreamParser
+ */
+public abstract class AbstractStreamParserTestCase extends TestCase {
+
+    /**
+     * creates the StreamParser implementation to be tested.
+     * it must parse the provided xml string
+     */
+    protected abstract StreamParser createStreamParser(String xml);
+
+    /**
+     * convinience method to create the tested stream parser and
+     * only return the first stanza from the given xml
+     */
+    protected abstract Stanza getFirstStanzaFromXML(String xml) throws ParsingException;
+
+    public void testSimple() throws ParsingException {
+        Stanza stanza = getFirstStanzaFromXML("<test>leeklf</test>");
+        assertEquals("stanza simple text", "test", stanza.getName());
+        assertNotNull("empty attr", stanza.getAttributes());
+        assertEquals("zero attr", 0, stanza.getAttributes().size());
+
+        stanza = getFirstStanzaFromXML("<test2/><next>...");
+        assertEquals("stanza simple text2", "test2", stanza.getName());
+    }
+
+    public void testSequenceOfTwo() throws ParsingException {
+        assertSequenceOfTwo("<test_uno>payload_1</test_uno><test_due>payload_2</test_due>");
+        assertSequenceOfTwo("<test_uno><inner><inner_x></inner_x>payload_1</inner></test_uno><test_due><inner/>payload_2</test_due>");
+    }
+
+    public void testSequenceOfTwo_RestrictedXML() throws ParsingException {
+        // restricted XML must be ignored (RFC3920 section 11.1)
+        assertSequenceOfTwo("<test_uno></test_uno>NOT ALLOWED TEXT BETWEEN STANZAS<test_due></test_due>");
+        assertSequenceOfTwo("<test_uno></test_uno><!--NOT ALLOWED COMMENT BETWEEN STANZAS --><test_due></test_due>");
+    }
+
+    private void assertSequenceOfTwo(String xml) throws ParsingException {
+        StreamParser stringStreamParser = createStreamParser(xml);
+        Stanza stanza = stringStreamParser.getNextStanza();
+        assertEquals("stanza 1", "test_uno", stanza.getName());
+        stanza = stringStreamParser.getNextStanza();
+        assertEquals("stanza 2", "test_due", stanza.getName());
+        stanza = stringStreamParser.getNextStanza();
+        assertNull("stanza 3 not existing", stanza);
+    }
+
+    public void testBalancedElements() throws ParsingException {
+        getFirstStanzaFromXML("<test>leeklf</test>");
+
+        getFirstStanzaFromXML("<test>leeklf<inner></inner></test>");
+
+        getFirstStanzaFromXML("<test>leeklf<inner/></test>");
+
+        try {
+            getFirstStanzaFromXML("<test>leeklf<inner></test>");
+            fail("must raise exception");
+        } catch (Exception e) {
+            // fall thru
+        }
+
+        Stanza stanza = getFirstStanzaFromXML("<test>leeklf<test></test></test>");
+        assertEquals("inners", 2, stanza.getInnerFragments().size());
+        assertEquals("inner w/same name", "test", ((XMLElement) stanza.getInnerFragments().get(1)).getName());
+    }
+
+    public void testAttributes() throws ParsingException {
+        String xml = "<testAttr at1=\"av1\" at2=\"av2\" />";
+        Stanza stanza = getFirstStanzaFromXML(xml);
+        assertEquals("attributes length", 2, stanza.getAttributes().size());
+        assertEquals("stanza name", "testAttr", stanza.getName());
+        List<Attribute> attributes = stanza.getAttributes();
+
+        // inner attribues are immutable
+        int size = attributes.size();
+        try {
+            attributes.add(new Attribute("not", "insertable"));
+            fail("attributes should be immutable");
+        } catch (UnsupportedOperationException e) {
+            // succeeded
+        }
+        assertEquals("nothing inserted", size, attributes.size());
+
+        assertEquals("a1", "at1", attributes.get(0).getName());
+        assertEquals("a1", "av1", attributes.get(0).getValue());
+        assertEquals("a2", "at2", attributes.get(1).getName());
+        assertEquals("a2", "av2", attributes.get(1).getValue());
+        try {
+            attributes.add(new Attribute("unmodName", "unmodValue"));
+            fail("could modify mutual attribute list");
+        } catch (UnsupportedOperationException e) {
+            // fall through
+        }
+    }
+
+    public void testNestedFragments() throws ParsingException {
+        String xml = "<test_uno><inner><inner_x></inner_x>payload_1</inner>payload_2</test_uno>";
+        Stanza stanza = getFirstStanzaFromXML(xml);
+
+        List<XMLFragment> innerFragments = stanza.getInnerFragments();
+
+        // inner frags are immutable
+        int size = innerFragments.size();
+        try {
+            innerFragments.add(new XMLText("not insertable"));
+            fail("fragments should be immutable");
+        } catch (UnsupportedOperationException e) {
+            // succeeded
+        }
+        assertEquals("nothing inserted", size, innerFragments.size());
+
+        XMLFragment xmlFragment = innerFragments.get(0);
+        assertInnerXMLElement(xmlFragment, "inner", 2);
+
+        XMLFragment xmlFragmentDeep = ((XMLElement)xmlFragment).getInnerFragments().get(0);
+        assertInnerXMLElement(xmlFragmentDeep, "inner_x", 0);
+
+        xmlFragment = innerFragments.get(1);
+        assertInnerTextElement(xmlFragment, "payload_2");
+
+    }
+
+    private void assertInnerTextElement(XMLFragment xmlFragment, String text) {
+        assertTrue(xmlFragment instanceof XMLText);
+        XMLText xmlText = ((XMLText) xmlFragment);
+        assertEquals("text", text, xmlText.getText());
+    }
+
+    private void assertInnerXMLElement(XMLFragment xmlFragment, String elementName, int numberOfSubelements) {
+        assertTrue(xmlFragment instanceof XMLElement);
+        XMLElement xmlElement = ((XMLElement) xmlFragment);
+        assertEquals("elementName", elementName, xmlElement.getName());
+        assertEquals("subelements", numberOfSubelements, xmlElement.getInnerFragments().size());
+    }
+
+    public void testStartStanza() throws ParsingException {
+        String sequence = "<stream:stream\n" +
+                            "    to='example.com'\n" +
+                            "    xmlns='jabber:client'\n" +
+                            "    xmlns:stream='http://etherx.jabber.org/streams'\n" +
+                            "    version='1.0' />";
+        Stanza stanza = getFirstStanzaFromXML(sequence);
+        String name = stanza.getName();
+        assertEquals("name", "stream", name);
+    }
+
+    public void testXMLHeader() throws ParsingException {
+        String xml =
+        "<?xml version='1.0'?><stream:stream from='example.com' id='someid' " +
+        " xmlns='jabber:client'" +
+        " xmlns:stream='http://etherx.jabber.org/streams' version='1.0' />";
+
+        
+        Stanza stanza = getFirstStanzaFromXML(xml);
+        assertEquals("stream start", "stream", stanza.getName());
+    }
+}

Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/StringStreamParserTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/StringStreamParserTestCase.java?view=diff&rev=546772&r1=546771&r2=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/StringStreamParserTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/parser/StringStreamParserTestCase.java Wed Jun 13 01:14:05 2007
@@ -18,164 +18,17 @@
 package org.apache.vysper.xmpp.parser;
 
 import org.apache.vysper.xmpp.stanza.Stanza;
-import org.apache.vysper.xmpp.xmlfragment.Attribute;
-import org.apache.vysper.xmpp.xmlfragment.XMLElement;
-import org.apache.vysper.xmpp.xmlfragment.XMLFragment;
-import org.apache.vysper.xmpp.xmlfragment.XMLText;
-import junit.framework.TestCase;
 
-import java.util.List;
+public class StringStreamParserTestCase extends AbstractStreamParserTestCase {
 
-/* TODO use this test to test ALL StreamParser implementations */
-public class StringStreamParserTestCase extends TestCase {
-
-    private Stanza getFirstStanzaFromXML(String xml) throws ParsingException {
-        StringStreamParser stringStreamParser = new StringStreamParser(xml);
-        return stringStreamParser.getNextStanza();
-    }
-
-    public void testSimple() throws ParsingException {
-        Stanza stanza = getFirstStanzaFromXML("<test>leeklf</test>");
-        assertEquals("stanza simple text", "test", stanza.getName());
-        assertNotNull("empty attr", stanza.getAttributes());
-        assertEquals("zero attr", 0, stanza.getAttributes().size());
-
-        stanza = getFirstStanzaFromXML("<test2/><next>...");
-        assertEquals("stanza simple text2", "test2", stanza.getName());
-    }
-
-    public void testSequenceOfTwo() throws ParsingException {
-        assertSequenceOfTwo("<test_uno>payload_1</test_uno><test_due>payload_2</test_due>");
-        assertSequenceOfTwo("<test_uno><inner><inner_x></inner_x>payload_1</inner></test_uno><test_due><inner/>payload_2</test_due>");
-    }
-
-    public void testSequenceOfTwo_RestrictedXML() throws ParsingException {
-        // restricted XML must be ignored (RFC3920 section 11.1)
-        assertSequenceOfTwo("<test_uno></test_uno>NOT ALLOWED TEXT BETWEEN STANZAS<test_due></test_due>");
-        assertSequenceOfTwo("<test_uno></test_uno><!--NOT ALLOWED COMMENT BETWEEN STANZAS --><test_due></test_due>");
-    }
-
-    private void assertSequenceOfTwo(String xml) throws ParsingException {
-        StringStreamParser stringStreamParser = new StringStreamParser(xml);
-        Stanza stanza = stringStreamParser.getNextStanza();
-        assertEquals("stanza 1", "test_uno", stanza.getName());
-        stanza = stringStreamParser.getNextStanza();
-        assertEquals("stanza 2", "test_due", stanza.getName());
-        stanza = stringStreamParser.getNextStanza();
-        assertNull("stanza 3 not existing", stanza);
+    protected Stanza getFirstStanzaFromXML(String xml) throws ParsingException {
+        StreamParser streamParser = createStreamParser(xml);
+        return streamParser.getNextStanza();
     }
 
-    public void testBalancedElements() throws ParsingException {
-        getFirstStanzaFromXML("<test>leeklf</test>");
-
-        getFirstStanzaFromXML("<test>leeklf<inner></inner></test>");
-
-        getFirstStanzaFromXML("<test>leeklf<inner/></test>");
-
-        try {
-            getFirstStanzaFromXML("<test>leeklf<inner></test>");
-            fail("must raise exception");
-        } catch (Exception e) {
-            // fall thru
-        }
-
-        Stanza stanza = getFirstStanzaFromXML("<test>leeklf<test></test></test>");
-        assertEquals("inners", 2, stanza.getInnerFragments().size());
-        assertEquals("inner w/same name", "test", ((XMLElement) stanza.getInnerFragments().get(1)).getName());
-    }
-
-    public void testAttributes() throws ParsingException {
-        StringStreamParser stringStreamParser = new StringStreamParser("<testAttr at1=\"av1\" at2=\"av2\" />");
-        Stanza stanza = stringStreamParser.getNextStanza();
-        assertEquals("attributes length", 2, stanza.getAttributes().size());
-        assertEquals("stanza name", "testAttr", stanza.getName());
-        List<Attribute> attributes = stanza.getAttributes();
-
-        // inner attribues are immutable
-        int size = attributes.size();
-        try {
-            attributes.add(new Attribute("not", "insertable"));
-            fail("attributes should be immutable");
-        } catch (java.lang.UnsupportedOperationException e) {
-            // succeeded
-        }
-        assertEquals("nothing inserted", size, attributes.size());
-
-        assertEquals("a1", "at1", attributes.get(0).getName());
-        assertEquals("a1", "av1", attributes.get(0).getValue());
-        assertEquals("a2", "at2", attributes.get(1).getName());
-        assertEquals("a2", "av2", attributes.get(1).getValue());
-        try {
-            attributes.add(new Attribute("unmodName", "unmodValue"));
-            fail("could modify mutual attribute list");
-        } catch (UnsupportedOperationException e) {
-            // fall through
-        }
+    protected StreamParser createStreamParser(String xml) {
+        return new StringStreamParser(xml);
     }
 
-    public void testNestedFragments() throws ParsingException {
-        StringStreamParser stringStreamParser = new StringStreamParser("<test_uno><inner><inner_x></inner_x>payload_1</inner>payload_2</test_uno>");
-        Stanza stanza = stringStreamParser.getNextStanza();
-
-        List<XMLFragment> innerFragments = stanza.getInnerFragments();
-
-        // inner frags are immutable
-        int size = innerFragments.size();
-        try {
-            innerFragments.add(new XMLText("not insertable"));
-            fail("fragments should be immutable");
-        } catch (java.lang.UnsupportedOperationException e) {
-            // succeeded
-        }
-        assertEquals("nothing inserted", size, innerFragments.size());
-
-        XMLFragment xmlFragment = innerFragments.get(0);
-        assertInnerXMLElement(xmlFragment, "inner", 2);
-
-        XMLFragment xmlFragmentDeep = ((XMLElement)xmlFragment).getInnerFragments().get(0);
-        assertInnerXMLElement(xmlFragmentDeep, "inner_x", 0);
-
-        xmlFragment = innerFragments.get(1);
-        assertInnerTextElement(xmlFragment, "payload_2");
-
-    }
-
-    private void assertInnerTextElement(XMLFragment xmlFragment, String text) {
-        assertTrue(xmlFragment instanceof XMLText);
-        XMLText xmlText = ((XMLText) xmlFragment);
-        assertEquals("text", text, xmlText.getText());
-    }
-
-    private void assertInnerXMLElement(XMLFragment xmlFragment, String elementName, int numberOfSubelements) {
-        assertTrue(xmlFragment instanceof XMLElement);
-        XMLElement xmlElement = ((XMLElement) xmlFragment);
-        assertEquals("elementName", elementName, xmlElement.getName());
-        assertEquals("subelements", numberOfSubelements, xmlElement.getInnerFragments().size());
-    }
-
-
-    public void testStartStanza() throws ParsingException {
-        StringStreamParser stringStreamParser =
-                new StringStreamParser(
-                        "<stream:stream\n" +
-                        "    to='example.com'\n" +
-                        "    xmlns='jabber:client'\n" +
-                        "    xmlns:stream='http://etherx.jabber.org/streams'\n" +
-                        "    version='1.0' />");
-        Stanza stanza = stringStreamParser.getNextStanza();
-        String name = stanza.getName();
-        assertEquals("name", "stream", name);
-    }
-
-    public void testXMLHeader() throws ParsingException {
-        String xml =
-        "<?xml version='1.0'?><stream:stream from='example.com' id='someid' " +
-        " xmlns='jabber:client'" +
-        " xmlns:stream='http://etherx.jabber.org/streams' version='1.0' />";
-
-        StringStreamParser stringStreamParser = new StringStreamParser(xml);
-        Stanza stanza = stringStreamParser.getNextStanza();
-        assertEquals("stream start", "stream", stanza.getName());
-    }
 
 }

Added: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptedTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptedTestCase.java?view=auto&rev=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptedTestCase.java (added)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptedTestCase.java Wed Jun 13 01:14:05 2007
@@ -0,0 +1,40 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation.             *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed 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 org.apache.vysper.xmpp.server.SessionState;
+
+/**
+ * test bevahior for "ENCRYPTED" session state
+ */
+public class ProtocolEncryptedTestCase extends ProtocolStateTestCase {
+
+    protected SessionState getDefaultState() {
+        return SessionState.ENCRYPTED;
+    }
+
+    public void testDontAcceptIQStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptIQStanzaWhileNotAuthenticated();
+    }
+
+    public void testDontAcceptArbitraryStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptArbitraryStanzaWhileNotAuthenticated();
+    }
+
+
+}
\ No newline at end of file

Added: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptionStartedTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptionStartedTestCase.java?view=auto&rev=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptionStartedTestCase.java (added)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolEncryptionStartedTestCase.java Wed Jun 13 01:14:05 2007
@@ -0,0 +1,40 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation.             *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed 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 org.apache.vysper.xmpp.server.SessionState;
+
+/**
+ * test bevahior for "ENCRYPTION_STARTED" session state
+ */
+public class ProtocolEncryptionStartedTestCase extends ProtocolStateTestCase {
+
+    protected SessionState getDefaultState() {
+        return SessionState.ENCRYPTION_STARTED;
+    }
+
+    public void testDontAcceptIQStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptIQStanzaWhileNotAuthenticated();
+    }
+
+    public void testDontAcceptArbitraryStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptArbitraryStanzaWhileNotAuthenticated();
+    }
+
+
+}
\ No newline at end of file

Copied: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiatedTestCase.java (from r542950, labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiationTestCase.java)
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiatedTestCase.java?view=diff&rev=546772&p1=labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiationTestCase.java&r1=542950&p2=labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiatedTestCase.java&r2=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiationTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolInitiatedTestCase.java Wed Jun 13 01:14:05 2007
@@ -17,41 +17,17 @@
 
 package org.apache.vysper.xmpp.protocol;
 
-import org.apache.vysper.xmpp.addressing.EntityImpl;
-import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.applicationdomains.base.handler.BaseStreamStanzaDictionary;
-import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionState;
-import org.apache.vysper.xmpp.server.TestSessionContext;
 import org.apache.vysper.xmpp.server.XMPPVersion;
 import org.apache.vysper.xmpp.server.response.ServerResponses;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
-import org.apache.vysper.xmpp.delivery.StanzaRelayImpl;
-import junit.framework.TestCase;
 
 /**
  * test session initiation bevahior
  */
-public class ProtocolInitiationTestCase extends TestCase {
-    private ProtocolWorker protocolWorker;
-    private DefaultServerRuntimeContext serverRuntimeContext;
-    private TestSessionContext sessionContext;
-
-    private static Entity serverEnitity = new EntityImpl(null, "vysper-server.org", null);
-    private EntityImpl testFrom  = new EntityImpl("testuser", "vysper.org", null);
-    private SessionStateHolder sessionStateHolder;
-
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        protocolWorker = new ProtocolWorker();
-        serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, new StanzaRelayImpl());
-        serverRuntimeContext.addDictionary(new BaseStreamStanzaDictionary());
-        sessionStateHolder = new SessionStateHolder();
-        sessionContext = new TestSessionContext(serverRuntimeContext, sessionStateHolder);
-    }
+public class ProtocolInitiatedTestCase extends ProtocolStateTestCase {
 
     public void testProcessClientCanonicalStreamOpeningResponse() {
 
@@ -65,20 +41,23 @@
         assertTrue(responseVerifier.attributeEquals("xml:lang", "fr"));
 
         assertTrue("initiated => started", sessionContext.getState() == SessionState.STARTED);
-
     }
 
     public void testProcessClientStreamOpeningResponse_XMLLang_fr() {
 
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         // french in, french returned
         checkLanguage("fr");
     }
 
+    protected SessionState getDefaultState() {
+        return SessionState.INITIATED;
+    }
+
     public void testProcessClientStreamOpeningResponse_XMLLang_null() {
 
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         // no lang in, no lang returned
         checkLanguage(null);
@@ -86,30 +65,14 @@
 
     public void testProcessClientStreamOpeningResponse_XMLLang_enUS() {
 
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         // US-english in, US-english returned
         checkLanguage("en_US");
     }
 
-    private void checkLanguage(String xmlLang) {
-        Stanza stanza;
-        Stanza recordedResponse;
-        XMLElementVerifier responseVerifier;
-        stanza = new ServerResponses().getStreamOpener(true, testFrom, xmlLang, XMPPVersion.VERSION_1_0, null);
-        protocolWorker.processStanza(sessionContext, stanza, sessionStateHolder);
-
-        recordedResponse = sessionContext.getRecordedResponse();
-        responseVerifier = recordedResponse.getVerifier();
-        if (xmlLang == null) {
-            assertFalse(responseVerifier.attributePresent("xml:lang"));
-        } else {
-            assertTrue(responseVerifier.attributeEquals("xml:lang", xmlLang));
-        }
-    }
-
-    private void openClientSession() {
-        sessionContext.setSessionState(SessionState.INITIATED);
+    protected void openClientSession() {
+        sessionContext.setSessionState(getDefaultState());
         Stanza stanza = new ServerResponses().getStreamOpener(true,
                                                               testFrom,
                                                               sessionContext.getXMLLang(),
@@ -118,7 +81,7 @@
     }
 
     public void testProcessClientStreamOpeningResponse_Version_1_0() {
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         XMPPVersion versionSent = XMPPVersion.VERSION_1_0;
         Stanza response = getVersionResponse(versionSent);
@@ -130,7 +93,7 @@
     }
 
     public void testProcessClientStreamOpeningResponse_NoVersion() {
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         XMPPVersion versionSent = null;
         Stanza response = getVersionResponse(versionSent);
@@ -141,7 +104,7 @@
     }
 
     public void testProcessClientStreamOpeningResponse_Version_1_1() {
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         XMPPVersion versionSent = new XMPPVersion(1, 1);
         Stanza response = getVersionResponse(versionSent);
@@ -151,8 +114,8 @@
         assertFalse("no error", responseVerifier.subElementPresent("error"));
     }
 
-    private class IllegalXMPPVersion extends XMPPVersion {
-        private String versionString;
+    protected class IllegalXMPPVersion extends XMPPVersion {
+        protected String versionString;
 
         public IllegalXMPPVersion(String version) {
             versionString = version;
@@ -164,28 +127,28 @@
     }
 
     public void testProcessClientStreamOpeningResponse_IllegalVersion() {
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         XMPPVersion versionSent = new IllegalXMPPVersion("IllV1.0");
         Stanza response = getVersionResponse(versionSent);
 
         XMLElementVerifier responseVerifier = response.getVerifier();
         assertTrue(responseVerifier.nameEquals("error"));
-        assertTrue("error", responseVerifier.subElementPresent("unsupported-version"));
+        assertTrue("error", responseVerifier.subElementPresent(StreamErrorCondition.UNSUPPORTED_VERSION.value()));
     }
 
     public void testProcessClientStreamOpeningResponse_Version_2_0() {
-        sessionContext.setSessionState(SessionState.INITIATED);
+        sessionContext.setSessionState(getDefaultState());
 
         XMPPVersion versionSent = new XMPPVersion(2, 0);
         Stanza response = getVersionResponse(versionSent);
 
         XMLElementVerifier responseVerifier = response.getVerifier();
         assertTrue(responseVerifier.nameEquals("error"));
-        assertTrue("error", responseVerifier.subElementPresent("unsupported-version"));
+        assertTrue("error", responseVerifier.subElementPresent(StreamErrorCondition.UNSUPPORTED_VERSION.value()));
     }
 
-    private Stanza getVersionResponse(XMPPVersion versionSent) {
+    protected Stanza getVersionResponse(XMPPVersion versionSent) {
         Stanza stanza = new ServerResponses().getStreamOpener(true, testFrom, null, versionSent, null);
         protocolWorker.processStanza(sessionContext, stanza, sessionStateHolder);
 
@@ -203,8 +166,17 @@
         Stanza response = sessionContext.getRecordedResponse();
         XMLElementVerifier responseVerifier = response.getVerifier();
         assertTrue(responseVerifier.nameEquals("error"));
-        assertTrue("error", responseVerifier.subElementPresent("invalid-namespace"));
+        assertTrue("error", responseVerifier.subElementPresent(StreamErrorCondition.INVALID_NAMESPACE.value()));
+
+    }
+    
+    public void testDontAcceptIQStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptIQStanzaWhileNotAuthenticated();
+    }
 
+    public void testDontAcceptArbitraryStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptArbitraryStanzaWhileNotAuthenticated();
     }
+
 
 }

Added: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStartedTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStartedTestCase.java?view=auto&rev=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStartedTestCase.java (added)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStartedTestCase.java Wed Jun 13 01:14:05 2007
@@ -0,0 +1,40 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation.             *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed 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 org.apache.vysper.xmpp.server.SessionState;
+
+/**
+ * test bevahior for "STARTED" session state
+ */
+public class ProtocolStartedTestCase extends ProtocolStateTestCase {
+
+    protected SessionState getDefaultState() {
+        return SessionState.STARTED;
+    }
+
+    public void testDontAcceptIQStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptIQStanzaWhileNotAuthenticated();
+    }
+
+    public void testDontAcceptArbitraryStanzaWhileNotAuthenticated() {
+        skeleton_testDontAcceptArbitraryStanzaWhileNotAuthenticated();
+    }
+
+
+}
\ No newline at end of file

Added: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java?view=auto&rev=546772
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java (added)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java Wed Jun 13 01:14:05 2007
@@ -0,0 +1,106 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation.             *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed 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 junit.framework.TestCase;
+import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
+import org.apache.vysper.xmpp.server.TestSessionContext;
+import org.apache.vysper.xmpp.server.XMPPVersion;
+import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.server.response.ServerResponses;
+import org.apache.vysper.xmpp.delivery.StanzaRelayImpl;
+import org.apache.vysper.xmpp.applicationdomains.base.handler.BaseStreamStanzaDictionary;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+
+/**
+ */
+public abstract class ProtocolStateTestCase extends TestCase {
+    protected ProtocolWorker protocolWorker;
+    protected DefaultServerRuntimeContext serverRuntimeContext;
+    protected TestSessionContext sessionContext;
+    protected static Entity serverEnitity = new EntityImpl(null, "vysper-server.org", null);
+    protected EntityImpl testFrom  = new EntityImpl("testuser", "vysper.org", null);
+    protected SessionStateHolder sessionStateHolder;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        protocolWorker = new ProtocolWorker();
+        serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, new StanzaRelayImpl());
+        serverRuntimeContext.addDictionary(new BaseStreamStanzaDictionary());
+        sessionStateHolder = new SessionStateHolder();
+        sessionContext = new TestSessionContext(serverRuntimeContext, sessionStateHolder);
+        sessionContext.setSessionState(getDefaultState());
+    }
+
+    protected void checkLanguage(String xmlLang) {
+        Stanza stanza;
+        Stanza recordedResponse;
+        XMLElementVerifier responseVerifier;
+        stanza = new ServerResponses().getStreamOpener(true, testFrom, xmlLang, XMPPVersion.VERSION_1_0, null);
+        protocolWorker.processStanza(sessionContext, stanza, sessionStateHolder);
+
+        recordedResponse = sessionContext.getRecordedResponse();
+        responseVerifier = recordedResponse.getVerifier();
+        if (xmlLang == null) {
+            assertFalse(responseVerifier.attributePresent("xml:lang"));
+        } else {
+            assertTrue(responseVerifier.attributeEquals("xml:lang", xmlLang));
+        }
+    }
+
+    protected abstract SessionState getDefaultState();
+
+    /**
+     * call from a test method in subclass
+     */
+    protected void skeleton_testDontAcceptIQStanzaWhileNotAuthenticated() {
+        StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
+        stanzaBuilder.addAttribute("id", "1");
+        stanzaBuilder.addAttribute("type", "get");
+
+        protocolWorker.processStanza(sessionContext, stanzaBuilder.getFinalStanza(), sessionStateHolder);
+
+        Stanza response = sessionContext.getRecordedResponse();
+        XMLElementVerifier responseVerifier = response.getVerifier();
+        assertTrue(responseVerifier.nameEquals("error"));
+        assertTrue("error", responseVerifier.subElementPresent(StreamErrorCondition.NOT_AUTHORIZED.value()));
+        assertTrue(sessionContext.isClosed());
+    }
+
+
+    /**
+     * call from a test method in subclass
+     */
+    protected void skeleton_testDontAcceptArbitraryStanzaWhileNotAuthenticated() {
+        StanzaBuilder stanzaBuilder = new StanzaBuilder("arbitrary", NamespaceURIs.JABBER_CLIENT);
+        stanzaBuilder.addAttribute("id", "1");
+        stanzaBuilder.addAttribute("type", "get");
+
+        protocolWorker.processStanza(sessionContext, stanzaBuilder.getFinalStanza(), sessionStateHolder);
+
+        Stanza response = sessionContext.getRecordedResponse();
+        XMLElementVerifier responseVerifier = response.getVerifier();
+        assertTrue(responseVerifier.nameEquals("error"));
+        assertTrue("error", responseVerifier.subElementPresent(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE.value()));
+        assertTrue(sessionContext.isClosed());
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org