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);