Author: ieb
Date: Fri Jul 25 02:24:22 2008
New Revision: 679724

URL: http://svn.apache.org/viewvc?rev=679724&view=rev
Log:
SHINDIG-473

Applied patch after moving EndToEndTests to EndToEndTest

Added:
    
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java
    
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
    
incubator/shindig/trunk/java/server/src/test/resources/endtoend/errorTest.xml
    
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPeopleTest.xml
Removed:
    
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTests.java
    
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/FetchPersonTest.java
Modified:
    
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPersonTest.xml
    
incubator/shindig/trunk/java/server/src/test/resources/endtoend/testframework.js

Added: 
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java?rev=679724&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java
 (added)
+++ 
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java
 Fri Jul 25 02:24:22 2008
@@ -0,0 +1,156 @@
+/*
+ * 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.shindig.server.endtoend;
+
+import com.google.common.base.Join;
+import com.google.common.collect.Maps;
+
+import org.apache.shindig.common.servlet.GuiceServletContextListener;
+import org.apache.shindig.gadgets.servlet.ConcatProxyServlet;
+import org.apache.shindig.gadgets.servlet.GadgetRenderingServlet;
+import org.apache.shindig.gadgets.servlet.HttpGuiceModule;
+import org.apache.shindig.social.opensocial.service.DataServiceServlet;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.ResourceHandler;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.ServletHolder;
+import org.mortbay.resource.Resource;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Map;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Suite for running the end-to-end tests. The suite is responsible for 
starting up and shutting
+ * down the server.
+ */
+public class EndToEndServer {
+  private static final int JETTY_PORT = 9003;
+  private static final String GADGET_BASE = "/gadgets/ifr";
+  private static final String JSON_BASE = "/social/rest/*";
+  private static final String CONCAT_BASE = "/gadgets/concat";
+  public static final String SERVER_URL = "http://localhost:"; + JETTY_PORT;
+  public static final String GADGET_BASEURL = SERVER_URL + GADGET_BASE;
+
+  private final Server server;
+
+  /** Fake error code for data service servlet request */
+  private int errorCode;
+
+  /** Fake error message for data service servlet request */
+  private String errorMessage;
+
+  public EndToEndServer() throws Exception {
+    server = createServer(JETTY_PORT);
+  }
+
+  public void start() throws Exception {
+    server.start();
+  }
+
+  public void stop() throws Exception {
+    server.stop();
+  }
+
+  public void clearDataServiceError() {
+    errorCode = 0;
+  }
+
+  public void setDataServiceError(int errorCode, String errorMessage) {
+    this.errorCode = errorCode;
+    this.errorMessage = errorMessage;
+  }
+
+  /**
+   * Starts the server for end-to-end tests.
+   */
+  private Server createServer(int port) throws Exception {
+    Server newServer = new Server(port);
+
+    // Attach the test resources in /endtoend as static content for the test
+    ResourceHandler resources = new ResourceHandler();
+    URL resource = EndToEndTest.class.getResource("/endtoend");
+    resources.setBaseResource(Resource.newResource(resource));
+    newServer.addHandler(resources);
+
+    Context context = new Context(newServer, "/", Context.SESSIONS);
+    context.addEventListener(new GuiceServletContextListener());
+
+    Map<String, String> initParams = Maps.newHashMap();
+    String modules = Join
+        .join(":", EndToEndModule.class.getName(), 
HttpGuiceModule.class.getName());
+
+    initParams.put(GuiceServletContextListener.MODULES_ATTRIBUTE, modules);
+    context.setInitParams(initParams);
+
+    // Attach the gadget rendering servlet
+    ServletHolder gadgetServletHolder = new ServletHolder(new 
GadgetRenderingServlet());
+    context.addServlet(gadgetServletHolder, GADGET_BASE);
+
+    // Attach DataServiceServlet, wrapped in a proxy to fake errors
+    ServletHolder jsonServletHolder = new ServletHolder(new ForceErrorServlet(
+        new DataServiceServlet()));
+    context.addServlet(jsonServletHolder, JSON_BASE);
+
+    // Attach the ConcatProxyServlet - needed for
+    ServletHolder concatHolder = new ServletHolder(new ConcatProxyServlet());
+    context.addServlet(concatHolder, CONCAT_BASE);
+
+    return newServer;
+  }
+
+  private class ForceErrorServlet implements Servlet {
+    private final Servlet proxiedServlet;
+
+    public ForceErrorServlet(Servlet proxiedServlet) {
+      this.proxiedServlet = proxiedServlet;
+    }
+
+    public void init(ServletConfig servletConfig) throws ServletException {
+      proxiedServlet.init(servletConfig);
+    }
+
+    public ServletConfig getServletConfig() {
+      return proxiedServlet.getServletConfig();
+    }
+
+    public void service(ServletRequest servletRequest, ServletResponse 
servletResponse)
+        throws ServletException, IOException {
+      if (errorCode > 0) {
+        ((HttpServletResponse) servletResponse).sendError(errorCode, 
errorMessage);
+      } else {
+        proxiedServlet.service(servletRequest, servletResponse);
+      }
+    }
+
+    public String getServletInfo() {
+      return proxiedServlet.getServletInfo();
+    }
+
+    public void destroy() {
+      proxiedServlet.destroy();
+    }
+  }
+}

