You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/05/22 12:26:22 UTC

svn commit: r408632 [2/2] - in /incubator/tuscany/sandbox/ant/ajax: ./ ajaxchat/ ajaxchat/src/ ajaxchat/src/main/ ajaxchat/src/main/java/ ajaxchat/src/main/java/sample/ ajaxchat/src/main/resources/ ajaxchat/src/main/webapp/ ajaxchat/src/main/webapp/WEB...

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java Mon May 22 03:26:10 2006
@@ -0,0 +1,163 @@
+package org.apache.tuscany.binding.ajax.servlet;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.binding.ajax.testutils.MockUtils;
+import org.apache.tuscany.binding.ajax.testutils.SimpleMock;
+import org.apache.tuscany.binding.ajax.testutils.SimpleMockFactory;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Function;
+import org.mozilla.javascript.Scriptable;
+import org.mozilla.javascript.UniqueTag;
+
+public class DWRAJAXServletTestCase extends TestCase {
+
+    private DWRAJAXServlet servlet;
+
+    @Override
+    public void setUp() {
+        servlet = new AJAXServletManager(MockUtils.getServletHost(), "test").getServlet();
+    }
+
+    public void testGetSCAJSScript() throws IOException {
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        HttpServletRequest request = createRequest();
+        HttpServletResponse response = createResponse(baos);
+
+        servlet.doSCAScript(request, response);
+        String scaScript = new String(baos.toByteArray());
+        assertTrue(scaScript.length() > 0);
+
+        Scriptable scope = compileScript(scaScript);
+
+        Object sca = scope.get("SCA", scope);
+        assertNotNull(sca);
+        assertNotSame(UniqueTag.NOT_FOUND, sca);
+
+        Object scaOpen = runScript(scope, "SCA.open");
+        assertNotNull(scaOpen);
+        assertNotSame(UniqueTag.NOT_FOUND, scaOpen);
+        assertTrue(scaOpen instanceof Function);
+
+        Object scaClose = runScript(scope, "SCA.close");
+        assertNotNull(scaClose);
+        assertNotSame(UniqueTag.NOT_FOUND, scaClose);
+        assertTrue(scaClose instanceof Function);
+
+    }
+
+    public void testEntryPoints() throws IOException {
+
+        servlet.addEntryPoint("TestEntryPoint1", SimpleEntryPointInterface.class, null);
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        HttpServletRequest request = createRequest();
+        HttpServletResponse response = createResponse(baos);
+
+        servlet.doSCAScript(request, response);
+        String scaScript = new String(baos.toByteArray());
+        assertTrue(scaScript.length() > 0);
+
+        Scriptable scope = compileScript(scaScript);
+
+        Object testEP1 = scope.get("TestEntryPoint1", scope);
+        assertNotNull(testEP1);
+        assertNotSame(UniqueTag.NOT_FOUND, testEP1);
+        assertTrue(testEP1 instanceof Function);
+
+        Object path = runScript(scope, "TestEntryPoint1._path");
+        assertNotNull(path);
+        assertEquals("mockContextPath/mockServletPath", path);
+
+        Object testMethod = runScript(scope, "TestEntryPoint1.testMethod");
+        assertNotNull(testMethod);
+        assertNotSame(UniqueTag.NOT_FOUND, testMethod);
+        assertTrue(testMethod instanceof Function);
+    }
+
+    public void testExternalServices() throws IOException {
+
+        servlet.addExternalService("TestExternalService1");
+        servlet.addExternalService("TestExternalService2");
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        HttpServletRequest request = createRequest();
+        HttpServletResponse response = createResponse(baos);
+
+        servlet.doSCAScript(request, response);
+        String scaScript = new String(baos.toByteArray());
+        assertTrue(scaScript.length() > 0);
+
+        Scriptable scope = compileScript(scaScript);
+
+        Object testES1 = scope.get("TestExternalService1", scope);
+        assertNotNull(testES1);
+        assertNotSame(UniqueTag.NOT_FOUND, testES1);
+        assertTrue(testES1 instanceof Function);
+
+        Object testES2 = scope.get("TestExternalService1", scope);
+        assertNotNull(testES2);
+        assertNotSame(UniqueTag.NOT_FOUND, testES2);
+        assertTrue(testES2 instanceof Function);
+    }
+
+    private Scriptable compileScript(String script) {
+        Scriptable scope;
+        Context cx = Context.enter();
+        try {
+
+            scope = cx.initStandardObjects();
+            cx.evaluateString(scope, "function window(){};", "mockBrowser", 1, null);
+            cx.evaluateString(scope, script, "sca.js", 1, null);
+
+        } finally {
+            Context.exit();
+        }
+        return scope;
+    }
+
+    private Object runScript(Scriptable scope, String script) {
+        Context cx = Context.enter();
+        try {
+
+            return cx.evaluateString(scope, script, "cmd", 1, null);
+
+        } finally {
+            Context.exit();
+        }
+    }
+    private HttpServletResponse createResponse(final OutputStream os) {
+        HttpServletResponse response = (HttpServletResponse) SimpleMockFactory.createSimpleMock(HttpServletResponse.class);
+        SimpleMock mocker = (SimpleMock) response;
+        PrintWriter pw = new PrintWriter(new OutputStreamWriter(os), true);
+        mocker.addGetMethod("getWriter", pw);
+        return response;
+    }
+
+    private HttpServletRequest createRequest() {
+        HttpSession session = (HttpSession) SimpleMockFactory.createSimpleMock(HttpSession.class);
+        ((SimpleMock) session).addGetMethod("getId", "mockID");
+
+        HttpServletRequest request = (HttpServletRequest) SimpleMockFactory.createSimpleMock(HttpServletRequest.class);
+        SimpleMock mocker = (SimpleMock) request;
+        mocker.addGetMethod("getSession", session);
+
+        mocker.addGetMethod("getContextPath", "mockContextPath");
+        mocker.addGetMethod("getServletPath", "/mockServletPath");
+        return request;
+    }
+
+}

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java Mon May 22 03:26:10 2006
@@ -0,0 +1,7 @@
+package org.apache.tuscany.binding.ajax.servlet;
+
+public interface SimpleEntryPointInterface {
+    
+    public String testMethod(String s);
+
+}

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java Mon May 22 03:26:10 2006
@@ -0,0 +1,7 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+public class Holder {
+
+    public Object o;
+    
+}

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java Mon May 22 03:26:10 2006
@@ -0,0 +1,7 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+public interface Invoker {
+    
+    public Object invoke(Object[] args);
+
+}

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java Mon May 22 03:26:10 2006
@@ -0,0 +1,19 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+import org.apache.tuscany.core.webapp.ServletHost;
+
+public class MockUtils {
+
+    public static ServletHost getServletHost() {
+        ServletHost th = (ServletHost) SimpleMockFactory.createSimpleMock(ServletHost.class);
+        final Holder holder = new Holder();
+        ((SimpleMock) th).addSetMethod("registerMapping", new Invoker() {
+            public Object invoke(Object[] args) {
+                holder.o = args[1];
+                return null;
+            }});
+        ((SimpleMock) th).addGetMethod("getMapping", holder);
+        return th;
+    }
+
+}

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java Mon May 22 03:26:10 2006
@@ -0,0 +1,11 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+public interface SimpleMock {
+
+    public void addGetMethod(String methodName, Object o);
+
+    public Object addSetMethod(String methodName);
+
+    public void addSetMethod(String methodName, Invoker invoker);
+
+}

Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java Mon May 22 03:26:10 2006
@@ -0,0 +1,54 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SimpleMockFactory {
+
+    public static SimpleMock createSimpleMock(Class iface) {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        if (cl == null) {
+            cl = SimpleMockFactory.class.getClassLoader();
+        }
+        InvocationHandler ih = createInvocationHandler();
+        return (SimpleMock) Proxy.newProxyInstance(cl, new Class[] { iface, SimpleMock.class }, ih);
+    }
+
+    private static InvocationHandler createInvocationHandler() {
+        InvocationHandler ih = new InvocationHandler() {
+            Map<String, Object> getters = new HashMap<String, Object>();
+
+            Map<String, Object> setters = new HashMap<String, Object>();
+
+            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+                if ("addGetMethod".equals(method.getName())) {
+                    getters.put((String) args[0], args[1]);
+                } else if ("addSetMethod".equals(method.getName())) {
+                    setters.put((String) args[0], (Invoker) args[1]);
+                } else if (getters.containsKey(method.getName())) {
+                    Object o = getters.get(method.getName());
+                    if (o instanceof Invoker) {
+                        return ((Invoker) o).invoke(args);
+                    } else if (o instanceof Holder) {
+                        return ((Holder)o).o;
+                    } else {
+                        return getters.get(method.getName());
+                    }
+                } else if (setters.containsKey(method.getName())) {
+                    Object o = setters.get(method.getName());
+                    if (o instanceof Invoker) {
+                        ((Invoker) o).invoke(args);
+                    } else {
+                        ((Holder) o).o = args;
+                    }
+                }
+                return null;
+            }
+        };
+        return ih;
+    }
+
+}



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