Author: etnu
Date: Sun Jun 22 17:22:26 2008
New Revision: 670430
URL: http://svn.apache.org/viewvc?rev=670430&view=rev
Log:
Fixed a bug in type=url iframe url generation and added new test cases for
iframe url generation.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java?rev=670430&r1=670429&r2=670430&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java
Sun Jun 22 17:22:26 2008
@@ -110,8 +110,9 @@
switch (type) {
case URL:
// type = url
- buf.append(view.getHref());
- if (url.indexOf('?') == -1) {
+ String href = view.getHref().toString();
+ buf.append(href);
+ if (href.indexOf('?') == -1) {
buf.append('?');
} else {
buf.append('&');
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java?rev=670430&r1=670429&r2=670430&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java
Sun Jun 22 17:22:26 2008
@@ -19,18 +19,32 @@
package org.apache.shindig.gadgets.servlet;
import static org.easymock.EasyMock.expect;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.apache.shindig.gadgets.ContainerConfig;
+import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetFeature;
import org.apache.shindig.gadgets.GadgetFeatureRegistry;
+import org.apache.shindig.gadgets.JsLibrary;
+import org.apache.shindig.gadgets.UserPrefs;
+import org.apache.shindig.gadgets.spec.GadgetSpec;
+import com.google.common.collect.Maps;
+
+import org.apache.commons.lang.StringEscapeUtils;
import org.junit.Before;
import org.junit.Test;
+import junitx.framework.StringAssert;
+
+import java.net.URI;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Locale;
+import java.util.Map;
/**
* Tests for UrlGenerator.
@@ -38,15 +52,38 @@
public class UrlGeneratorTest {
private final static String IFR_PREFIX = "shindig/eye-frame?";
private final static String JS_PREFIX = "get-together/livescript/";
+ private final static String SPEC_URL = "http://example.org/gadget.xml";
+ private final static String TYPE_URL_HREF_HOST = "opensocial.org";
+ private final static String TYPE_URL_HREF_PATH = "/app/foo";
+ private final static String TYPE_URL_HREF_QUERY = "foo=bar&bar=baz";
+ private final static String TYPE_URL_HREF
+ = "http://" + TYPE_URL_HREF_HOST + TYPE_URL_HREF_PATH + '?' +
TYPE_URL_HREF_QUERY;
+ private final static String UP_NAME = "user-pref-name";
+ private final static String UP_VALUE = "user-pref-value";
+ private final static String CONTAINER = "shindig";
+ private final static int MODULE_ID = 3435;
private final ServletTestFixture fixture = new ServletTestFixture();
private final GadgetFeatureRegistry featureRegistry =
fixture.mock(GadgetFeatureRegistry.class);
private final ContainerConfig containerConfig =
fixture.mock(ContainerConfig.class);
private final GadgetContext context = fixture.mock(GadgetContext.class);
+ private UrlGenerator urlGenerator;
@Before
public void setUp() throws Exception {
expect(featureRegistry.getAllFeatures()).andReturn(new
ArrayList<GadgetFeature>());
+ fixture.replay();
+ urlGenerator = new UrlGenerator(IFR_PREFIX, JS_PREFIX, featureRegistry,
containerConfig);
+ fixture.reset();
+
+ expect(context.getContainer()).andReturn(CONTAINER).anyTimes();
+ expect(context.getUrl()).andReturn(URI.create(SPEC_URL)).anyTimes();
+ Map<String, String> prefMap = Maps.newHashMap();
+ prefMap.put(UP_NAME, UP_VALUE);
+ UserPrefs prefs = new UserPrefs(prefMap);
+ expect(context.getUserPrefs()).andReturn(prefs).anyTimes();
+ expect(context.getLocale()).andReturn(Locale.getDefault()).anyTimes();
+ expect(context.getModuleId()).andReturn(MODULE_ID).anyTimes();
}
@Test
@@ -54,15 +91,13 @@
List<String> features = new ArrayList<String>();
features.add("foo");
features.add("bar");
- expect(context.getContainer()).andReturn("shindig");
expect(context.getDebug()).andReturn(true);
fixture.replay();
- UrlGenerator urlGenerator
- = new UrlGenerator(IFR_PREFIX, JS_PREFIX, featureRegistry,
containerConfig);
String jsParam = urlGenerator.getBundledJsParam(features, context);
-
assertTrue(jsParam.matches("foo:bar\\.js\\?v=[0-9a-zA-Z]*&container=shindig&debug=1"));
+ assertTrue(
+ jsParam.matches("foo:bar\\.js\\?v=[0-9a-zA-Z]*&container=" + CONTAINER
+ "&debug=1"));
}
@Test
@@ -70,45 +105,76 @@
List<String> features = new ArrayList<String>();
features.add("foo!");
features.add("bar");
- expect(context.getContainer()).andReturn("opensocial.org");
expect(context.getDebug()).andReturn(true);
fixture.replay();
- UrlGenerator urlGenerator
- = new UrlGenerator(IFR_PREFIX, JS_PREFIX, featureRegistry,
containerConfig);
String jsParam = urlGenerator.getBundledJsParam(features, context);
-
assertTrue(jsParam.matches("bar\\.js\\?v=[0-9a-zA-Z]*&container=opensocial.org&debug=1"));
+ assertTrue(jsParam.matches("bar\\.js\\?v=[0-9a-zA-Z]*&container=" +
CONTAINER + "&debug=1"));
}
@Test
public void getBundledJsParamWithNoFeatures() throws Exception {
List<String> features = new ArrayList<String>();
- expect(context.getContainer()).andReturn("apache.org");
expect(context.getDebug()).andReturn(false);
fixture.replay();
- UrlGenerator urlGenerator
- = new UrlGenerator(IFR_PREFIX, JS_PREFIX, featureRegistry,
containerConfig);
String jsParam = urlGenerator.getBundledJsParam(features, context);
-
assertTrue(jsParam.matches("core\\.js\\?v=[0-9a-zA-Z]*&container=apache.org&debug=0"));
+ assertTrue(jsParam.matches("core\\.js\\?v=[0-9a-zA-Z]*&container=" +
CONTAINER + "&debug=0"));
}
@Test
public void getBundledJsUrl() throws Exception {
List<String> features = new ArrayList<String>();
- expect(context.getContainer()).andReturn("myhibebfacekut");
expect(context.getDebug()).andReturn(false);
fixture.replay();
- UrlGenerator urlGenerator
- = new UrlGenerator(IFR_PREFIX, JS_PREFIX, featureRegistry,
containerConfig);
String jsParam = urlGenerator.getBundledJsUrl(features, context);
- assertTrue(
- jsParam.matches(JS_PREFIX +
"core\\.js\\?v=[0-9a-zA-Z]*&container=myhibebfacekut&debug=0"));
+ assertTrue(jsParam.matches(
+ JS_PREFIX + "core\\.js\\?v=[0-9a-zA-Z]*&container=" + CONTAINER +
"&debug=0"));
}
- // TODO: iframe output tests.
+ @Test
+ public void getIframeUrlTypeHtml() throws Exception {
+ String xml
+ = "<Module>" +
+ " <ModulePrefs title='test'/>" +
+ " <Content type='html'/>" +
+ " <UserPref name='" + UP_NAME + "' datatype='string'/>" +
+ "</Module>";
+ GadgetSpec spec = new GadgetSpec(URI.create(SPEC_URL), xml);
+ Gadget gadget = new Gadget(context, spec,
Collections.<JsLibrary>emptyList());
+ fixture.replay();
+
+ URI iframeUrl = URI.create(urlGenerator.getIframeUrl(gadget));
+
+ assertEquals(IFR_PREFIX, iframeUrl.getPath() + '?');
+ StringAssert.assertContains("container=" + CONTAINER,
iframeUrl.getQuery());
+ StringAssert.assertContains("up_" + UP_NAME + "=" + UP_VALUE,
iframeUrl.getQuery());
+ StringAssert.assertContains("mid=" + MODULE_ID, iframeUrl.getQuery());
+ }
+
+ @Test
+ public void getIframeUrlTypeUrl() throws Exception {
+ String xml
+ = "<Module>" +
+ " <ModulePrefs title='test'/>" +
+ " <Content type='url' href='" +
StringEscapeUtils.escapeHtml(TYPE_URL_HREF) + "'/>" +
+ " <UserPref name='" + UP_NAME + "' datatype='string'/>" +
+ "</Module>";
+ GadgetSpec spec = new GadgetSpec(URI.create(SPEC_URL), xml);
+ Gadget gadget = new Gadget(context, spec,
Collections.<JsLibrary>emptyList());
+ fixture.replay();
+
+ URI iframeUrl = URI.create(urlGenerator.getIframeUrl(gadget));
+
+ assertEquals(TYPE_URL_HREF_HOST, iframeUrl.getAuthority());
+ assertEquals(TYPE_URL_HREF_PATH, iframeUrl.getPath());
+ StringAssert.assertContains(TYPE_URL_HREF_QUERY, iframeUrl.getQuery());
+ StringAssert.assertContains("container=" + CONTAINER,
iframeUrl.getQuery());
+ StringAssert.assertContains("up_" + UP_NAME + "=" + UP_VALUE,
iframeUrl.getQuery());
+ StringAssert.assertContains("mid=" + MODULE_ID, iframeUrl.getQuery());
+ }
}