Added: 
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java?rev=679724&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
 (added)
+++ 
incubator/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
 Fri Jul 25 02:24:22 2008
@@ -0,0 +1,161 @@
+/*
+ * 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.shindig.server.endtoend;
+
+import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+import org.apache.shindig.common.BasicSecurityToken;
+import org.apache.shindig.common.BasicSecurityTokenDecoder;
+import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.crypto.BlobCrypterException;
+import org.junit.After;
+import org.junit.AfterClass;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Base class for end-to-end tests.
+ */
+public class EndToEndTest {
+  static private EndToEndServer server = null;
+
+  private WebClient webClient;
+  private CollectingAlertHandler alertHandler;
+  private SecurityToken token;
+
+  @Test
+  public void fetchPerson() throws Exception {
+    executeAllPageTests("fetchPersonTest");
+  }
+
+  @Test
+  public void fetchPeople() throws Exception {
+    executeAllPageTests("fetchPeopleTest");
+  }
+
+  @Test
+  public void notFoundError() throws Exception {
+    server.setDataServiceError(HttpServletResponse.SC_NOT_FOUND, "Not Found");
+    executePageTest("errorTest", "notFoundError");
+  }
+
+  @Test
+  public void badRequest() throws Exception {
+    server.setDataServiceError(HttpServletResponse.SC_BAD_REQUEST, "Bad 
Request");
+    executePageTest("errorTest", "badRequestError");
+  }
+
+  @Test
+  public void internalError() throws Exception {
+    server.setDataServiceError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 
"Internal Server Error");
+    executePageTest("errorTest", "internalError");
+  }
+
+  @BeforeClass
+  public static void setUpOnce() throws Exception {
+    server = new EndToEndServer();
+    server.start();
+  }
+
+  @AfterClass
+  public static void tearDownOnce() throws Exception {
+    server.stop();
+  }
+
+  @Before
+  public void setUp() throws Exception {
+    webClient = new WebClient();
+    // NicelyResynchronizingAjaxController changes XHR calls from asynchronous
+    // to synchronous, saving the test from needing to wait or sleep for XHR
+    // completion.
+    webClient.setAjaxController(new NicelyResynchronizingAjaxController());
+    alertHandler = new CollectingAlertHandler();
+    webClient.setAlertHandler(alertHandler);
+    token = createToken("canonical", "john.doe");
+  }
+
+  @After
+  public void tearDown() {
+    server.clearDataServiceError();
+  }
+
+  /**
+   * Verify that the Javascript completed running.  This ensures that
+   * logic errors or exceptions don't get treated as success.
+   */
+  @After
+  public void verifyTestsFinished() {
+    // Verify the format of the alerts - test method names followed by 
"finished"
+    String testMethod = null;
+    for (String alert : alertHandler.getCollectedAlerts()) {
+      if (testMethod == null) {
+        assertFalse("Test method omitted", "FINISHED".equals(alert));
+        testMethod = alert;
+      } else {
+        assertEquals("test method " + testMethod + " did not finish", 
"FINISHED", alert);
+        testMethod = null;
+      }
+    }
+
+    assertNull("test method " + testMethod + " did not finish", testMethod);
+  }
+
+  /**
+   * Executes a page test by loading the HTML page.
+   * @param testName name of the test, which must match a gadget XML file
+   *     name in test/resources/endtoend (minus .xml).
+   * @param testMethod name of the javascript method to execute
+   * @return the parsed HTML page
+   */
+  private HtmlPage executePageTest(String testName, String testMethod)
+      throws IOException {
+    String gadgetUrl = EndToEndServer.SERVER_URL + "/" + testName + ".xml";
+    String url = EndToEndServer.GADGET_BASEURL + "?url=" + 
URLEncoder.encode(gadgetUrl, "UTF-8");
+    BasicSecurityTokenDecoder decoder = new BasicSecurityTokenDecoder();
+    url += "&st=" + URLEncoder.encode(decoder.encodeToken(token), "UTF-8");
+    url += "&testMethod=" + URLEncoder.encode(testMethod, "UTF-8");
+    return (HtmlPage) webClient.getPage(url);
+  }
+
+  /**
+   * Executes all page test in a single XML file.
+   * @param testName name of the test, which must match a gadget XML file
+   *     name in test/resources/endtoend (minus .xml).
+   * @throws IOException
+   */
+  private void executeAllPageTests(String testName) throws IOException {
+    executePageTest(testName, "all");
+  }
+
+  private BasicSecurityToken createToken(String owner, String viewer)
+      throws BlobCrypterException {
+    return new BasicSecurityToken(owner, viewer, "test", "domain", "appUrl", 
"1");
+  }
+}

