You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/09/07 10:02:18 UTC
svn commit: r993268 [6/8] - in /shindig/branches/2.0.x: ./ config/
content/container/ content/samplecontainer/ content/sampledata/
extras/src/main/java/org/apache/shindig/extras/
extras/src/main/java/org/apache/shindig/extras/as/ extras/src/main/java/o...
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizerTest.java Tue Sep 7 08:02:11 2010
@@ -17,42 +17,84 @@
*/
package org.apache.shindig.gadgets.parse.caja;
+import com.google.caja.parser.css.CssTree;
+import com.google.common.collect.ImmutableMap;
+
import org.apache.shindig.common.EasyMockTestCase;
import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.ContainerConfig;
+import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.render.SanitizingProxyUriManager;
-import org.apache.shindig.gadgets.uri.PassthruManager;
+import org.apache.shindig.gadgets.uri.DefaultProxyUriManager;
import org.apache.shindig.gadgets.uri.ProxyUriManager;
-
-import com.google.caja.parser.css.CssTree;
import org.junit.Before;
import org.junit.Test;
+import java.util.HashMap;
+import java.util.Map;
+
/**
- *
+ * Tests for CajaCssSanitizer.
*/
public class CajaCssSanitizerTest extends EasyMockTestCase {
-
private CajaCssParser parser;
private CajaCssSanitizer sanitizer;
private final Uri DUMMY = Uri.parse("http://www.example.org/base");
- private ProxyUriManager passthruManager;
private SanitizingProxyUriManager importRewriter;
private SanitizingProxyUriManager imageRewriter;
+ private GadgetContext gadgetContext;
+ public static final String MOCK_CONTAINER = "mockContainer";
+
+ private static class FakeContainerConfig extends AbstractContainerConfig {
+ private Map<String, Map<String, Object>> containers =
+ new HashMap<String, Map<String, Object>>();
+
+ private FakeContainerConfig() {
+ containers.put(ContainerConfig.DEFAULT_CONTAINER, ImmutableMap.<String, Object>builder()
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.test.com")
+ .put(DefaultProxyUriManager.PROXY_PATH_PARAM, "/dir/proxy")
+ .build());
+ containers.put(MOCK_CONTAINER, ImmutableMap.<String, Object>builder()
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
+ .build());
+ }
+
+ @Override
+ public Object getProperty(String container, String name) {
+ Map<String, Object> data = containers.get(container);
+
+ // Inherit from default if there is no value for this key.
+ if (!data.containsKey(name)) {
+ data = containers.get(ContainerConfig.DEFAULT_CONTAINER);
+ }
+ return data.get(name);
+ }
+ }
@Before
public void setUp() throws Exception {
parser = new CajaCssParser();
sanitizer = new CajaCssSanitizer(parser);
- passthruManager = new PassthruManager("test.com", "/proxy/path");
- importRewriter = new SanitizingProxyUriManager(passthruManager, "text/css");
- imageRewriter = new SanitizingProxyUriManager(passthruManager, "image/*");
+
+ ContainerConfig config = new FakeContainerConfig();
+ ProxyUriManager proxyUriManager = new DefaultProxyUriManager(config, null);
+
+ importRewriter = new SanitizingProxyUriManager(proxyUriManager, "text/css");
+ imageRewriter = new SanitizingProxyUriManager(proxyUriManager, "image/*");
+ gadgetContext = new GadgetContext() {
+ @Override
+ public String getContainer() {
+ return MOCK_CONTAINER;
+ }
+ };
}
@Test
public void testPreserveSafe() throws Exception {
String css = ".xyz { font: bold;} A { color: #7f7f7f}";
CssTree.StyleSheet styleSheet = parser.parseDom(css);
- sanitizer.sanitize(styleSheet, DUMMY, importRewriter, imageRewriter);
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
assertStyleEquals(css, styleSheet);
}
@@ -60,7 +102,7 @@ public class CajaCssSanitizerTest extend
public void testSanitizeFunctionCall() throws Exception {
String css = ".xyz { font : iamevil(bold); }";
CssTree.StyleSheet styleSheet = parser.parseDom(css);
- sanitizer.sanitize(styleSheet, DUMMY, importRewriter, imageRewriter);
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
assertStyleEquals(".xyz {}", styleSheet);
}
@@ -68,7 +110,7 @@ public class CajaCssSanitizerTest extend
public void testSanitizeUnsafeProperties() throws Exception {
String css = ".xyz { behavior: url('xyz.htc'); -moz-binding:url(\"http://ha.ckers.org/xssmoz.xml#xss\") }";
CssTree.StyleSheet styleSheet = parser.parseDom(css);
- sanitizer.sanitize(styleSheet, DUMMY, importRewriter, imageRewriter);
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
assertStyleEquals(".xyz {}", styleSheet);
}
@@ -76,7 +118,7 @@ public class CajaCssSanitizerTest extend
public void testSanitizeScriptUrls() throws Exception {
String css = ".xyz { background: url('javascript:doevill'); background : url(vbscript:moreevil); }";
CssTree.StyleSheet styleSheet = parser.parseDom(css);
- sanitizer.sanitize(styleSheet, DUMMY, importRewriter, imageRewriter);
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
assertStyleEquals(".xyz {}", styleSheet);
}
@@ -84,20 +126,41 @@ public class CajaCssSanitizerTest extend
public void testProxyUrls() throws Exception {
String css = ".xyz { background: url('http://www.example.org/img.gif');}";
CssTree.StyleSheet styleSheet = parser.parseDom(css);
- sanitizer.sanitize(styleSheet, DUMMY, importRewriter, imageRewriter);
- assertStyleEquals(
- ".xyz { background: url('http://test.com/proxy/path?url=" +
- "http%3A%2F%2Fwww.example.org%2Fimg.gif" +
- "&sanitize=1&rewriteMime=image%2F%2a');}", styleSheet);
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
+ assertStyleEquals(".xyz { " +
+ "background: url('//www.mock.com/dir/proxy?container=mockContainer&gadget=http%3A%2F%2Fwww.example.org%2Fbase" +
+ "&debug=0&nocache=0&url=http%3A%2F%2Fwww.example.org%2Fimg.gif&" +
+ "sanitize=1&rewriteMime=image%2F%2a');}", styleSheet);
+ }
+
+ @Test
+ public void testUrlEscapingMockContainer() throws Exception {
+ String css = ".xyz { background: url('http://www.example.org/img.gif');}";
+ CssTree.StyleSheet styleSheet = parser.parseDom(css);
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
+ assertEquals(".xyz{" +
+ "background:url('//www.mock.com/dir/proxy?container=mockContainer&gadget=http%3A%2F%2Fwww.example.org%2Fbase" +
+ "&debug=0&nocache=0&url=http%3A%2F%2Fwww.example.org%2Fimg.gif" +
+ "&sanitize=1&rewriteMime=image%2F%2a');}",
+ parser.serialize(styleSheet).replaceAll("\\s", ""));
}
@Test
- public void testUrlEscaping() throws Exception {
+ public void testUrlEscapingDefaultContainer() throws Exception {
String css = ".xyz { background: url('http://www.example.org/img.gif');}";
CssTree.StyleSheet styleSheet = parser.parseDom(css);
- sanitizer.sanitize(styleSheet, DUMMY, importRewriter, imageRewriter);
- assertEquals(".xyz{background:url('http://test.com/proxy/path?url=http%3A%2F%2Fwww.example.org%2F" +
- "img.gif&sanitize=1&rewriteMime=image%2F%2a');}",
+ GadgetContext gadgetContext = new GadgetContext() {
+ @Override
+ public String getContainer() {
+ return ContainerConfig.DEFAULT_CONTAINER;
+ }
+ };
+
+ sanitizer.sanitize(styleSheet, DUMMY, gadgetContext, importRewriter, imageRewriter);
+ assertEquals(".xyz{" +
+ "background:url('//www.test.com/dir/proxy?container=default&gadget=http%3A%2F%2Fwww.example.org%2Fbase" +
+ "&debug=0&nocache=0&url=http%3A%2F%2Fwww.example.org%2Fimg.gif" +
+ "&sanitize=1&rewriteMime=image%2F%2a');}",
parser.serialize(styleSheet).replaceAll("\\s", ""));
}
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/PipelinedDataPreloaderTest.java Tue Sep 7 08:02:11 2010
@@ -74,7 +74,7 @@ public class PipelinedDataPreloaderTest
+ "refreshInterval=\"60\" method=\"POST\"/>" + "</Content></Module>";
private static final String XML_WITH_VARIABLE = "<Module " +
- "xmlns:os=\"" + PipelinedData.OPENSOCIAL_NAMESPACE + "\" " +
+ "xmlns:os=\"" + PipelinedData.OPENSOCIAL_NAMESPACE + "\" " +
"xmlns:osx=\"" + PipelinedData.EXTENSION_NAMESPACE + "\">"
+ "<ModulePrefs title=\"Title\"/>"
+ "<Content href=\"http://example.org/proxied.php\" view=\"profile\">"
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ConcatVisitorTest.java Tue Sep 7 08:02:11 2010
@@ -41,7 +41,7 @@ import java.util.List;
import java.util.Map;
public class ConcatVisitorTest extends DomWalkerTestBase {
- private static final String JS1_URL_STR = "http://one.com/foo.js";
+ private static final String JS1_URL_STR = "http://one.com/foo.js?test=1&ui=2";
private Node js1;
private static final String JS2_URL_STR = "http://two.com/foo.js";
@@ -85,7 +85,16 @@ public class ConcatVisitorTest extends D
private static final String CSS9_URL_STR = "http://nine.com/foo.js";
private Node css9;
-
+
+ private static final String CSS10_URL_STR = "http://ten.com/foo.js";
+ private Node css10;
+
+ private static final String CSS11_URL_STR = "http://eleven.com/foo.js";
+ private Node css11;
+
+ private static final String CSS12_URL_STR = "http://twelve.com/foo.js";
+ private Node css12;
+
private static final Uri CONCAT_BASE_URI = Uri.parse("http://test.com/proxy");
@Before
@@ -97,17 +106,18 @@ public class ConcatVisitorTest extends D
js4 = elem("script", "src", JS4_URL_STR);
js5 = elem("script", "src", JS5_URL_STR);
js6 = elem("script", "src", JS6_URL_STR);
- css1 = elem("link", "rel", "stylesheet", "type", "text/css", "href", CSS1_URL_STR);
+ css1 = elem("link", "rel", "Stylesheet", "type", "Text/css", "href", CSS1_URL_STR);
css2 = elem("link", "rel", "stylesheet", "type", "text/css", "href", CSS2_URL_STR);
css3 = elem("link", "rel", "stylesheet", "type", "text/css", "href", CSS3_URL_STR);
css4 = elem("link", "rel", "stylesheet", "type", "text/css", "href", CSS4_URL_STR);
css5 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "print", "href", CSS5_URL_STR);
- css6 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "print", "href",
- CSS6_URL_STR);
+ css6 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "print", "href", CSS6_URL_STR);
css7 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "screen", "href", CSS7_URL_STR);
css8 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "screen", "href", CSS8_URL_STR);
css9 = elem("link", "rel", "stylesheet", "type", "text/css", "href", CSS9_URL_STR);
-
+ css10 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "all", "href", CSS10_URL_STR);
+ css11 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "all", "href", CSS11_URL_STR);
+ css12 = elem("link", "rel", "stylesheet", "type", "text/css", "media", "all", "href", CSS12_URL_STR);
}
@Test
@@ -161,19 +171,49 @@ public class ConcatVisitorTest extends D
assertEquals(VisitStatus.BYPASS, getVisitStatusJs(config, sep2));
assertEquals(VisitStatus.BYPASS, getVisitStatusJs(config, js3));
}
-
+
+ @Test
+ public void visitValidCss() throws Exception {
+ Node textNode = doc.createTextNode("");
+ Node node = elem("link", "type", "text/css", "rel", "stylesheet", "href", CSS1_URL_STR);
+ seqNodes(node, textNode, css1);
+ assertEquals(VisitStatus.RESERVE_NODE, getVisitStatusCss(node, null));
+ }
+
+ @Test
+ public void dontVisitCssSeperatedByNonEmptyTextNode() throws Exception {
+ Node textNode = doc.createTextNode("Data\n");
+ Node node = elem("link", "type", "text/css", "rel", "stylesheet", "href", CSS1_URL_STR);
+ seqNodes(node, textNode, css1);
+ assertEquals(VisitStatus.BYPASS, getVisitStatusCss(node, null));
+ }
+
@Test
- public void visitRelFreeCss() throws Exception {
+ public void dontVisitRelFreeCss() throws Exception {
Node node = elem("link", "type", "text/css", "href", CSS1_URL_STR);
seqNodes(node, css1);
- assertEquals(VisitStatus.RESERVE_NODE, getVisitStatusCss(node, null));
+ assertEquals(VisitStatus.BYPASS, getVisitStatusCss(node, null));
}
@Test
- public void visitTypeCssFreeCss() throws Exception {
+ public void dontVisitTypeCssFreeCss() throws Exception {
Node node = elem("link", "rel", "stylesheet", "href", CSS1_URL_STR);
seqNodes(node, css1);
- assertEquals(VisitStatus.RESERVE_NODE, getVisitStatusCss(node, null));
+ assertEquals(VisitStatus.BYPASS, getVisitStatusCss(node, null));
+ }
+
+ @Test
+ public void dontVisitTypeCssWrongRelAttributes() throws Exception {
+ Node node = elem("link", "rel", "alternate", "type", "text/css", "href", CSS1_URL_STR);
+ seqNodes(node, css1);
+ assertEquals(VisitStatus.BYPASS, getVisitStatusCss(node, null));
+ }
+
+ @Test
+ public void dontVisitTypeCssWrongTypeAttributes() throws Exception {
+ Node node = elem("link", "rel", "stylesheet", "type", "text/javascript", "href", CSS1_URL_STR);
+ seqNodes(node, css1);
+ assertEquals(VisitStatus.BYPASS, getVisitStatusCss(node, null));
}
@Test
@@ -331,7 +371,7 @@ public class ConcatVisitorTest extends D
assertEquals(CSS2_URL_STR, concatUri1.getQueryParameter("2"));
assertNull(concatUri1.getQueryParameter("3"));
- assertEquals(3, parent2.getChildNodes().getLength());
+ assertEquals(2, parent2.getChildNodes().getLength());
Element cn2 = (Element)parent2.getChildNodes().item(0);
Uri concatUri2 = Uri.parse(cn2.getAttribute("href").replace("&", "&"));
assertEquals(CONCAT_BASE_URI.getScheme(), concatUri2.getScheme());
@@ -339,8 +379,10 @@ public class ConcatVisitorTest extends D
assertEquals(CONCAT_BASE_URI.getPath(), concatUri2.getPath());
assertEquals(CSS3_URL_STR, concatUri2.getQueryParameter("1"));
assertEquals(CSS4_URL_STR, concatUri2.getQueryParameter("2"));
- assertEquals(CSS9_URL_STR, concatUri2.getQueryParameter("3"));
- assertNull(concatUri2.getQueryParameter("4"));
+ assertEquals(CSS7_URL_STR, concatUri2.getQueryParameter("3"));
+ assertEquals(CSS8_URL_STR, concatUri2.getQueryParameter("4"));
+ assertEquals(CSS9_URL_STR, concatUri2.getQueryParameter("5"));
+ assertNull(concatUri2.getQueryParameter("6"));
assertEquals("", cn2.getAttribute("media"));
Element cn3 = (Element)parent2.getChildNodes().item(1);
@@ -352,18 +394,90 @@ public class ConcatVisitorTest extends D
assertEquals(CSS6_URL_STR, concatUri3.getQueryParameter("2"));
assertNull(concatUri3.getQueryParameter("3"));
assertEquals("print", cn3.getAttribute("media"));
-
- Element cn4 = (Element)parent2.getChildNodes().item(2);
+ }
+
+ @Test
+ public void concatMultiBatchCssWithAllMediaTypeAndTitle() throws Exception {
+ List<Node> fullListCss = Lists.newArrayList();
+ // modify few node to have the title attriblue.
+ ((Element) css2).setAttribute("title", "one");
+ ((Element) css3).setAttribute("title", "two");
+ ((Element) css4).setAttribute("title", "two");
+ ((Element) css10).setAttribute("title", "two");
+ fullListCss.addAll(seqNodes(css1, css2, css3, css4, css10, css11, css12, css7, css8, css9));
+ Node parent1 = css1.getParentNode();
+ assertEquals(10, parent1.getChildNodes().getLength());
+
+ SimpleConcatUriManager mgr = simpleMgr();
+ ConcatVisitor.Css rewriter = new ConcatVisitor.Css(config(null, false), mgr);
+ assertTrue(rewriter.revisit(gadget(), fullListCss));
+
+ // Should have been split across 'all' media type and then batches should be independently
+ // concatenated.
+ Element cn1 = (Element)parent1.getChildNodes().item(0);
+ Uri concatUri1 = Uri.parse(cn1.getAttribute("href").replace("&", "&"));
+ assertEquals(CONCAT_BASE_URI.getScheme(), concatUri1.getScheme());
+ assertEquals(CONCAT_BASE_URI.getAuthority(), concatUri1.getAuthority());
+ assertEquals(CONCAT_BASE_URI.getPath(), concatUri1.getPath());
+ assertEquals(CSS1_URL_STR, concatUri1.getQueryParameter("1"));
+ assertNull(concatUri1.getQueryParameter("2"));
+ assertEquals("", cn1.getAttribute("media"));
+
+ Element cn2 = (Element)parent1.getChildNodes().item(1);
+ Uri concatUri2 = Uri.parse(cn2.getAttribute("href").replace("&", "&"));
+ assertEquals(CONCAT_BASE_URI.getScheme(), concatUri2.getScheme());
+ assertEquals(CONCAT_BASE_URI.getAuthority(), concatUri2.getAuthority());
+ assertEquals(CONCAT_BASE_URI.getPath(), concatUri2.getPath());
+ assertEquals(CSS2_URL_STR, concatUri2.getQueryParameter("1"));
+ assertNull(concatUri2.getQueryParameter("2"));
+ assertEquals("", cn2.getAttribute("media"));
+ assertEquals("one", cn2.getAttribute("title"));
+
+ Element cn3 = (Element)parent1.getChildNodes().item(2);
+ Uri concatUri3 = Uri.parse(cn3.getAttribute("href").replace("&", "&"));
+ assertEquals(CONCAT_BASE_URI.getScheme(), concatUri3.getScheme());
+ assertEquals(CONCAT_BASE_URI.getAuthority(), concatUri3.getAuthority());
+ assertEquals(CONCAT_BASE_URI.getPath(), concatUri3.getPath());
+ assertEquals(CSS3_URL_STR, concatUri3.getQueryParameter("1"));
+ assertEquals(CSS4_URL_STR, concatUri3.getQueryParameter("2"));
+ assertNull(concatUri3.getQueryParameter("3"));
+ assertEquals("", cn3.getAttribute("media"));
+ assertEquals("two", cn3.getAttribute("title"));
+
+ Element cn4 = (Element)parent1.getChildNodes().item(3);
Uri concatUri4 = Uri.parse(cn4.getAttribute("href").replace("&", "&"));
assertEquals(CONCAT_BASE_URI.getScheme(), concatUri4.getScheme());
assertEquals(CONCAT_BASE_URI.getAuthority(), concatUri4.getAuthority());
assertEquals(CONCAT_BASE_URI.getPath(), concatUri4.getPath());
- assertEquals(CSS7_URL_STR, concatUri4.getQueryParameter("1"));
- assertEquals(CSS8_URL_STR, concatUri4.getQueryParameter("2"));
- assertNull(concatUri4.getQueryParameter("3"));
- assertEquals("screen", cn4.getAttribute("media"));
+ assertEquals(CSS10_URL_STR, concatUri4.getQueryParameter("1"));
+ assertNull(concatUri4.getQueryParameter("2"));
+ assertEquals("all", cn4.getAttribute("media"));
+ assertEquals("two", cn4.getAttribute("title"));
+
+ Element cn5 = (Element)parent1.getChildNodes().item(4);
+ Uri concatUri5 = Uri.parse(cn5.getAttribute("href").replace("&", "&"));
+ assertEquals(CONCAT_BASE_URI.getScheme(), concatUri5.getScheme());
+ assertEquals(CONCAT_BASE_URI.getAuthority(), concatUri5.getAuthority());
+ assertEquals(CONCAT_BASE_URI.getPath(), concatUri5.getPath());
+ assertEquals(CSS11_URL_STR, concatUri5.getQueryParameter("1"));
+ assertEquals(CSS12_URL_STR, concatUri5.getQueryParameter("2"));
+ assertNull(concatUri5.getQueryParameter("3"));
+ assertEquals("all", cn5.getAttribute("media"));
+ assertEquals("", cn5.getAttribute("title"));
+
+ Element cn6 = (Element)parent1.getChildNodes().item(5);
+ Uri concatUri6 = Uri.parse(cn6.getAttribute("href").replace("&", "&"));
+ assertEquals(CONCAT_BASE_URI.getScheme(), concatUri6.getScheme());
+ assertEquals(CONCAT_BASE_URI.getAuthority(), concatUri6.getAuthority());
+ assertEquals(CONCAT_BASE_URI.getPath(), concatUri6.getPath());
+ assertEquals(CSS7_URL_STR, concatUri6.getQueryParameter("1"));
+ assertEquals(CSS8_URL_STR, concatUri6.getQueryParameter("2"));
+ assertEquals(CSS9_URL_STR, concatUri6.getQueryParameter("3"));
+ assertNull(concatUri6.getQueryParameter("4"));
+ assertEquals("screen", cn6.getAttribute("media"));
+ assertEquals("", cn6.getAttribute("title"));
}
-
+
@Test
public void concatMultiBatchJsBadBatch() throws Exception {
List<Node> fullListJs = Lists.newArrayList();
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java Tue Sep 7 08:02:11 2010
@@ -17,15 +17,18 @@
*/
package org.apache.shindig.gadgets.rewrite;
-import static org.junit.Assert.assertEquals;
-
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.ContainerConfig;
+import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
import org.apache.shindig.gadgets.parse.caja.CajaCssParser;
-import org.apache.shindig.gadgets.uri.PassthruManager;
+import org.apache.shindig.gadgets.uri.DefaultProxyUriManager;
import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.easymock.EasyMock;
import org.junit.Before;
@@ -33,17 +36,47 @@ import org.junit.Test;
import java.io.StringReader;
import java.io.StringWriter;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
-import com.google.common.collect.Lists;
+import static org.junit.Assert.assertEquals;
/**
- *
+ * Tests for CssResponseRewriter.
*/
public class CssResponseRewriterTest extends RewriterTestBase {
+ private static class FakeContainerConfig extends AbstractContainerConfig {
+ private Map<String, Map<String, Object>> containers = new HashMap<String, Map<String, Object>>();
+
+ private FakeContainerConfig() {
+ containers.put(ContainerConfig.DEFAULT_CONTAINER, ImmutableMap.<String, Object>builder()
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.test.com")
+ .put(DefaultProxyUriManager.PROXY_PATH_PARAM, "/dir/proxy")
+ .build());
+
+ containers.put(MOCK_CONTAINER, ImmutableMap.<String, Object>builder()
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
+ .build());
+ }
+
+ @Override
+ public Object getProperty(String container, String name) {
+ Map<String, Object> data = containers.get(container);
+
+ //if there is no value by this key inherit from default
+ if (!data.containsKey(name)) {
+ data = containers.get(ContainerConfig.DEFAULT_CONTAINER);
+ }
+
+ return data.get(name);
+ }
+ }
+
private CssResponseRewriter rewriter;
private CssResponseRewriter rewriterNoOverrideExpires;
private Uri dummyUri;
+ private GadgetContext gadgetContext;
private ProxyUriManager proxyUriManager;
private ContentRewriterFeature.Factory factory;
@@ -60,7 +93,8 @@ public class CssResponseRewriterTest ext
return overrideFeatureNoOverrideExpires;
}
};
- proxyUriManager = new PassthruManager("www.test.com", "/dir/proxy");
+ ContainerConfig config = new FakeContainerConfig();
+ proxyUriManager = new DefaultProxyUriManager(config, null);
rewriterNoOverrideExpires = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factoryNoOverrideExpires);
final ContentRewriterFeature.Config overrideFeature =
@@ -75,6 +109,12 @@ public class CssResponseRewriterTest ext
rewriter = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factory);
dummyUri = Uri.parse("http://www.w3c.org");
+ gadgetContext = new GadgetContext() {
+ @Override
+ public Uri getUrl() {
+ return dummyUri;
+ }
+ };
}
@Test
@@ -120,7 +160,7 @@ public class CssResponseRewriterTest ext
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritebasic.css"));
String expected = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css"));
- expected = expected.replace("fp=1150739864", "fp=1150739864&nocache=1");
+ expected = expected.replace("nocache=0", "nocache=1");
HttpRequest request = new HttpRequest(Uri.parse("http://www.example.org/path/rewritebasic.css"));
request.setMethod("GET");
request.setGadget(SPEC_URL);
@@ -141,7 +181,7 @@ public class CssResponseRewriterTest ext
String expected = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css"));
expected = replaceDefaultWithMockServer(expected);
- proxyUriManager = new PassthruManager("www.mock.com", "/dir/proxy");
+ expected = expected.replace("container=default", "container=" + MOCK_CONTAINER);
rewriter = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factory);
@@ -189,9 +229,13 @@ public class CssResponseRewriterTest ext
"div {list-style-image:url('http://a.b.com/bullet.gif');list-style-position:outside;margin:5px;padding:0}\n" +
".someid {background-image:url(http://a.b.com/bigimg.png);float:right;width:165px;height:23px;margin-top:4px;margin-left:5px}";
String rewritten =
- "div {list-style-image:url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fa.b.com%2Fbullet.gif');\n"
+ "div {list-style-image:url('//www.test.com/dir/proxy?container=default"
+ + "&gadget=http%3A%2F%2Fwww.w3c.org&debug=0&nocache=0"
+ + "&url=http%3A%2F%2Fa.b.com%2Fbullet.gif');\n"
+ "list-style-position:outside;margin:5px;padding:0}\n"
- + ".someid {background-image:url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fa.b.com%2Fbigimg.png');\n"
+ + ".someid {background-image:url('//www.test.com/dir/proxy?container=default"
+ + "&gadget=http%3A%2F%2Fwww.w3c.org&debug=0&nocache=0"
+ + "&url=http%3A%2F%2Fa.b.com%2Fbigimg.png');\n"
+ "float:right;width:165px;height:23px;margin-top:4px;margin-left:5px}";
validateRewritten(original, rewritten);
}
@@ -210,7 +254,8 @@ public class CssResponseRewriterTest ext
StringWriter sw = new StringWriter();
List<String> stringList = rewriter
.rewrite(new StringReader(original), dummyUri,
- CssResponseRewriter.uriMaker(proxyUriManager, defaultRewriterFeature), sw, true);
+ CssResponseRewriter.uriMaker(proxyUriManager, defaultRewriterFeature), sw,
+ true, gadgetContext);
assertEquals(StringUtils.deleteWhitespace(expected),
StringUtils.deleteWhitespace(sw.toString()));
assertEquals(Lists.newArrayList("www.example.org/some.css",
@@ -225,7 +270,8 @@ public class CssResponseRewriterTest ext
StringWriter sw = new StringWriter();
List<String> stringList = rewriter
.rewrite(new StringReader(original), dummyUri,
- CssResponseRewriter.uriMaker(proxyUriManager, defaultRewriterFeature), sw, true);
+ CssResponseRewriter.uriMaker(proxyUriManager, defaultRewriterFeature), sw,
+ true, gadgetContext);
assertEquals(StringUtils.deleteWhitespace(expected),
StringUtils.deleteWhitespace(sw.toString()));
assertEquals(Lists.newArrayList("www.example.org/some.css"), stringList);
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingVisitorTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingVisitorTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingVisitorTest.java Tue Sep 7 08:02:11 2010
@@ -191,5 +191,10 @@ public class ProxyingVisitorTest extends
assertEquals("^!,,|BLARGH", e2.getAttribute("src"));
assertEquals(rewrittenUri.toString(), e3.getAttribute("src"));
assertEquals(rewrittenUri.toString(), e4.getAttribute("src"));
+
+ // Test that the html tag context has been correctly filled.
+ assertEquals("script", cap.getValue().get(0).getHtmlTagContext());
+ assertEquals("img", cap.getValue().get(1).getHtmlTagContext());
+ assertEquals("script", cap.getValue().get(2).getHtmlTagContext());
}
}
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleAdjacencyVisitorTest.java Tue Sep 7 08:02:11 2010
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.rewrite.DomWalker.Visitor.VisitStatus;
import org.w3c.dom.Node;
@@ -60,7 +61,7 @@ public class StyleAdjacencyVisitorTest e
public void visitLinkCaseInsensitive() throws Exception {
Node node = elem("lINK", "REL", "stYlEsheet");
assertEquals(VisitStatus.RESERVE_TREE, visit(node));
- node = elem("LINk", "tyPe", "csS");
+ node = elem("LINk", "tyPe", "text/csS");
assertEquals(VisitStatus.RESERVE_TREE, visit(node));
}
@@ -81,7 +82,13 @@ public class StyleAdjacencyVisitorTest e
Node node = elem("link");
assertEquals(VisitStatus.BYPASS, visit(node));
}
-
+
+ @Test
+ public void bypassLinkWithWrongAttribs() throws Exception {
+ Node node = elem("link", "type", "somecss");
+ assertEquals(VisitStatus.BYPASS, visit(node));
+ }
+
@Test
public void bypassText() throws Exception {
Node node = doc.createTextNode("text");
@@ -110,7 +117,7 @@ public class StyleAdjacencyVisitorTest e
// Reshuffling validation.
assertEquals(4, head.getChildNodes().getLength());
- assertSame(style, head.getChildNodes().item(3)); // Last.
+ assertSame(style, head.getChildNodes().item(0)); // First.
}
@Test
@@ -129,10 +136,37 @@ public class StyleAdjacencyVisitorTest e
// Reshuffling validation.
assertEquals(2, head.getChildNodes().getLength());
- assertSame(style, head.getChildNodes().item(1)); // Last.
+ assertSame(style, head.getChildNodes().item(0)); // First.
assertEquals(3, body.getChildNodes().getLength());
}
-
+
+ @Test
+ public void reshuffleMultipleStyleNodesWithNoChildernInHead() throws Exception {
+ Node style1 = elem("style");
+ Node style2 = elem("style");
+ Node style3 = elem("style");
+
+ // Some in head, some in body.
+ Node html = htmlDoc(new Node[] {}, elem("script"), style1, elem("foo"),
+ doc.createTextNode("text1"), style2, doc.createComment("comment"), elem("div"),
+ style3);
+ assertTrue(revisit(style1, style2, style3));
+
+ // Document structure sanity tests.
+ assertEquals(2, html.getChildNodes().getLength());
+ Node head = html.getFirstChild();
+ assertEquals("head", head.getNodeName());
+ Node body = html.getLastChild();
+ assertEquals("body", body.getNodeName());
+
+ // Reshuffling validation.
+ assertEquals(3, head.getChildNodes().getLength());
+ assertSame(style1, head.getChildNodes().item(0));
+ assertSame(style2, head.getChildNodes().item(1));
+ assertSame(style3, head.getChildNodes().item(2));
+ assertEquals(5, body.getChildNodes().getLength());
+ }
+
@Test
public void reshuffleMultipleStyleNodes() throws Exception {
Node style1 = elem("style");
@@ -154,9 +188,9 @@ public class StyleAdjacencyVisitorTest e
// Reshuffling validation.
assertEquals(5, head.getChildNodes().getLength());
- assertSame(style1, head.getChildNodes().item(2));
- assertSame(style2, head.getChildNodes().item(3));
- assertSame(style3, head.getChildNodes().item(4));
+ assertSame(style1, head.getChildNodes().item(0));
+ assertSame(style2, head.getChildNodes().item(1));
+ assertSame(style3, head.getChildNodes().item(2));
assertEquals(3, body.getChildNodes().getLength());
}
@@ -167,7 +201,7 @@ public class StyleAdjacencyVisitorTest e
Node link3 = elem("link", "rel", "stylesheet");
// Some in head, some in body.
- Node html = htmlDoc(new Node[] { elem("script"), link1, elem("foo") },
+ Node html = htmlDoc(new Node[] { link1, elem("script"), elem("foo") },
doc.createTextNode("text1"), link2, doc.createComment("comment"), elem("div"),
link3);
assertTrue(revisit(link1, link2, link3));
@@ -181,9 +215,9 @@ public class StyleAdjacencyVisitorTest e
// Reshuffling validation.
assertEquals(5, head.getChildNodes().getLength());
- assertSame(link1, head.getChildNodes().item(2));
- assertSame(link2, head.getChildNodes().item(3));
- assertSame(link3, head.getChildNodes().item(4));
+ assertSame(link1, head.getChildNodes().item(0));
+ assertSame(link2, head.getChildNodes().item(1));
+ assertSame(link3, head.getChildNodes().item(2));
assertEquals(3, body.getChildNodes().getLength());
}
@@ -211,10 +245,10 @@ public class StyleAdjacencyVisitorTest e
// Reshuffling validation.
assertEquals(8, head.getChildNodes().getLength());
- assertSame(style1, head.getChildNodes().item(4));
- assertSame(link1, head.getChildNodes().item(5));
- assertSame(style2, head.getChildNodes().item(6));
- assertSame(link2, head.getChildNodes().item(7));
+ assertSame(style1, head.getChildNodes().item(0));
+ assertSame(link1, head.getChildNodes().item(1));
+ assertSame(style2, head.getChildNodes().item(2));
+ assertSame(link2, head.getChildNodes().item(3));
assertEquals(0, div.getChildNodes().getLength());
assertEquals(3, body.getChildNodes().getLength());
}
@@ -234,7 +268,27 @@ public class StyleAdjacencyVisitorTest e
assertEquals(1, html.getChildNodes().getLength());
assertSame(body, html.getFirstChild());
}
-
+
+ @Test
+ public void singleStyleNodeInHead() throws Exception {
+ Node style = elem("style", "type", "text/css");
+ Node head = elem("head");
+ head.appendChild(style);
+
+ Node html = elem("html");
+ html.appendChild(head);
+ html.appendChild(elem("body"));
+ doc.appendChild(html);
+
+ assertTrue(revisit(style));
+
+ // Document structure sanity tests.
+ assertEquals(2, html.getChildNodes().getLength());
+ assertSame(head, html.getFirstChild());
+ }
+
+
+
private VisitStatus visit(Node node) throws Exception {
return new StyleAdjacencyVisitor().visit(gadget(), node);
}
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagExtractorVisitorTest.java Tue Sep 7 08:02:11 2010
@@ -122,9 +122,9 @@ public class StyleTagExtractorVisitorTes
List<String> extractedUrls1 = ImmutableList.of(urlStr1);
String urlStr2 = "http://bar.com/1.css";
List<String> extractedUrls2 = ImmutableList.of(urlStr2);
- expect(cssRewriter.rewrite(eq(elem1), eq(base), isA(UriMaker.class), eq(true)))
+ expect(cssRewriter.rewrite(eq(elem1), eq(base), isA(UriMaker.class), eq(true), eq(gadget.getContext())))
.andReturn(extractedUrls1).once();
- expect(cssRewriter.rewrite(eq(elem2), eq(base), isA(UriMaker.class), eq(true)))
+ expect(cssRewriter.rewrite(eq(elem2), eq(base), isA(UriMaker.class), eq(true), eq(gadget.getContext())))
.andReturn(extractedUrls2).once();
replay(cssRewriter);
@@ -160,9 +160,9 @@ public class StyleTagExtractorVisitorTes
List<String> extractedUrls1 = ImmutableList.of(urlStr1);
String urlStr2 = "http://bar.com/1.css";
List<String> extractedUrls2 = ImmutableList.of(urlStr2);
- expect(cssRewriter.rewrite(eq(elem1), eq(base), isA(UriMaker.class), eq(true)))
+ expect(cssRewriter.rewrite(eq(elem1), eq(base), isA(UriMaker.class), eq(true), eq(gadget.getContext())))
.andReturn(extractedUrls1).once();
- expect(cssRewriter.rewrite(eq(elem2), eq(base), isA(UriMaker.class), eq(true)))
+ expect(cssRewriter.rewrite(eq(elem2), eq(base), isA(UriMaker.class), eq(true), eq(gadget.getContext())))
.andReturn(extractedUrls2).once();
replay(cssRewriter);
@@ -196,9 +196,9 @@ public class StyleTagExtractorVisitorTes
Element elem2 = elem("elem2");
List<String> extractedUrls1 = ImmutableList.of();
List<String> extractedUrls2 = ImmutableList.of();
- expect(cssRewriter.rewrite(eq(elem1), eq(base), isA(UriMaker.class), eq(true)))
+ expect(cssRewriter.rewrite(eq(elem1), eq(base), isA(UriMaker.class), eq(true), eq(gadget.getContext())))
.andReturn(extractedUrls1).once();
- expect(cssRewriter.rewrite(eq(elem2), eq(base), isA(UriMaker.class), eq(true)))
+ expect(cssRewriter.rewrite(eq(elem2), eq(base), isA(UriMaker.class), eq(true), eq(gadget.getContext())))
.andReturn(extractedUrls2).once();
replay(cssRewriter);
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java Tue Sep 7 08:02:11 2010
@@ -19,17 +19,22 @@
package org.apache.shindig.gadgets.rewrite;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.PropertiesModule;
import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.DefaultGuiceModule;
import org.apache.shindig.gadgets.Gadget;
+import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.oauth.OAuthModule;
import org.apache.shindig.gadgets.parse.ParseModule;
import org.apache.shindig.gadgets.parse.caja.CajaHtmlParser;
import org.apache.shindig.gadgets.parse.caja.CajaHtmlSerializer;
+import org.apache.shindig.gadgets.uri.DefaultProxyUriManager;
import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.easymock.EasyMock;
import org.junit.Before;
@@ -37,15 +42,46 @@ import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
+import java.util.HashMap;
+import java.util.Map;
+
import static org.junit.Assert.assertEquals;
/**
* Tests for StyleTagProxyEmbeddedUrlsVisitor.
*/
public class StyleTagProxyEmbeddedUrlsVisitorTest extends DomWalkerTestBase {
+ protected static final String MOCK_CONTAINER = "mock";
+
+ private static class FakeContainerConfig extends AbstractContainerConfig {
+ private Map<String, Map<String, Object>> containers = new HashMap<String, Map<String, Object>>();
+
+ private FakeContainerConfig(ContainerConfig defaultContainerConfig) {
+ containers.put(ContainerConfig.DEFAULT_CONTAINER,
+ defaultContainerConfig.getProperties(ContainerConfig.DEFAULT_CONTAINER));
+
+ containers.put(MOCK_CONTAINER, ImmutableMap.<String, Object>builder()
+ .put(DefaultProxyUriManager.PROXY_HOST_PARAM, "www.mock.com")
+ .build());
+ }
+
+ @Override
+ public Object getProperty(String container, String name) {
+ Map<String, Object> data = containers.get(container);
+
+ //if there is no value by this key inherit from default
+ if (!data.containsKey(name)) {
+ data = containers.get(ContainerConfig.DEFAULT_CONTAINER);
+ }
+
+ return data.get(name);
+ }
+ }
+
private Injector injector;
private CajaHtmlParser htmlParser;
- CajaHtmlSerializer serializer;
+ private CajaHtmlSerializer serializer;
+ private ProxyUriManager proxyUriManager;
@Before
public void setUp() {
@@ -56,33 +92,48 @@ public class StyleTagProxyEmbeddedUrlsVi
new ParseModule.DOMImplementationProvider();
htmlParser = new CajaHtmlParser(domImpl.get());
serializer = new CajaHtmlSerializer();
+ ContainerConfig config = new FakeContainerConfig(injector.getInstance(ContainerConfig.class));
+ proxyUriManager = new DefaultProxyUriManager(config, null);
+ }
+
+ private static final String ORIGINAL = "<html><head>"
+ + "<style>"
+ + "@import url(/1.css);"
+ + "P {color:blue;}"
+ + "P {color:red;}"
+ + "A {background: url(/2.jpg);}"
+ + "</style>"
+ + "</head><body><a href=\"hello\">Hello</a>"
+ + "</body></html>";
+
+ private static final String EXPECTED = "<html><head>"
+ + "<style>"
+ + "@import url('//localhost:8080/gadgets/proxy?container=default&"
+ + "gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
+ + "&url=http%3A%2F%2F1.com%2F1.css');\n"
+ + "P {color:blue;}"
+ + "P {color:red;}"
+ + "A {background: url('//localhost:8080/gadgets/proxy?container=default"
+ + "&gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
+ + "&url=http%3A%2F%2F1.com%2F2.jpg');}"
+ + "</style></head>"
+ + "<body><a href=\"hello\">Hello</a>\n"
+ + "</body></html>";
+
+ @Test
+ public void testImportsAndBackgroundUrlsInStyleTagDefaultContainer() throws Exception {
+ testImportsAndBackgroundUrlsInStyleTag(ORIGINAL, EXPECTED, ContainerConfig.DEFAULT_CONTAINER);
}
@Test
- public void testImportsAndBackgroundUrlsInStyleTag() throws Exception {
- String html = "<html><head>"
- + "<style>"
- + "@import url(/1.css);"
- + "P {color:blue;}"
- + "P {color:red;}"
- + "A {background: url(/2.jpg);}"
- + "</style>"
- + "</head><body><a href=\"hello\">Hello</a>"
- + "</body></html>";
- String expected =
- "<html><head>"
- + "<style>"
- + "@import url('//localhost:8080/gadgets/proxy?container=default&"
- + "gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
- + "&url=http%3A%2F%2F1.com%2F1.css');\n"
- + "P {color:blue;}"
- + "P {color:red;}"
- + "A {background: url('//localhost:8080/gadgets/proxy?container=default"
- + "&gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
- + "&url=http%3A%2F%2F1.com%2F2.jpg');}"
- + "</style></head>"
- + "<body><a href=\"hello\">Hello</a>\n"
- + "</body></html>";
+ public void testImportsAndBackgroundUrlsInStyleTagMockContainer() throws Exception {
+ testImportsAndBackgroundUrlsInStyleTag(ORIGINAL, EXPECTED.replace(
+ "localhost:8080/gadgets/proxy?container=default", "www.mock.com/gadgets/proxy?container=mock"),
+ MOCK_CONTAINER);
+ }
+
+ private void testImportsAndBackgroundUrlsInStyleTag(String html, String expected, String container)
+ throws Exception {
Document doc = htmlParser.parseDom(html);
ContentRewriterFeature.Config config = injector.getInstance(
@@ -90,10 +141,12 @@ public class StyleTagProxyEmbeddedUrlsVi
EasyMock.replay();
StyleTagProxyEmbeddedUrlsVisitor visitor = new StyleTagProxyEmbeddedUrlsVisitor(
- config, injector.getInstance(ProxyUriManager.class),
+ config, proxyUriManager,
injector.getInstance(CssResponseRewriter.class));
- Gadget gadget = DomWalker.makeGadget(Uri.parse("http://1.com/"));
+ Gadget gadget = DomWalker.makeGadget(new HttpRequest(Uri.parse("http://1.com/")).setContainer(
+ container));
+
NodeList list = doc.getElementsByTagName("style");
visitor.revisit(gadget, ImmutableList.of(list.item(0)));
EasyMock.verify();
@@ -101,4 +154,4 @@ public class StyleTagProxyEmbeddedUrlsVi
assertEquals(StringUtils.deleteWhitespace(expected),
StringUtils.deleteWhitespace(serializer.serialize(doc)));
}
-}
+}
\ No newline at end of file
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ConcatProxyServletTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ConcatProxyServletTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ConcatProxyServletTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ConcatProxyServletTest.java Tue Sep 7 08:02:11 2010
@@ -37,7 +37,10 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.Map;
-import java.util.concurrent.Executor;
+import java.util.concurrent.AbstractExecutorService;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
public class ConcatProxyServletTest extends ServletTestFixture {
private static final String REQUEST_DOMAIN = "example.org";
@@ -58,19 +61,8 @@ public class ConcatProxyServletTest exte
private final ConcatProxyServlet servlet = new ConcatProxyServlet();
private TestConcatUriManager uriManager;
- private final Executor sequentialExecutor = new Executor() {
- public void execute(Runnable r) {
- // Sequential version of 'execute'.
- r.run();
- }
- };
-
- private final Executor threadedExecutor = new Executor() {
- public void execute(Runnable r) {
- // Threaded version of 'execute'.
- new Thread(r).start();
- }
- };
+ private final ExecutorService sequentialExecutor = Executors.newSingleThreadExecutor();
+ private final ExecutorService threadedExecutor = Executors.newCachedThreadPool();
@Before
public void setUp() throws Exception {
@@ -126,7 +118,7 @@ public class ConcatProxyServletTest exte
* @param uris - list of uris to concat
* @throws Exception
*/
- private void runConcat(Executor exec, String result, String tok, Uri... uris)
+ private void runConcat(ExecutorService exec, String result, String tok, Uri... uris)
throws Exception {
expectRequestWithUris(Lists.newArrayList(uris), tok);
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetHandlerServiceTest.java Tue Sep 7 08:02:11 2010
@@ -18,20 +18,258 @@
*/
package org.apache.shindig.gadgets.servlet;
+import com.google.common.collect.ImmutableList;
+
+import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.auth.SecurityTokenCodec;
+import org.apache.shindig.auth.SecurityTokenException;
import org.apache.shindig.common.EasyMockTestCase;
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.gadgets.process.ProcessingException;
import org.apache.shindig.protocol.conversion.BeanDelegator;
+import org.apache.shindig.protocol.conversion.BeanFilter;
+import org.easymock.EasyMock;
+import org.junit.Before;
import org.junit.Test;
+import java.util.List;
+import java.util.Map;
+
public class GadgetHandlerServiceTest extends EasyMockTestCase {
+ private static final String TOKEN = "<token data>";
+ private static final String OWNER = "<owner>";
+ private static final String VIEWER = "<viewer>";
+ private static final String CONTAINER = "container";
+
+ private final BeanDelegator delegator = new BeanDelegator(
+ GadgetsHandlerService.apiClasses, GadgetsHandlerService.enumConversionMap);
+
+ private final FakeProcessor processor = new FakeProcessor();
+ private final FakeIframeUriManager urlGenerator = new FakeIframeUriManager();
+
+ private FakeSecurityTokenCodec tokenCodec;
+ private GadgetsHandlerService gadgetHandler;
+
+ @Before
+ public void setUp() {
+ tokenCodec = new FakeSecurityTokenCodec();
+ gadgetHandler = new GadgetsHandlerService(processor, urlGenerator,
+ tokenCodec, new BeanFilter());
+ }
+
// Next test verify that the API data classes are configured correctly.
// The mapping is done using reflection in runtime, so this test verify mapping is complete
// this test will prevent from not intended change to the API.
// DO NOT REMOVE TEST
@Test
public void testHandlerDataDelegation() throws Exception {
- BeanDelegator delegator = new BeanDelegator(
- GadgetsHandlerService.apiClasses, GadgetsHandlerService.enumConversionMap);
delegator.validate();
}
+
+
+ @Test
+ public void testGetMetadata() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ FakeProcessor.SPEC_URL, CONTAINER, "view",
+ createTokenData(null, null), ImmutableList.of("*"));
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ assertEquals(FakeIframeUriManager.DEFAULT_IFRAME_URI.toString(), response.getIframeUrl());
+ assertEquals(1, response.getViews().size());
+ assertTrue(response.getViews().get("default").getContent().contains("Hello, world" ));
+ assertEquals(FakeProcessor.SPEC_TITLE, response.getModulePrefs().getTitle());
+ assertEquals(FakeProcessor.LINK_HREF,
+ response.getModulePrefs().getLinks().get(FakeProcessor.LINK_REL).getHref().toString());
+ assertEquals(FakeProcessor.LINK_REL,
+ response.getModulePrefs().getLinks().get(FakeProcessor.LINK_REL).getRel());
+ assertEquals(1, response.getUserPrefs().size());
+ assertEquals("up_one", response.getUserPrefs().get("up_one").getDisplayName());
+ assertEquals(4, response.getUserPrefs().get("up_one").getEnumValues().size());
+ verify();
+ }
+
+ @Test
+ public void testGetMetadataOnlyView() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ FakeProcessor.SPEC_URL, CONTAINER, null,
+ createTokenData(null, null), ImmutableList.of("views.*"));
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ assertNull(response.getIframeUrl());
+ assertNull(response.getUserPrefs());
+ assertNull(response.getModulePrefs());
+ assertEquals(FakeProcessor.SPEC_URL, response.getUrl());
+ assertEquals(1, response.getViews().size());
+ assertTrue(response.getViews().get("default").getContent().contains("Hello, world" ));
+ verify();
+ }
+
+
+ @Test(expected = ProcessingException.class)
+ public void testGetMetadataNoContainer() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ FakeProcessor.SPEC_URL, null, null,
+ createTokenData(null, null), ImmutableList.of("*"));
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ }
+
+
+ @Test(expected = ProcessingException.class)
+ public void testGetMetadataNoUrl() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ null, CONTAINER, null,
+ createTokenData(null, null), ImmutableList.of("*"));
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ }
+
+ @Test(expected = ProcessingException.class)
+ public void testGetMetadataNoFields() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ FakeProcessor.SPEC_URL, CONTAINER, null,
+ createTokenData(null, null), null);
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ }
+
+ @Test(expected = ProcessingException.class)
+ public void testGetMetadataBadGadget() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ Uri.parse("unknown"), CONTAINER, null,
+ createTokenData(null, null), null);
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ }
+
+ @Test
+ public void testGetMetadataNoToken() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
+ FakeProcessor.SPEC_URL, CONTAINER, "view", null, ImmutableList.of("*"));
+ replay();
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+ assertEquals(FakeIframeUriManager.DEFAULT_IFRAME_URI.toString(), response.getIframeUrl());
+ verify();
+ }
+
+ @Test
+ public void testGetToken() throws Exception {
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(
+ FakeProcessor.SPEC_URL, CONTAINER,
+ createTokenData(OWNER, VIEWER), ImmutableList.of("*"));
+ replay();
+ tokenCodec.encodedToken = TOKEN;
+ GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
+ assertEquals(TOKEN, response.getToken());
+ assertEquals(OWNER, tokenCodec.tokenData.getOwnerId());
+ assertEquals(VIEWER, tokenCodec.tokenData.getViewerId());
+ assertEquals(CONTAINER, tokenCodec.tokenData.getContainer());
+ verify();
+ }
+
+ @Test(expected = ProcessingException.class)
+ public void testGetTokenNoContainer() throws Exception {
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(
+ FakeProcessor.SPEC_URL, null,
+ createTokenData(OWNER, VIEWER), ImmutableList.of("*"));
+ replay();
+ GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
+ }
+
+ @Test(expected = ProcessingException.class)
+ public void testGetTokenNoUrl() throws Exception {
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(
+ null, CONTAINER,
+ createTokenData(OWNER, VIEWER), ImmutableList.of("*"));
+ replay();
+ GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
+ }
+
+ @Test(expected = ProcessingException.class)
+ public void testGetTokenNoFields() throws Exception {
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(
+ FakeProcessor.SPEC_URL, CONTAINER,
+ createTokenData(OWNER, VIEWER), null);
+ replay();
+ GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
+ }
+
+ @Test(expected = SecurityTokenException.class)
+ public void testGetTokenException() throws Exception {
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(
+ FakeProcessor.SPEC_URL, CONTAINER,
+ createTokenData(OWNER, VIEWER), ImmutableList.of("*"));
+ replay();
+ tokenCodec.exc = new SecurityTokenException("bad data");
+ GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
+ }
+
+ @Test
+ public void testGetTokenNoToken() throws Exception {
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(
+ FakeProcessor.SPEC_URL, CONTAINER,
+ null, ImmutableList.of("*"));
+ replay();
+ tokenCodec.encodedToken = TOKEN;
+ GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
+ assertEquals(TOKEN, response.getToken());
+ assertNull(CONTAINER, tokenCodec.tokenData);
+ verify();
+ }
+
+ private GadgetsHandlerApi.TokenData createTokenData(String ownerId, String viewerId) {
+ GadgetsHandlerApi.TokenData token = mock(GadgetsHandlerApi.TokenData.class);
+ if (ownerId != null) {
+ EasyMock.expect(token.getOwnerId()).andReturn(ownerId).once();
+ }
+ if (viewerId != null) {
+ EasyMock.expect(token.getViewerId()).andReturn(viewerId).once();
+ }
+ return token;
+ }
+
+ private GadgetsHandlerApi.MetadataRequest createMetadataRequest(Uri url, String container,
+ String view, GadgetsHandlerApi.TokenData token, List<String> fields) {
+ GadgetsHandlerApi.MetadataRequest request = mock(GadgetsHandlerApi.MetadataRequest.class);
+ EasyMock.expect(request.getFields()).andReturn(fields).anyTimes();
+ EasyMock.expect(request.getView()).andReturn(view).once();
+ EasyMock.expect(request.getUrl()).andReturn(url).anyTimes();
+ EasyMock.expect(request.getContainer()).andReturn(container).anyTimes();
+ EasyMock.expect(request.getToken()).andReturn(token).once();
+ return request;
+ }
+
+ private GadgetsHandlerApi.TokenRequest createTokenRequest(Uri url, String container,
+ GadgetsHandlerApi.TokenData token, List<String> fields) {
+ GadgetsHandlerApi.TokenRequest request = mock(GadgetsHandlerApi.TokenRequest.class);
+ EasyMock.expect(request.getFields()).andReturn(fields).anyTimes();
+ EasyMock.expect(request.getUrl()).andReturn(url).anyTimes();
+ EasyMock.expect(request.getContainer()).andReturn(container).anyTimes();
+ EasyMock.expect(request.getToken()).andReturn(token).once();
+ return request;
+ }
+
+ private class FakeSecurityTokenCodec implements SecurityTokenCodec {
+ public SecurityTokenException exc = null;
+ public SecurityToken tokenData = null;
+ public String encodedToken = null;
+
+ public String encodeToken(SecurityToken token) throws SecurityTokenException {
+ tokenData = token;
+ if (exc != null) {
+ throw exc;
+ }
+ return encodedToken;
+ }
+
+ public SecurityToken createToken(Map<String, String> tokenParameters)
+ throws SecurityTokenException {
+ if (exc != null) {
+ throw exc;
+ }
+ return tokenData;
+ }
+ }
}
+
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java Tue Sep 7 08:02:11 2010
@@ -282,8 +282,8 @@ public class PipelinedDataTest {
@Test
public void testBatching() throws Exception {
String xml = "<Content xmlns=\"" + PipelinedData.OPENSOCIAL_NAMESPACE + "\">"
- + "<PeopleRequest key=\"key\" userId=\"${userId}\"/>"
- + "<HttpRequest key=\"key2\" href=\"${key}\"/>"
+ + "<PeopleRequest key=\"key\" userId=\"${userId}\"/>"
+ + "<HttpRequest key=\"key2\" href=\"${key}\"/>"
+ "</Content>";
PipelinedData socialData = new PipelinedData(XmlUtil.parse(xml), GADGET_URI);
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/DefaultTemplateProcessorTest.java Tue Sep 7 08:02:11 2010
@@ -97,7 +97,7 @@ public class DefaultTemplateProcessorTes
variables.put("toys", new JSONObject("{ list: [{name: 'Ball'}, {name: 'Car'}]}"));
variables.put("countries", new JSONArray("['Ireland','France']"));
variables.put("xss", new JSONObject("{ script: '<script>alert();</script>'," +
- "quote:'\"><script>alert();</script>'}"));
+ "quote:'\"><script>alert();</script>'}"));
}
@Test
@@ -210,7 +210,7 @@ public class DefaultTemplateProcessorTes
@Test
public void testBooleanAttributes() throws Exception {
String output = executeTemplate("<input class=\"${1 == 2}\" readonly=\"${1 == 2}\"" +
- "disabled=\"${1 == 1}\">");
+ "disabled=\"${1 == 1}\">");
assertEquals("<input class=\"false\" disabled=\"disabled\">", output);
}
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/templates/XmlTemplateLibraryTest.java Tue Sep 7 08:02:11 2010
@@ -106,8 +106,8 @@ public class XmlTemplateLibraryTest {
// with the first tag for the whole library
handlerWithNoResources.process(result, tag, processor);
assertEquals("<STYLE>libstyle\nlibstyle2</STYLE>" +
- "<JAVASCRIPT>libscript\nlibscript2</JAVASCRIPT>",
- serializeResources(context));
+ "<JAVASCRIPT>libscript\nlibscript2</JAVASCRIPT>",
+ serializeResources(context));
// Now script and style elements for the tag should get registered
handlerWithResources.process(result, tag, processor);
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java Tue Sep 7 08:02:11 2010
@@ -19,31 +19,40 @@
package org.apache.shindig.gadgets.uri;
import com.google.common.collect.ImmutableMap;
-
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.config.AbstractContainerConfig;
import org.apache.shindig.config.ContainerConfig;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import org.apache.shindig.gadgets.http.HttpRequest;
import org.junit.Before;
import org.junit.Test;
import java.util.Map;
+import static org.junit.Assert.*;
+
/**
* Tests for DefaultAccelUriManager.
*/
public class DefaultAccelUriManagerTest {
private static class FakeContainerConfig extends AbstractContainerConfig {
- protected final Map<String, Object> data = ImmutableMap.<String, Object>builder()
+ protected final Map<String, Object> defaultConfig = ImmutableMap.<String, Object>builder()
+ .put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
+ .put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/proxy")
+ .build();
+ protected final Map<String, Object> accelConfig = ImmutableMap.<String, Object>builder()
.put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
.put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/accel")
.build();
+ protected final Map<String, Map<String, Object>> data =
+ ImmutableMap.<String, Map<String, Object>>builder()
+ .put("default", defaultConfig)
+ .put("accel", accelConfig)
+ .build();
+
@Override
public Object getProperty(String container, String name) {
- return data.get(name);
+ return data.get(container) != null ? data.get(container).get(name) : null;
}
}
@@ -59,28 +68,39 @@ public class DefaultAccelUriManagerTest
@Test
public void testParseAndNormalizeNonAccelUri() throws Exception {
Uri uri = Uri.parse("http://www.example.org/index.html");
- assertEquals(Uri.parse("//apache.org/gadgets/accel?container=default"
+ HttpRequest req = new HttpRequest(uri);
+ assertEquals(Uri.parse("//apache.org/gadgets/proxy?container=default"
+ + "&gadget=http%3A%2F%2Fwww.example.org%2Findex.html"
+ + "&debug=0&nocache=0&refresh=0"
+ + "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
+ uriManager.parseAndNormalize(req));
+
+ uri = Uri.parse("http://www.example.org/index.html");
+ req = new HttpRequest(uri);
+ req.setContainer("accel");
+ assertEquals(Uri.parse("//apache.org/gadgets/accel?container=accel"
+ "&gadget=http%3A%2F%2Fwww.example.org%2Findex.html"
+ "&debug=0&nocache=0&refresh=0"
+ "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
- uriManager.parseAndNormalize(uri));
+ uriManager.parseAndNormalize(req));
}
@Test
public void testParseAndNormalizeAccelUri() throws Exception {
- Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=proxy"
+ Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=accel"
+ "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
+ "&url=http%3A%2F%2Fwww.example.org%2Findex.html");
- assertEquals(Uri.parse("//apache.org/gadgets/accel?container=proxy"
+ HttpRequest req = new HttpRequest(uri);
+ assertEquals(Uri.parse("//apache.org/gadgets/accel?container=accel"
+ "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
+ "&debug=0&nocache=0&refresh=0"
+ "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
- uriManager.parseAndNormalize(uri));
+ uriManager.parseAndNormalize(req));
}
@Test
public void testLooksLikeAccelUri() throws Exception {
- Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=proxy"
+ Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=accel"
+ "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
+ "&url=http%3A%2F%2Fwww.example.org%2Findex.html");
assertTrue(uriManager.looksLikeAccelUri(uri));
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java Tue Sep 7 08:02:11 2010
@@ -18,29 +18,24 @@
*/
package org.apache.shindig.gadgets.uri;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.uri.UriBuilder;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.uri.ProxyUriManager.ProxyUri;
import org.apache.shindig.gadgets.uri.UriCommon.Param;
import org.junit.Test;
import java.util.List;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
public class DefaultProxyUriManagerTest extends UriManagerTestBase {
private static final Uri RESOURCE_1 = Uri.parse("http://example.com/one.dat?param=value");
private static final Uri RESOURCE_2 = Uri.parse("http://gadgets.com/two.dat");
@@ -383,6 +378,27 @@ public class DefaultProxyUriManagerTest
manager.process(testUri);
}
+ @Test
+ public void testHtmlTagContext() throws Exception {
+ String host = "host.com";
+ String path = "/proxy/path";
+ DefaultProxyUriManager manager = makeManager(host, path, null);
+ Uri testUri = new UriBuilder().setAuthority(host).setPath(path)
+ .addQueryParameter(Param.CONTAINER.getKey(), CONTAINER)
+ .addQueryParameter(Param.URL.getKey(), "http://www.example.org/")
+ .addQueryParameter(Param.HTML_TAG_CONTEXT.getKey(), "htmlTag")
+ .toUri();
+ ProxyUri proxyUri = manager.process(testUri);
+ assertEquals("htmlTag", proxyUri.getHtmlTagContext());
+
+ Uri targetUri = Uri.parse("http://www.example2.org/");
+ HttpRequest req = proxyUri.makeHttpRequest(targetUri);
+ assertEquals("htmlTag", req.getParam(Param.HTML_TAG_CONTEXT.getKey()));
+
+ UriBuilder builder = proxyUri.makeQueryParams(1, "2");
+ assertEquals("htmlTag", builder.getQueryParameter(Param.HTML_TAG_CONTEXT.getKey()));
+ }
+
private List<Uri> makeAndGet(String host, String path, boolean debug, boolean noCache,
List<Uri> resources, String... version) {
return makeAndGetWithRefresh(host, path, debug, noCache, resources, 123, version);
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/PassthruManager.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/PassthruManager.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/PassthruManager.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/PassthruManager.java Tue Sep 7 08:02:11 2010
@@ -63,8 +63,10 @@ public class PassthruManager implements
public ProxyUri process(Uri uri) throws GadgetException {
String proxied = uri.getQueryParameter(Param.URL.getKey());
- return new ProxyUri(expectStatus,
+ ProxyUri proxyUri = new ProxyUri(expectStatus,
proxied != null ? Uri.parse(proxied) : null, uri);
+ proxyUri.setHtmlTagContext(uri.getQueryParameter(Param.HTML_TAG_CONTEXT.getKey()));
+ return proxyUri;
}
public void expectStatus(UriStatus status) {
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/UriUtilsTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/UriUtilsTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/UriUtilsTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/UriUtilsTest.java Tue Sep 7 08:02:11 2010
@@ -18,8 +18,6 @@
*/
package org.apache.shindig.gadgets.uri;
-import static org.junit.Assert.assertEquals;
-
import com.google.inject.internal.ImmutableList;
import com.google.inject.internal.ImmutableMap;
import org.apache.shindig.common.uri.Uri;
@@ -30,6 +28,8 @@ import org.junit.Test;
import java.util.*;
+import static org.junit.Assert.assertEquals;
+
/**
* Tests for UriUtils.
*/
@@ -252,4 +252,20 @@ public class UriUtilsTest {
assertEquals(data, req.getPostBodyAsString());
}
+
+ @Test
+ public void testGetContentTypeWithoutCharset() {
+ assertEquals("text/html",
+ UriUtils.getContentTypeWithoutCharset("text/html"));
+ assertEquals("text/html;",
+ UriUtils.getContentTypeWithoutCharset("text/html;"));
+ assertEquals("text/html",
+ UriUtils.getContentTypeWithoutCharset("text/html; charset=hello"));
+ assertEquals("text/html; hello=world",
+ UriUtils.getContentTypeWithoutCharset("text/html; charset=hello; hello=world"));
+ assertEquals("text/html; pharset=hello; hello=world",
+ UriUtils.getContentTypeWithoutCharset("text/html; pharset=hello; hello=world"));
+ assertEquals("text/html; charsett=utf; hello=world",
+ UriUtils.getContentTypeWithoutCharset("text/html; charsett=utf; ; hello=world"));
+ }
}
Modified: shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/VariableSubstituterTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/VariableSubstituterTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/VariableSubstituterTest.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/java/org/apache/shindig/gadgets/variables/VariableSubstituterTest.java Tue Sep 7 08:02:11 2010
@@ -84,10 +84,10 @@ public class VariableSubstituterTest {
@Test
public void userPrefsSubstituted() throws Exception {
String xml = "<Module>" +
- "<ModulePrefs title='I heart __UP_foo__'/>" +
- "<UserPref name='foo'/>" +
- "<Content/>" +
- "</Module>";
+ "<ModulePrefs title='I heart __UP_foo__'/>" +
+ "<UserPref name='foo'/>" +
+ "<Content/>" +
+ "</Module>";
GadgetSpec spec = new GadgetSpec(Uri.parse("#"), xml);
GadgetContext context = new GadgetContext() {
@Override
Modified: shindig/branches/2.0.x/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css (original)
+++ shindig/branches/2.0.x/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css Tue Sep 7 08:02:11 2010
@@ -1,8 +1,8 @@
-@import url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fother1.css');
-@import url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fpath%2Frelative%2Fother2.css');
+@import url('//www.test.com/dir/proxy?container=default&gadget=http%3A%2F%2Fwww.example.org%2Fpath%2Frewritebasic.css&debug=0&nocache=0&url=http%3A%2F%2Fwww.example.org%2Fother1.css');
+@import url('//www.test.com/dir/proxy?container=default&gadget=http%3A%2F%2Fwww.example.org%2Fpath%2Frewritebasic.css&debug=0&nocache=0&url=http%3A%2F%2Fwww.example.org%2Fpath%2Frelative%2Fother2.css');
@import url('http://www.example.org/hostrelative/excluded/other1.css');
DiV {
font: arial;
- background-image : url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.some.site%2Fimage.gif');
+ background-image : url('//www.test.com/dir/proxy?container=default&gadget=http%3A%2F%2Fwww.example.org%2Fpath%2Frewritebasic.css&debug=0&nocache=0&url=http%3A%2F%2Fwww.some.site%2Fimage.gif');
}
Modified: shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonActivityTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonActivityTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonActivityTest.java (original)
+++ shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonActivityTest.java Tue Sep 7 08:02:11 2010
@@ -41,19 +41,19 @@ public class JpaRestfulJsonActivityTest
*
* @throws Exception the exception
*/
- @Before
- public void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
- // Init config
- Injector injector = JpaRestfulTestConfigHelper.init();
- this.setServlet(JpaRestfulTestConfigHelper.getDataServiceServlet(injector));
-
- // Bootstrap hibernate and associated test db, and setup db with test data
- this.bootstrap = injector.getInstance(SpiDatabaseBootstrap.class);
+ // Init config
+ Injector injector = JpaRestfulTestConfigHelper.init();
+ this.setServlet(JpaRestfulTestConfigHelper.getDataServiceServlet(injector));
+
+ // Bootstrap hibernate and associated test db, and setup db with test data
+ this.bootstrap = injector.getInstance(SpiDatabaseBootstrap.class);
this.bootstrap.init();
- }
-
- @After
+ }
+
+ @After
public void tearDown() throws Exception {
this.bootstrap.tearDown();
}
Modified: shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonPeopleTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonPeopleTest.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonPeopleTest.java (original)
+++ shindig/branches/2.0.x/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/integration/JpaRestfulJsonPeopleTest.java Tue Sep 7 08:02:11 2010
@@ -55,6 +55,6 @@ public class JpaRestfulJsonPeopleTest ex
@After
public void tearDown() throws Exception {
this.bootstrap.tearDown();
- }
+ }
}
Modified: shindig/branches/2.0.x/java/server/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/server/src/main/webapp/WEB-INF/web.xml?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/server/src/main/webapp/WEB-INF/web.xml (original)
+++ shindig/branches/2.0.x/java/server/src/main/webapp/WEB-INF/web.xml Tue Sep 7 08:02:11 2010
@@ -43,6 +43,30 @@
</param-value>
</context-param>
+ <!--
+ Syntax: <key>=<value> separated by a newline
+
+ system.properties specifies the environmental variables that will be set to the JVM System Properties at server startup time.
+ Alternatively, you may add these values in your app server (ex: Tomcat) as
+ VM arguments like this: -Dshindig.host="my.production.shindig.server.com".
+
+ Here are a few properties that can be set for Shindig:
+ shindig.host: the server name that Shindig is deployed and running on
+ shindig.port: the port number of shindig.host server
+
+ Make sure you escape all HTML values for the web.xml to be parsed correctly.
+ -->
+ <context-param>
+ <param-name>system.properties</param-name>
+ <param-value>
+ shindig.host=localhost
+
+ aKey=/shindig/gadgets/proxy?container=default&url=
+ shindig.port=
+
+ </param-value>
+ </context-param>
+
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
@@ -56,9 +80,7 @@
[main]
shindigSampleRealm = org.apache.shindig.sample.shiro.SampleShiroRealm
securityManager.realm = $shindigSampleRealm
-
- [filters]
- shiro.loginUrl = /login.jsp
+ authc.loginUrl = /login.jsp
[urls]
# The /login.jsp is not restricted to authenticated users (otherwise no one could log in!), but
Modified: shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java (original)
+++ shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java Tue Sep 7 08:02:11 2010
@@ -18,6 +18,9 @@
package org.apache.shindig.social.core.config;
+import java.util.List;
+import java.util.Set;
+
import org.apache.shindig.auth.AnonymousAuthenticationHandler;
import org.apache.shindig.auth.AuthenticationHandler;
import org.apache.shindig.common.servlet.ParameterFetcher;
@@ -30,13 +33,12 @@ import org.apache.shindig.social.core.oa
import org.apache.shindig.social.core.util.BeanXStreamAtomConverter;
import org.apache.shindig.social.core.util.xstream.XStream081Configuration;
import org.apache.shindig.social.opensocial.service.ActivityHandler;
+import org.apache.shindig.social.opensocial.service.AlbumHandler;
import org.apache.shindig.social.opensocial.service.AppDataHandler;
+import org.apache.shindig.social.opensocial.service.MediaItemHandler;
import org.apache.shindig.social.opensocial.service.MessageHandler;
import org.apache.shindig.social.opensocial.service.PersonHandler;
-import java.util.List;
-import java.util.Set;
-
import com.google.common.collect.ImmutableSet;
import com.google.inject.AbstractModule;
import com.google.inject.TypeLiteral;
@@ -83,6 +85,6 @@ public class SocialApiGuiceModule extend
*/
protected Set<Class<?>> getHandlers() {
return ImmutableSet.<Class<?>>of(ActivityHandler.class, AppDataHandler.class,
- PersonHandler.class, MessageHandler.class);
+ PersonHandler.class, MessageHandler.class, AlbumHandler.class, MediaItemHandler.class);
}
}
Modified: shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/model/AccountImpl.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/model/AccountImpl.java?rev=993268&r1=993267&r2=993268&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/model/AccountImpl.java (original)
+++ shindig/branches/2.0.x/java/social-api/src/main/java/org/apache/shindig/social/core/model/AccountImpl.java Tue Sep 7 08:02:11 2010
@@ -19,6 +19,9 @@ package org.apache.shindig.social.core.m
import org.apache.shindig.social.opensocial.model.Account;
+/**
+ * Default Implementation of an {@link org.apache.shindig.social.opensocial.model.Account}
+ */
public class AccountImpl implements Account {
private String domain;
private String userId;
@@ -36,6 +39,7 @@ public class AccountImpl implements Acco
return domain;
}
+ /** {@inheritDoc} */
public void setDomain(String domain) {
this.domain = domain;
}
@@ -44,6 +48,7 @@ public class AccountImpl implements Acco
return userId;
}
+ /** {@inheritDoc} */
public void setUserId(String userId) {
this.userId = userId;
}
@@ -52,6 +57,7 @@ public class AccountImpl implements Acco
return username;
}
+ /** {@inheritDoc} */
public void setUsername(String username) {
this.username = username;
}