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());
+  }
 }


Reply via email to