Added: 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/errorTest.xml
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/resources/endtoend/errorTest.xml?rev=679724&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/errorTest.xml 
(added)
+++ 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/errorTest.xml 
Fri Jul 25 02:24:22 2008
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<Module>
+  <ModulePrefs title="EndToEndTest">
+    <Require feature="opensocial-0.8" />
+    <Require feature="views" />
+  </ModulePrefs>
+  <Content type="html">
+    <![CDATA[
+      <script type="text/javascript" src="testframework.js"></script>
+      <script type="text/javascript">
+
+        var tests = {
+          /** Test 404 */
+          notFoundError: function() {
+            errorTestCase(404, opensocial.ResponseItem.Error.BAD_REQUEST);
+          },
+
+          /** Test 400 */
+          badRequestError: function() {
+            errorTestCase(400, opensocial.ResponseItem.Error.BAD_REQUEST);
+          },
+
+          /** Test 500 */
+          internalError: function() {
+            errorTestCase(500, opensocial.ResponseItem.Error.INTERNAL_ERROR);
+          }
+        };
+        
+
+        /** Test a single error code case */
+        function errorTestCase(httpCode, errorCode) {
+          var req = opensocial.newDataRequest();
+
+          // Request the "canonical" viewer
+          req.add(req.newFetchPersonRequest("canonical"), "canonical");
+
+          function receivedData(response) {
+            assertTrue("Expecting error", response.hadError());
+            var dataItem = response.get("canonical");
+            assertFalse("Expecting data item", dataItem == undefined);
+            assertTrue("Expecting item error", dataItem.hadError());
+            assertEquals("Mismatched error code", errorCode, 
dataItem.getErrorCode());
+
+            finished();
+          }
+
+          // Send the request
+          req.send(receivedData);
+        }
+      </script>
+    ]]>
+  </Content>
+</Module>

Added: 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPeopleTest.xml
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPeopleTest.xml?rev=679724&view=auto
==============================================================================
--- 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPeopleTest.xml
 (added)
