[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