Author: mjakl
Date: Sat Jun 27 19:24:36 2009
New Revision: 789009

URL: http://svn.apache.org/viewvc?rev=789009&view=rev
Log:
* Made disco testable for the pubsub module
* Fixed some minor typos in javadoc
* dico#info for the pubsub service is tested

Added:
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
Modified:
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandler.java
 Sat Jun 27 19:24:36 2009
@@ -126,7 +126,7 @@
     }
 
     /**
-     * must be overriden by specialized IQ handlers
+     * must be overridden by specialized IQ handlers
      */
     protected Stanza executeIQLogic(IQStanza stanza, ServerRuntimeContext 
serverRuntimeContext, SessionContext sessionContext) {
         // this is default behavior and must be replaced by overrider

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
 Sat Jun 27 19:24:36 2009
@@ -106,8 +106,7 @@
      * 
      * @see ServerInfoRequestListener#getServerInfosFor(InfoRequest)
      */
-    public List<InfoElement> getServerInfosFor(InfoRequest request)
-    throws ServiceDiscoveryRequestException {
+    public List<InfoElement> getServerInfosFor(InfoRequest request) throws 
ServiceDiscoveryRequestException {
         List<InfoElement> infoElements = new ArrayList<InfoElement>();
         infoElements.add(new Identity("pubsub", "service"));
         infoElements.add(new Feature(NamespaceURIs.XEP0060_PUBSUB));

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandler.java
 Sat Jun 27 19:24:36 2009
@@ -74,7 +74,7 @@
         ServiceCollector serviceCollector = null;
 
         // TODO if the target entity does not exist, return 
error/cancel/item-not-found
-        // TODO more strictly, server can also return 
error/cancel/service-unaivable
+        // TODO more strictly, server can also return 
error/cancel/service-unavailable
 
         // retrieve the service collector
         try {

Modified: 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
 Sat Jun 27 19:24:36 2009
@@ -24,17 +24,22 @@
 import org.apache.vysper.storage.OpenStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
 import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionnodeInMemoryStorageProvider;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
+import 
org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
 import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.SessionStateHolder;
 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.stanza.Stanza;
 import org.apache.vysper.xmpp.state.resourcebinding.ResourceState;
+import org.apache.vysper.xmpp.writer.SystemOutStanzaWriter;
 
 
 /**
@@ -50,13 +55,15 @@
     protected IQHandler handler = null;
     protected CollectionNode root = null;
     protected LeafNode node = null;
+    
+    // for debugging
+    protected SystemOutStanzaWriter stanzaWriter = new SystemOutStanzaWriter();
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        
-        sessionContext = 
TestSessionContext.createWithStanzaReceiverRelayAuthenticated();
-        configureStorageProvider();
+
+        sessionContext = createTestSessionContext();
 
         clientBare = new EntityImpl("tester", "vysper.org", null);
         sessionContext.setInitiatingEntity(clientBare);
@@ -71,12 +78,35 @@
 
         handler = getHandler();
     }
+    
+    protected TestSessionContext createTestSessionContext() {
+        SessionStateHolder sessionStateHolder = new SessionStateHolder();
+        sessionStateHolder.setState(SessionState.AUTHENTICATED);
+        StanzaReceiverRelay relay = new 
org.apache.vysper.xmpp.delivery.StanzaReceiverRelay();
+        DefaultServerRuntimeContext serverContext = new 
DefaultServerRuntimeContext(new EntityImpl(null, "pubsub.vysper.org", null), 
relay);
+        relay.setServerRuntimeContext(serverContext);
+        TestSessionContext tsc = new TestSessionContext(serverContext, 
sessionStateHolder);
+
+        configureStorageProvider(tsc);
+        configureServiceRegistry(tsc);
+        configurePubsubModule(tsc);
+        return tsc;
+    }
 
-    protected void configureStorageProvider() {
+    protected void configureServiceRegistry(TestSessionContext tsc) {
+        ServiceCollector serviceCollector = new ServiceCollector();
+        ((DefaultServerRuntimeContext) 
tsc.getServerRuntimeContext()).registerServerRuntimeContextService(serviceCollector);
+    }
+
+    protected void configurePubsubModule(TestSessionContext tsc) {
+        ((DefaultServerRuntimeContext) 
tsc.getServerRuntimeContext()).addModule(new PublishSubscribeModule());
+    }
+    
+    protected void configureStorageProvider(TestSessionContext tsc) {
         OpenStorageProviderRegistry storageProviderRegistry = new 
OpenStorageProviderRegistry();
         storageProviderRegistry.add(new 
CollectionnodeInMemoryStorageProvider());
         storageProviderRegistry.add(new LeafNodeInMemoryStorageProvider());
-        ((DefaultServerRuntimeContext) 
sessionContext.getServerRuntimeContext()).setStorageProviderRegistry(storageProviderRegistry);
+        ((DefaultServerRuntimeContext) 
tsc.getServerRuntimeContext()).setStorageProviderRegistry(storageProviderRegistry);
     }
 
     private void setResourceConnected(String boundResourceId) {

Added: 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java?rev=789009&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
 (added)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
 Sat Jun 27 19:24:36 2009
@@ -0,0 +1,95 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
+
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
+import 
org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoInfoIQHandler;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+
+
+public class PubSubDiscoInfoTestCase extends AbstractPublishSubscribeTestCase {
+    
+    @Override
+    protected AbstractStanzaGenerator getDefaultStanzaGenerator() {
+        return new DefaultDiscoInfoStanzaGenerator();
+    }
+
+    @Override
+    protected IQHandler getHandler() {
+        return new DiscoInfoIQHandler();
+    }
+
+    
+    public void testIdentityAndFeature() {
+        AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
+        Stanza stanza = sg.getStanza(client, pubsub.getBareJID(), "id123");
+
+        ResponseStanzaContainer result = sendStanza(stanza, true);
+        assertTrue(result.hasResponse());
+        IQStanza response = new IQStanza(result.getResponseStanza());
+
+        assertEquals(IQStanzaType.RESULT.value(),response.getType());
+
+        assertEquals("id123", response.getAttributeValue("id")); // IDs must 
match
+
+        // get the subscription Element
+        XMLElement query = response.getFirstInnerElement();
+        List<XMLElement> inner = query.getInnerElements();
+
+        assertEquals("query", query.getName());
+        assertTrue(inner.size() >= 2);
+        
+        XMLElement identity = null;
+        XMLElement feature = null;
+        for(XMLElement el : inner) {
+            if(el.getName().equals("identity")
+                    //&& 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO) // TODO 
enable when the parser is fixed
+                    && el.getAttributeValue("category").equals("pubsub")
+                    && el.getAttributeValue("type").equals("service")) {
+                identity = el;
+            } else if(el.getName().equals("feature") /*&& 
el.getNamespace().equals(NamespaceURIs.XEP0060_PUBSUB)*/) { // TODO enable when 
the parser is fixed
+                feature = el;
+            }
+        }
+        assertNotNull(identity);
+        assertNotNull(feature);
+    }
+    
+    class DefaultDiscoInfoStanzaGenerator extends AbstractStanzaGenerator {
+        @Override
+        protected StanzaBuilder buildInnerElement(Entity client, Entity 
pubsub, StanzaBuilder sb) {
+            return sb;
+        }
+
+        @Override
+        protected String getNamespace() {
+            return NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO;
+        }
+
+        @Override
+        protected IQStanzaType getStanzaType() {
+            return IQStanzaType.GET;
+        }
+        
+        @Override
+        public Stanza getStanza(Entity client, Entity pubsub, String id) {
+            StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(client, 
pubsub, getStanzaType(), id);
+            stanzaBuilder.startInnerElement("query");
+            stanzaBuilder.addNamespaceAttribute(getNamespace());
+
+            buildInnerElement(client, pubsub, stanzaBuilder);
+
+            stanzaBuilder.endInnerElement();
+
+            return stanzaBuilder.getFinalStanza();
+        }
+    }
+}

Modified: 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java?rev=789009&r1=789008&r2=789009&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
 Sat Jun 27 19:24:36 2009
@@ -51,6 +51,8 @@
 
         suite.addTestSuite(CollectionNodeTestCase.class);
         suite.addTestSuite(LeafNodeTestCase.class);
+        
+        suite.addTestSuite(PubSubDiscoInfoTestCase.class);
         //$JUnit-END$
         return suite;
     }


Reply via email to