+++ 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPeopleTest.xml
 Fri Jul 25 02:24:22 2008
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<Module>
+  <ModulePrefs title="EndToEndTest">
+    <Require feature="opensocial-0.8" />
+    <Require feature="views" />
+  </ModulePrefs>
+  <Content type="html">
+    <![CDATA[
+      <script type="text/javascript" src="testframework.js"></script>
+      <script type="text/javascript">
+
+        var tests = {
+          /** Test fetching the owner's friends, which should be 'canonical' */
+          fetchOwnerFriends: function() {
+            var req = opensocial.newDataRequest();
+
+            var idSpec = opensocial.newIdSpec({userId : 
opensocial.IdSpec.PersonId.OWNER,
+                groupId : 'FRIENDS'})
+            req.add(req.newFetchPeopleRequest(idSpec), 'ownerFriends');
+            function receivedData(response) {
+              var ownerFriends = getAndCheckError(response, 'ownerFriends');
+              assertEquals('Wrong friend count', 4, ownerFriends.size());
+
+              var johnDoe = ownerFriends.getById('john.doe');
+              assertEquals('Wrong name for john doe', 'John Doe', 
johnDoe.getDisplayName());
+              finished();
+            }
+
+            // Send the request
+            req.send(receivedData);
+          },
+
+          /** Test fetching 'maija.m' friends, of which there are none */
+          fetchEmptyFriendsById: function() {
+            var req = opensocial.newDataRequest();
+
+            var idSpec = opensocial.newIdSpec({userId : 'maija.m', groupId : 
'FRIENDS'})
+            req.add(req.newFetchPeopleRequest(idSpec), 'idFriends');
+            function receivedData(response) {
+              var ownerFriends = getAndCheckError(response, 'idFriends');
+              assertEquals('Wrong friend count', 0, ownerFriends.size());
+              finished();
+            }
+
+            // Send the request
+            req.send(receivedData);
+          }
+        };
+        
+
+        function getAndCheckError(response, key) {
+          assertFalse('Data error', response.hadError());
+          var dataItem = response.get(key);
+          assertFalse('Data item error for ' + key, dataItem.hadError());
+          return dataItem.getData();
+        }
+      </script>
+    ]]>
+  </Content>
+</Module>

Modified: 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPersonTest.xml
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPersonTest.xml?rev=679724&r1=679723&r2=679724&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPersonTest.xml
 (original)
+++ 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/fetchPersonTest.xml
 Fri Jul 25 02:24:22 2008
@@ -26,61 +26,86 @@
     <![CDATA[
       <script type="text/javascript" src="testframework.js"></script>
       <script type="text/javascript">
+        var tests = {
+          /** Test fetching a specific ID */
+          fetchId: function() {
+            var req = opensocial.newDataRequest();
+
+            // Request the "canonical" viewer
+            req.add(req.newFetchPersonRequest("canonical"), "canonical");
+
+            function receivedData(response) {
+              var user = getAndCheckError(response, "canonical");
+              assertEquals("Names don't match",
+                "Sir Shin H. Digg Social Butterfly", user.getDisplayName());
+              finished();
+            }
+
+            // Send the request
+            req.send(receivedData);
+          },
+
+          /** Test fetching the owner, which should be "canonical" */
+          fetchOwner: function() {
+            var req = opensocial.newDataRequest();
+
+            // Request the "canonical" viewer
+            
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), "owner");
+
+            function receivedData(response) {
+              var user = getAndCheckError(response, "owner");
+              assertEquals("Names don't match",
+                "Sir Shin H. Digg Social Butterfly", user.getDisplayName());
+              finished();
+            }
+
+            // Send the request
+            req.send(receivedData);
+          },
+
+          /** Test fetching the viewer, which should be "john.doe" */
+          fetchViewer: function() {
+            var req = opensocial.newDataRequest();
+
+            // Request the "canonical" viewer
+            
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
+
+            function receivedData(response) {
+              var user = getAndCheckError(response, "viewer");
+              assertEquals("Names don't match",
+                "John Doe", user.getDisplayName());
+
+              finished();
+            }
+
+            // Send the request
+            req.send(receivedData);
+          },
+
+          /** Test fetching the owner and viewer as a batch */
+          fetchOwnerAndViewer: function() {
+            var req = opensocial.newDataRequest();
+
+            // Request the "canonical" viewer
+            
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), "owner");
+            
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
+
+            function receivedData(response) {
+              var user = getAndCheckError(response, "owner");
+              assertEquals("Names don't match",
+                "Sir Shin H. Digg Social Butterfly", user.getDisplayName());
+
+              user = getAndCheckError(response, "viewer");
+              assertEquals("Names don't match",
+                "John Doe", user.getDisplayName());
+              finished();
+            }
 
