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