[prev in list] [next in list] [prev in thread] [next in thread]
List: mina-commits
Subject: svn commit: r1075174 [2/2] - in /mina/vysper/trunk/server/core/src:
From: ngn () apache ! org
Date: 2011-02-27 22:57:36
Message-ID: 20110227225737.2775423889E1 () eris ! apache ! org
[Download RAW message or body]
Added: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apac \
he/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java?rev=1075174&view=auto
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java \
(added)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java \
Sun Feb 27 22:57:35 2011 @@ -0,0 +1,130 @@
+/*
+ * 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.components;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.delivery.StanzaRelay;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
+import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
+import org.apache.vysper.xmpp.protocol.ProtocolException;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainerImpl;
+import org.apache.vysper.xmpp.protocol.SessionStateHolder;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ */
+public class ComponentStanzaProcessorTestCase {
+
+ private static final Entity FROM = EntityImpl.parseUnchecked("other.org");
+ private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
+
+ private ServerRuntimeContext serverRuntimeContext = \
Mockito.mock(ServerRuntimeContext.class); + private SessionContext sessionContext \
= Mockito.mock(SessionContext.class); + private SessionStateHolder \
sessionStateHolder = new SessionStateHolder(); + private StanzaRelay stanzaRelay = \
Mockito.mock(StanzaRelay.class); + private StanzaHandler handler = \
Mockito.mock(StanzaHandler.class); + private Stanza stanza = \
StanzaBuilder.createMessageStanza(FROM, TO, null, "body").build(); + private \
Stanza responseStanza = StanzaBuilder.createMessageStanza(TO, FROM, null, \
"response").build(); + private ResponseStanzaContainer container = new \
ResponseStanzaContainerImpl(responseStanza); +
+ private ComponentStanzaProcessor processor = new \
ComponentStanzaProcessor(serverRuntimeContext); +
+ @Before
+ public void before() {
+ Mockito.when(serverRuntimeContext.getStanzaRelay()).thenReturn(stanzaRelay);
+
+ Mockito.when(handler.verify(stanza)).thenReturn(true);
+ Mockito.when(handler.getName()).thenReturn("message");
+ }
+
+
+ @Test(expected=RuntimeException.class)
+ public void processNullStanza() {
+ processor.processStanza(serverRuntimeContext, sessionContext, null, \
sessionStateHolder); + }
+
+ @Test(expected=RuntimeException.class)
+ public void processNoneCoreStanza() {
+ Stanza dummyStanza = new StanzaBuilder("foo", "bar").build();
+ processor.processStanza(serverRuntimeContext, sessionContext, dummyStanza, \
sessionStateHolder); + }
+
+ @Test(expected=RuntimeException.class)
+ public void processNoStanzaHandler() {
+ processor.processStanza(serverRuntimeContext, sessionContext, stanza, \
sessionStateHolder); + }
+
+ @Test
+ public void processSuccessfulNoResponse() {
+ processor.addHandler(handler);
+
+ processor.processStanza(serverRuntimeContext, sessionContext, stanza, \
sessionStateHolder); +
+ Mockito.verifyZeroInteractions(serverRuntimeContext);
+ }
+
+ @Test
+ public void processSuccessfulWithResponse() throws ProtocolException, \
DeliveryException { + Mockito.when(handler.execute(stanza, \
serverRuntimeContext, false, sessionContext, \
sessionStateHolder)).thenReturn(container); +
+ processor.addHandler(handler);
+
+ processor.processStanza(serverRuntimeContext, sessionContext, stanza, \
sessionStateHolder); +
+ Mockito.verify(stanzaRelay).relay(FROM, responseStanza, \
IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY); + }
+
+ @Test
+ public void handlerThrowsException() throws ProtocolException, DeliveryException \
{ + Mockito.when(handler.execute(stanza, serverRuntimeContext, false, \
sessionContext, sessionStateHolder)).thenThrow(new ProtocolException()); +
+ processor.addHandler(handler);
+
+ processor.processStanza(serverRuntimeContext, sessionContext, stanza, \
sessionStateHolder); +
+ Mockito.verifyZeroInteractions(serverRuntimeContext);
+ }
+
+ @Test(expected=RuntimeException.class)
+ public void processThenFailRelaying() throws ProtocolException, \
DeliveryException { + Mockito.when(handler.execute(stanza, \
serverRuntimeContext, false, sessionContext, \
sessionStateHolder)).thenReturn(container); + Mockito.doThrow(new \
DeliveryException()).when(stanzaRelay).relay(FROM, responseStanza, \
IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY); +
+ processor.addHandler(handler);
+
+ processor.processStanza(serverRuntimeContext, sessionContext, stanza, \
sessionStateHolder); + }
+
+ @Test(expected=RuntimeException.class)
+ public void processTLSEstablished() {
+ processor.processTLSEstablished(sessionContext, sessionStateHolder);
+ }
+
+
+}
Added: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnectorRegistryTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apac \
he/vysper/xmpp/server/s2s/DefaultXMPPServerConnectorRegistryTestCase.java?rev=1075174&view=auto
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnectorRegistryTestCase.java \
(added)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnectorRegistryTestCase.java \
Sun Feb 27 22:57:35 2011 @@ -0,0 +1,169 @@
+/*
+ * 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.s2s;
+
+import javax.net.ssl.SSLContext;
+
+import junit.framework.Assert;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.delivery.failure.RemoteServerNotFoundException;
+import org.apache.vysper.xmpp.delivery.failure.RemoteServerTimeoutException;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.SessionStateHolder;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ */
+public class DefaultXMPPServerConnectorRegistryTestCase {
+
+ private static final Entity FROM = EntityImpl.parseUnchecked("other.org");
+ private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
+
+ private ServerRuntimeContext serverRuntimeContext = \
Mockito.mock(ServerRuntimeContext.class); + private SessionContext sessionContext \
= Mockito.mock(SessionContext.class); + private SessionStateHolder \
sessionStateHolder = new SessionStateHolder(); +
+ @Before
+ public void before() {
+ SSLContext sslContext = Mockito.mock(SSLContext.class);
+ Mockito.when(serverRuntimeContext.getSslContext()).thenReturn(sslContext);
+ Mockito.when(serverRuntimeContext.getServerEnitity()).thenReturn(TO);
+
+ Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(FROM);
+ Mockito.when(sessionContext.getSessionId()).thenReturn("session-id");
+
+ sessionStateHolder.setState(SessionState.STARTED);
+ }
+
+ @Test
+ public void connectorShouldBeReused() throws RemoteServerNotFoundException, \
RemoteServerTimeoutException { + DefaultXMPPServerConnectorRegistry registry = \
new DefaultXMPPServerConnectorRegistry(serverRuntimeContext) { + @Override
+ protected XMPPServerConnector createConnector(Entity otherServer,
+ ServerRuntimeContext serverRuntimeContext, SessionContext \
dialbackSessionContext, + SessionStateHolder \
dialbackSessionStateHolder) { + return \
Mockito.mock(XMPPServerConnector.class); + }
+ };
+
+ XMPPServerConnector actualConnector = registry.connect(TO);
+ Assert.assertNotNull(actualConnector);
+
+ XMPPServerConnector actualConnector2 = registry.connect(TO);
+
+ // connectors should be reused
+ Assert.assertSame(actualConnector, actualConnector2);
+
+ Mockito.verify(actualConnector).start();
+ Mockito.verify(actualConnector2).start();
+ }
+
+ @Test
+ public void dontReuseClosedConnector() throws RemoteServerNotFoundException, \
RemoteServerTimeoutException { + DefaultXMPPServerConnectorRegistry registry = \
new DefaultXMPPServerConnectorRegistry(serverRuntimeContext) { + @Override
+ protected XMPPServerConnector createConnector(Entity otherServer,
+ ServerRuntimeContext serverRuntimeContext, SessionContext \
dialbackSessionContext, + SessionStateHolder \
dialbackSessionStateHolder) { + XMPPServerConnector connector = \
Mockito.mock(XMPPServerConnector.class); + \
Mockito.when(connector.isClosed()).thenReturn(true); + return \
connector; + }
+ };
+
+ XMPPServerConnector actualConnector = registry.connect(TO);
+ Assert.assertNotNull(actualConnector);
+
+ XMPPServerConnector actualConnector2 = registry.connect(TO);
+
+ Assert.assertNotSame(actualConnector, actualConnector2);
+ }
+
+ @Test
+ public void dontReuseConnectorToDifferentServers() throws \
RemoteServerNotFoundException, RemoteServerTimeoutException { + \
DefaultXMPPServerConnectorRegistry registry = new \
DefaultXMPPServerConnectorRegistry(serverRuntimeContext) { + @Override
+ protected XMPPServerConnector createConnector(Entity otherServer,
+ ServerRuntimeContext serverRuntimeContext, SessionContext \
dialbackSessionContext, + SessionStateHolder \
dialbackSessionStateHolder) { + return \
Mockito.mock(XMPPServerConnector.class); + }
+ };
+
+ XMPPServerConnector actualConnector = registry.connect(TO);
+ Assert.assertNotNull(actualConnector);
+
+ XMPPServerConnector actualConnector2 = \
registry.connect(EntityImpl.parseUnchecked("foo.org")); +
+ Assert.assertNotSame(actualConnector, actualConnector2);
+ }
+
+ @Test
+ public void createDialbackConnector() throws RemoteServerNotFoundException, \
RemoteServerTimeoutException { + DefaultXMPPServerConnectorRegistry registry = \
new DefaultXMPPServerConnectorRegistry(serverRuntimeContext) { + @Override
+ protected XMPPServerConnector createConnector(Entity otherServer,
+ ServerRuntimeContext serverRuntimeContext, SessionContext \
dialbackSessionContext, + SessionStateHolder \
dialbackSessionStateHolder) { + return \
Mockito.mock(XMPPServerConnector.class); + }
+ };
+
+ SessionContext dialbackSessionContext = Mockito.mock(SessionContext.class);
+ SessionStateHolder dialbackSessionStateHolder = new SessionStateHolder();
+
+ XMPPServerConnector actualConnector = registry.connectForDialback(TO, \
dialbackSessionContext, dialbackSessionStateHolder); + \
Assert.assertNotNull(actualConnector); +
+ Mockito.verify(actualConnector).start();
+ }
+
+ @Test
+ public void close() throws RemoteServerNotFoundException, \
RemoteServerTimeoutException { + DefaultXMPPServerConnectorRegistry registry = \
new DefaultXMPPServerConnectorRegistry(serverRuntimeContext) { + @Override
+ protected XMPPServerConnector createConnector(Entity otherServer,
+ ServerRuntimeContext serverRuntimeContext, SessionContext \
dialbackSessionContext, + SessionStateHolder \
dialbackSessionStateHolder) { + return \
Mockito.mock(XMPPServerConnector.class); + }
+ };
+
+ XMPPServerConnector actualConnector = registry.connect(TO);
+ XMPPServerConnector actualConnector2 = registry.connect(TO);
+
+ registry.close();
+
+ Mockito.verify(actualConnector).close();
+ Mockito.verify(actualConnector2).close();
+ }
+
+
+}
Added: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java?rev=1075174&view=auto
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java \
(added)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/FeaturesHandlerTestCase.java \
Sun Feb 27 22:57:35 2011 @@ -0,0 +1,178 @@
+/*
+ * 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.s2s;
+
+import javax.net.ssl.SSLContext;
+
+import junit.framework.Assert;
+
+import org.apache.vysper.StanzaAssert;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.SessionStateHolder;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import sun.swing.plaf.synth.StyleAssociation;
+
+/**
+ */
+public class FeaturesHandlerTestCase {
+
+ private static final Entity FROM = EntityImpl.parseUnchecked("other.org");
+ private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
+
+ private FeaturesHandler handler = new FeaturesHandler();
+ private ServerRuntimeContext serverRuntimeContext = \
Mockito.mock(ServerRuntimeContext.class); + private SessionContext sessionContext \
= Mockito.mock(SessionContext.class); + private SessionStateHolder \
sessionStateHolder = new SessionStateHolder(); +
+ @Before
+ public void before() {
+ SSLContext sslContext = Mockito.mock(SSLContext.class);
+ Mockito.when(serverRuntimeContext.getSslContext()).thenReturn(sslContext);
+ Mockito.when(serverRuntimeContext.getServerEnitity()).thenReturn(TO);
+
+ Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(FROM);
+ Mockito.when(sessionContext.getSessionId()).thenReturn("session-id");
+
+ sessionStateHolder.setState(SessionState.STARTED);
+ }
+
+ @Test
+ public void nameMustBeFeatures() {
+ Assert.assertEquals("features", handler.getName());
+ }
+
+ @Test
+ public void verifyNullStanza() {
+ Assert.assertFalse(handler.verify(null));
+ }
+
+ @Test
+ public void verifyInvalidName() {
+ Stanza stanza = new StanzaBuilder("dummy", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS).build(); + \
Assert.assertFalse(handler.verify(stanza)); + }
+
+ @Test
+ public void verifyInvalidNamespace() {
+ Stanza stanza = new StanzaBuilder("features", "dummy").build();
+ Assert.assertFalse(handler.verify(stanza));
+ }
+
+ @Test
+ public void verifyNullNamespace() {
+ Stanza stanza = new StanzaBuilder("features").build();
+ Assert.assertFalse(handler.verify(stanza));
+ }
+
+ @Test
+ public void verifyValidStanza() {
+ Stanza stanza = new StanzaBuilder("features", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS).build(); + \
Assert.assertTrue(handler.verify(stanza)); + }
+
+ @Test
+ public void sessionIsRequired() {
+ Assert.assertTrue(handler.isSessionRequired());
+ }
+
+ @Test
+ public void executeWithSsl() {
+ Stanza stanza = new StanzaBuilder("features", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS) + \
.startInnerElement("starttls", \
NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).endInnerElement() + \
.startInnerElement("dialback", \
NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement() + .build();
+
+ ResponseStanzaContainer response = handler.execute(stanza, \
serverRuntimeContext, true, sessionContext, sessionStateHolder); +
+ Stanza expectedResponse = new StanzaBuilder("starttls", \
NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).build(); +
+ StanzaAssert.assertEquals(expectedResponse, response.getResponseStanza());
+ }
+
+ @Test
+ public void executeWithSslDisabled() {
+ Mockito.when(serverRuntimeContext.getSslContext()).thenReturn(null);
+
+ Stanza stanza = new StanzaBuilder("features", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS) + \
.startInnerElement("starttls", \
NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).endInnerElement() + \
.startInnerElement("dialback", \
NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement() + .build();
+
+ ResponseStanzaContainer response = handler.execute(stanza, \
serverRuntimeContext, true, sessionContext, sessionStateHolder); +
+ assertDialbackStanza(response.getResponseStanza());
+ }
+
+ @Test
+ public void executeDialback() {
+ Stanza stanza = new StanzaBuilder("features", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS) + .startInnerElement("dialback", \
NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement() + .build();
+
+ ResponseStanzaContainer response = handler.execute(stanza, \
serverRuntimeContext, true, sessionContext, sessionStateHolder); +
+ assertDialbackStanza(response.getResponseStanza());
+ }
+
+ @Test
+ public void executeWhenAuthenticated() {
+ sessionStateHolder.setState(SessionState.AUTHENTICATED);
+
+ Stanza stanza = new StanzaBuilder("features", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS) + .startInnerElement("dialback", \
NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).endInnerElement() + .build();
+
+ Assert.assertNull(handler.execute(stanza, serverRuntimeContext, true, \
sessionContext, sessionStateHolder)); + }
+
+ // TODO Is this the correct behavior?
+ @Test(expected=RuntimeException.class)
+ public void executeWithUnknownFeatures() {
+ Stanza stanza = new StanzaBuilder("features", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS) + .startInnerElement("dummy", \
"dummy").endInnerElement() + .build();
+
+ handler.execute(stanza, serverRuntimeContext, true, sessionContext, \
sessionStateHolder); + }
+
+
+
+ private void assertDialbackStanza(Stanza responseStanza) {
+ Assert.assertEquals("result", responseStanza.getName());
+ Assert.assertEquals(NamespaceURIs.JABBER_SERVER_DIALBACK, \
responseStanza.getNamespaceURI()); + Assert.assertEquals("db", \
responseStanza.getNamespacePrefix()); + \
Assert.assertEquals(TO.getFullQualifiedName(), \
responseStanza.getAttributeValue("from")); + \
Assert.assertEquals(FROM.getFullQualifiedName(), \
responseStanza.getAttributeValue("to")); +
+ Assert.assertNotNull(responseStanza.getInnerText().getText());
+ }
+
+}
Added: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java?rev=1075174&view=auto
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java \
(added)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/TlsProceedHandlerTestCase.java \
Sun Feb 27 22:57:35 2011 @@ -0,0 +1,116 @@
+/*
+ * 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.s2s;
+
+import javax.net.ssl.SSLContext;
+
+import junit.framework.Assert;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.SessionStateHolder;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ */
+public class TlsProceedHandlerTestCase {
+
+ private static final Entity FROM = EntityImpl.parseUnchecked("other.org");
+ private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
+
+ private TlsProceedHandler handler = new TlsProceedHandler();
+ private ServerRuntimeContext serverRuntimeContext = \
Mockito.mock(ServerRuntimeContext.class); + private SessionContext sessionContext \
= Mockito.mock(SessionContext.class); + private SessionStateHolder \
sessionStateHolder = new SessionStateHolder(); +
+ @Before
+ public void before() {
+ SSLContext sslContext = Mockito.mock(SSLContext.class);
+ Mockito.when(serverRuntimeContext.getSslContext()).thenReturn(sslContext);
+ Mockito.when(serverRuntimeContext.getServerEnitity()).thenReturn(TO);
+
+ Mockito.when(sessionContext.getInitiatingEntity()).thenReturn(FROM);
+ Mockito.when(sessionContext.getSessionId()).thenReturn("session-id");
+
+ sessionStateHolder.setState(SessionState.STARTED);
+ }
+
+ @Test
+ public void nameMustBeFeatures() {
+ Assert.assertEquals("proceed", handler.getName());
+ }
+
+ @Test
+ public void verifyNullStanza() {
+ Assert.assertFalse(handler.verify(null));
+ }
+
+ @Test
+ public void verifyInvalidName() {
+ Stanza stanza = new StanzaBuilder("dummy", \
NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).build(); + \
Assert.assertFalse(handler.verify(stanza)); + }
+
+ @Test
+ public void verifyInvalidNamespace() {
+ Stanza stanza = new StanzaBuilder("proceed", "dummy").build();
+ Assert.assertFalse(handler.verify(stanza));
+ }
+
+ @Test
+ public void verifyNullNamespace() {
+ Stanza stanza = new StanzaBuilder("proceed").build();
+ Assert.assertFalse(handler.verify(stanza));
+ }
+
+ @Test
+ public void verifyValidStanza() {
+ Stanza stanza = new StanzaBuilder("proceed", \
NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_TLS).build(); + \
Assert.assertTrue(handler.verify(stanza)); + }
+
+ @Test
+ public void sessionIsRequired() {
+ Assert.assertTrue(handler.isSessionRequired());
+ }
+
+ @Test
+ public void execute() {
+ Stanza stanza = new StanzaBuilder("proceed", \
NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS).build(); +
+ ResponseStanzaContainer response = handler.execute(stanza, \
serverRuntimeContext, true, sessionContext, sessionStateHolder); +
+ Assert.assertNull(response);
+
+ Assert.assertEquals(SessionState.ENCRYPTION_STARTED, \
sessionStateHolder.getState()); +
+ Mockito.verify(sessionContext).switchToTLS(false, true);
+ }
+
+}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic