Ooops, yes sorry, absolutely, (And big sorry Adam)

Should I edit the log message or leave as it is ?

Ian

On 25 Jul 2008, at 15:36, Cassie wrote:

Ian - Thanks for committing this.
In the future it would be great to add the patch providers name to the
commit log, like:

"SHINDIG-473.
Patch by Adam Winer. Adds more end to end tests etc etc"

- Cassie


On Fri, Jul 25, 2008 at 2:24 AM, <[EMAIL PROTECTED]> wrote:

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