-        /** Test fetching a specific ID */
-        function fetchId() {
-          var req = opensocial.newDataRequest();
-
-          // Request the "canonical" viewer
-          req.add(req.newFetchPersonRequest("canonical"), "canonical");
-            
-          function receivedData(response) {
-            var user = getAndCheckError(response, "canonical");
-            assertEquals("Names don't match",
-              "Sir Shin H. Digg Social Butterfly", user.getDisplayName());
-            testFinished();
+            // Send the request
+            req.send(receivedData);
           }
-
-          // Send the request
-          req.send(receivedData);
-        }
-
-        /** Test fetching the owner, which should be "canonical" */
-        function fetchOwner() {
-          var req = opensocial.newDataRequest();
-
-          // Request the "canonical" viewer
-          req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), 
"owner");
-
-          function receivedData(response) {
-            var user = getAndCheckError(response, "owner");
-            assertEquals("Names don't match",
-              "Sir Shin H. Digg Social Butterfly", user.getDisplayName());
-            testFinished();
-          }
-
-          // Send the request
-          req.send(receivedData);
-        }
-
-        /** Test fetching the viewer, which should be "john.doe" */
-        function fetchViewer() {
-          var req = opensocial.newDataRequest();
-
-          // Request the "canonical" viewer
-          
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
-
-          function receivedData(response) {
-            var user = getAndCheckError(response, "viewer");
-            assertEquals("Names don't match",
-              "John Doe", user.getDisplayName());
-
-            testFinished();
-          }
-
-          // Send the request
-          req.send(receivedData);
-        }
+        };
+        
 
         function getAndCheckError(response, key) {
           assertFalse("Data error", response.hadError());

Modified: 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/testframework.js
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/server/src/test/resources/endtoend/testframework.js?rev=679724&r1=679723&r2=679724&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/testframework.js
 (original)
+++ 
incubator/shindig/trunk/java/server/src/test/resources/endtoend/testframework.js
 Fri Jul 25 02:24:22 2008
@@ -17,6 +17,8 @@
  * under the License.
  */
 
+var tests;
+
 function assertTrue(msg, value) {
   if (!value) {
     throw "assertTrue() failed: " + msg;
@@ -37,11 +39,11 @@
 }
 
 /**
- * Signals the server code that the test successfully finished.  This
- * method must be called to verify that the test completed successfully,
+ * Signals the server code that a test successfully finished.  This
+ * method must be called to verify that a test completed successfully,
  * instead of simply failing to load.
  */
-function testFinished() {
+function finished() {
   alert("FINISHED");
 }
 
@@ -53,13 +55,28 @@
     throw "No testMethod parameter found.";
   }
 
-  var testMethodFunction = window[testMethod];
-  if (!testMethodFunction) {
-    throw "Test method " + testMethod + " not found.";
+  // "all": run all the tests
+  if ("all" == testMethod) {
+    allTests();
+  } else {
+    // Show an alert for the test method name, identifying what test started.
+    alert(testMethod);
+
+    var testMethodFunction = tests[testMethod];
+    if (!testMethodFunction) {
+      throw "Test method " + testMethod + " not found.";
+    }
+
+    // Execute the test method
+    testMethodFunction();
   }
+}
 
-  // Execute the test method
-  testMethodFunction();
+function allTests() {
+  for (var testMethod in tests) {
+    alert(testMethod);
+    tests[testMethod]();
+  }
 }
 
 gadgets.util.registerOnLoadHandler(executeTest);


Reply via email to