Author: awiner
Date: Tue Mar 17 20:52:31 2009
New Revision: 755388
URL: http://svn.apache.org/viewvc?rev=755388&view=rev
Log:
Move sanitizing rewriter from direct injection of the proxy base to using
ContentRewriterUris; this makes sanitization container aware.
Updated all the rewriter tests to JUnit 4 so the sanitized test can inherit
from BaseRewriterTestCase
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriter.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriterTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BaseRewriterTestCase.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CSSContentRewriterTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeatureTestCase.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/HTMLContentRewriterTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriter.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriter.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriter.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriter.java
Tue Mar 17 20:52:31 2009
@@ -30,18 +30,12 @@
import org.apache.shindig.gadgets.rewrite.ContentRewriter;
import org.apache.shindig.gadgets.rewrite.ContentRewriterFeature;
import org.apache.shindig.gadgets.rewrite.ContentRewriterFeatureFactory;
+import org.apache.shindig.gadgets.rewrite.ContentRewriterUris;
import org.apache.shindig.gadgets.rewrite.LinkRewriter;
import org.apache.shindig.gadgets.rewrite.MutableContent;
import org.apache.shindig.gadgets.rewrite.ProxyingLinkRewriter;
import org.apache.shindig.gadgets.rewrite.RewriterResults;
import org.apache.shindig.gadgets.servlet.ProxyBase;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.BindingAnnotation;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -60,6 +54,11 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.BindingAnnotation;
+import com.google.inject.Inject;
+
/**
* A content rewriter that will sanitize output for simple 'badge' like
display.
*
@@ -103,19 +102,19 @@
private final Set<String> allowedAttributes;
private final CajaCssSanitizer cssSanitizer;
private final ContentRewriterFeatureFactory rewriterFeatureFactory;
- private final String proxyBaseNoGadget;
+ private final ContentRewriterUris rewriterUris;
@Inject
public SanitizedRenderingContentRewriter(@AllowedTags Set<String>
allowedTags,
@AllowedAttributes Set<String> allowedAttributes,
ContentRewriterFeatureFactory rewriterFeatureFactory,
- @Named("shindig.content-rewrite.proxy-url")String proxyBaseNoGadget,
+ ContentRewriterUris rewriterUris,
CajaCssSanitizer cssSanitizer) {
this.allowedTags = allowedTags;
this.allowedAttributes = allowedAttributes;
+ this.rewriterUris = rewriterUris;
this.cssSanitizer = cssSanitizer;
this.rewriterFeatureFactory = rewriterFeatureFactory;
- this.proxyBaseNoGadget = proxyBaseNoGadget;
}
public RewriterResults rewrite(HttpRequest request, HttpResponse resp,
MutableContent content) {
@@ -148,7 +147,7 @@
content.documentChanged();
sanitized = true;
} finally {
- // Defensively cleat the content in case of failure
+ // Defensively clean the content in case of failure
if (!sanitized) {
content.setContent("");
}
@@ -204,6 +203,7 @@
try {
String contentType = response.getHeader("Content-Type");
if (contentType == null ||
contentType.toLowerCase().startsWith("text/")) {
+ String proxyBaseNoGadget =
rewriterUris.getProxyBase(request.getContainer());
SanitizingProxyingLinkRewriter cssLinkRewriter = new
SanitizingProxyingLinkRewriter(
request.getGadget(), rewriterFeature, proxyBaseNoGadget,
"text/css");
sanitized = cssSanitizer.sanitize(content.getContent(),
request.getUri(), cssLinkRewriter);
@@ -233,6 +233,7 @@
ContentRewriterFeature rewriterFeature =
rewriterFeatureFactory.createRewriteAllFeature(expires == null ? -1
: expires);
+ String proxyBaseNoGadget =
rewriterUris.getProxyBase(gadget.getContext().getContainer());
cssRewriter = new
SanitizingProxyingLinkRewriter(gadget.getSpec().getUrl(),
rewriterFeature, proxyBaseNoGadget, "text/css");
imageRewriter = new
SanitizingProxyingLinkRewriter(gadget.getSpec().getUrl(),
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriterTest.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizedRenderingContentRewriterTest.java
Tue Mar 17 20:52:31 2009
@@ -22,17 +22,15 @@
import static org.junit.Assert.assertNull;
import org.apache.commons.io.IOUtils;
-import org.apache.shindig.common.PropertiesModule;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
-import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
-import org.apache.shindig.gadgets.parse.ParseModule;
import org.apache.shindig.gadgets.parse.caja.CajaCssParser;
import org.apache.shindig.gadgets.parse.caja.CajaCssSanitizer;
+import org.apache.shindig.gadgets.rewrite.BaseRewriterTestCase;
import org.apache.shindig.gadgets.rewrite.ContentRewriter;
import org.apache.shindig.gadgets.rewrite.ContentRewriterFeatureFactory;
import org.apache.shindig.gadgets.rewrite.MutableContent;
@@ -51,10 +49,8 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-public class SanitizedRenderingContentRewriterTest {
+public class SanitizedRenderingContentRewriterTest extends
BaseRewriterTestCase {
private static final Set<String> DEFAULT_TAGS = ImmutableSet.of("html",
"head", "body");
private static final Pattern BODY_REGEX =
Pattern.compile(".*<body>(.*)</body>.*");
@@ -65,18 +61,21 @@
public String getParameter(String name) {
return ProxyBase.SANITIZE_CONTENT_PARAM.equals(name) ? "1" : null;
}
+
+ @Override
+ public String getContainer() {
+ return MOCK_CONTAINER;
+ }
};
private final GadgetContext unsanitaryGadgetContext = new GadgetContext();
-
- private GadgetHtmlParser parser;
-
private Gadget gadget;
@Before
+ @Override
public void setUp() throws Exception {
- Injector injector = Guice.createInjector(new ParseModule(), new
PropertiesModule());
- parser = injector.getInstance(GadgetHtmlParser.class);
+ super.setUp();
+
gadget = new Gadget().setContext(unsanitaryGadgetContext);
gadget.setSpec(new GadgetSpec(Uri.parse("www.example.org/gadget.xml"),
"<Module><ModulePrefs title=''/><Content
type='x-html-sanitized'/></Module>"));
@@ -118,7 +117,7 @@
ContentRewriterFeatureFactory rewriterFeatureFactory =
new ContentRewriterFeatureFactory(null, ".*", "", "HTTP",
"embed,img,script,link,style");
return new SanitizedRenderingContentRewriter(newTags, attributes,
rewriterFeatureFactory,
- "http://www.test.com/base", new CajaCssSanitizer(new CajaCssParser()));
+ rewriterUris, new CajaCssSanitizer(new CajaCssParser()));
}
@Test
@@ -147,7 +146,7 @@
public void enforceCssImportLinkRewritten() {
String markup =
"<style type=\"text/css\">@import url('www.evil.com/x.js');</style>";
- String sanitized = "<style>@import
url('http\\3A//www.test.com/basewww.example.org%2Fwww.evil.com%2Fx.js\\26gadget\\3Dwww.example.org%2Fgadget.xml\\26
fp\\3D 45508\\26sanitize\\3D 1\\26rewriteMime\\3Dtext/css');</style>";
+ String sanitized = "<style>@import
url('http\\3A//www.test.com/dir/proxy?url\\3Dwww.example.org%2Fwww.evil.com%2Fx.js\\26gadget\\3Dwww.example.org%2Fgadget.xml\\26
fp\\3D 45508\\26sanitize\\3D 1\\26rewriteMime\\3Dtext/css');</style>";
assertEquals(sanitized, rewrite(gadget, markup, set("style"), set()));
}
@@ -171,7 +170,7 @@
@Test
public void enforceImageSrcProxied() {
String markup = "<img src='http://www.evil.com/x.js'>Evil happens</img>";
- String sanitized = "<img
src=\"http://www.test.com/basehttp%3A%2F%2Fwww.evil.com%2Fx.js&gadget=www.example.org%2Fgadget.xml&fp=45508&sanitize=1&rewriteMime=image/*\">Evil
happens";
+ String sanitized = "<img
src=\"http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.evil.com%2Fx.js&gadget=www.example.org%2Fgadget.xml&fp=45508&sanitize=1&rewriteMime=image/*\">Evil
happens";
assertEquals(sanitized, rewrite(gadget, markup, set("img"), set("src")));
}
@@ -197,7 +196,7 @@
req.setRewriteMimeType("text/css");
HttpResponse response = new HttpResponseBuilder().setResponseString(
"@import url('http://www.evil.com/more.css'); A { font : BOLD
}").create();
- String sanitized = "@import
url('http\\3A//www.test.com/basehttp%3A%2F%2Fwww.evil.com%2Fmore.css\\26 fp\\3D
45508\\26sanitize\\3D 1\\26rewriteMime\\3Dtext/css');\n"
+ String sanitized = "@import
url('http\\3A//www.test.com/dir/proxy?url\\3Dhttp%3A%2F%2Fwww.evil.com%2Fmore.css\\26
fp\\3D 45508\\26sanitize\\3D 1\\26rewriteMime\\3Dtext/css');\n"
+ "A {\n"
+ " font: BOLD\n"
+ "}";
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BaseRewriterTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BaseRewriterTestCase.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BaseRewriterTestCase.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/BaseRewriterTestCase.java
Tue Mar 17 20:52:31 2009
@@ -17,7 +17,7 @@
*/
package org.apache.shindig.gadgets.rewrite;
-import org.apache.shindig.common.EasyMockTestCase;
+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;
@@ -33,20 +33,21 @@
import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
import org.apache.shindig.gadgets.parse.ParseModule;
import org.apache.shindig.gadgets.spec.GadgetSpec;
+import org.easymock.classextension.EasyMock;
+import org.easymock.classextension.IMocksControl;
+import org.junit.Before;
+
+import java.net.URI;
+import java.util.Set;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import org.apache.commons.lang.StringUtils;
-
-import java.net.URI;
-import java.util.Set;
-
/**
* Base class for testing content rewriting functionality
*/
-public abstract class BaseRewriterTestCase extends EasyMockTestCase {
+public abstract class BaseRewriterTestCase {
public static final Uri SPEC_URL =
Uri.parse("http://www.example.org/dir/g.xml");
public static final String DEFAULT_PROXY_BASE =
"http://www.test.com/dir/proxy?url=";
public static final String DEFAULT_CONCAT_BASE =
"http://www.test.com/dir/concat?";
@@ -65,10 +66,11 @@
protected Injector injector;
protected HttpResponse fakeResponse;
protected ContainerConfig config;
+ protected ContentRewriterUris rewriterUris;
+ protected IMocksControl control;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Before
+ public void setUp() throws Exception {
rewriterFeatureFactory = new ContentRewriterFeatureFactory(null, ".*", "",
"HTTP",
"embed,img,script,link,style");
defaultRewriterFeature = rewriterFeatureFactory.getDefault();
@@ -97,7 +99,10 @@
}
};
-}
+ rewriterUris = new ContentRewriterUris(config, DEFAULT_PROXY_BASE,
+ DEFAULT_CONCAT_BASE);
+ control = EasyMock.createControl();
+ }
public static GadgetSpec createSpecWithRewrite(String include, String
exclude, String expires,
Set<String> tags) throws GadgetException {
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CSSContentRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CSSContentRewriterTest.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CSSContentRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CSSContentRewriterTest.java
Tue Mar 17 20:52:31 2009
@@ -17,6 +17,9 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.uri.Uri;
@@ -25,6 +28,8 @@
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
import org.easymock.EasyMock;
+import org.junit.Before;
+import org.junit.Test;
import java.io.StringReader;
import java.io.StringWriter;
@@ -40,17 +45,18 @@
private Uri dummyUri;
@Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
ContentRewriterFeature overrideFeature =
rewriterFeatureFactory.get(createSpecWithRewrite(".*", ".*exclude.*",
"HTTP",
HTMLContentRewriter.TAGS));
ContentRewriterFeatureFactory factory =
mockContentRewriterFeatureFactory(overrideFeature);
- ContentRewriterUris rewriterUris = new ContentRewriterUris(config,
DEFAULT_PROXY_BASE, null);
rewriter = new CSSContentRewriter(factory, rewriterUris, new
CajaCssLexerParser());
dummyUri = Uri.parse("http://www.w3c.org");
}
+ @Test
public void testCssBasic() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritebasic.css"));
@@ -70,6 +76,7 @@
StringUtils.deleteWhitespace(mc.getContent()));
}
+ @Test
public void testCssWithContainerProxy() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritebasic.css"));
@@ -92,14 +99,14 @@
StringUtils.deleteWhitespace(mc.getContent()));
}
+ @Test
public void testNoRewriteUnknownMimeType() {
- // Strict mock as we expect no calls
- MutableContent mc = mock(MutableContent.class, true);
- HttpRequest req = mock(HttpRequest.class);
+ MutableContent mc = control.createMock(MutableContent.class);
+ HttpRequest req = control.createMock(HttpRequest.class);
EasyMock.expect(req.getRewriteMimeType()).andReturn("unknown");
- replay();
+ control.replay();
assertNull(rewriter.rewrite(req, fakeResponse, mc));
- verify();
+ control.verify();
}
private void validateRewritten(String content, Uri base,
@@ -116,6 +123,7 @@
validateRewritten(content, dummyUri, defaultLinkRewriter, expected);
}
+ @Test
public void testUrlDeclarationRewrite() {
String original =
"div
{list-style-image:url('http://a.b.com/bullet.gif');list-style-position:outside;margin:5px;padding:0}\n"
+
@@ -128,6 +136,7 @@
validateRewritten(original, rewritten);
}
+ @Test
public void testExtractImports() {
String original = " @import url(www.example.org/some.css);\n" +
"@import url('www.example.org/someother.css');\n" +
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeatureTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeatureTestCase.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeatureTestCase.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeatureTestCase.java
Tue Mar 17 20:52:31 2009
@@ -17,27 +17,33 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import org.junit.Test;
+
import com.google.common.collect.Sets;
import java.util.Set;
+import static org.junit.Assert.*;
/**
* Test basic parsing of content-rewriter feature
*/
public class ContentRewriterFeatureTestCase extends BaseRewriterTestCase {
+ @Test
public void testContainerDefaultIncludeAll() throws Exception {
defaultRewriterFeature = new
ContentRewriterFeature(createSpecWithoutRewrite(), ".*", "", "0", tags);
assertTrue(defaultRewriterFeature.isRewriteEnabled());
assertTrue(defaultRewriterFeature.shouldRewriteURL("http://www.test.com"));
}
+ @Test
public void testContainerDefaultIncludeNone() throws Exception {
defaultRewriterFeature = new
ContentRewriterFeature(createSpecWithoutRewrite(), "", ".*", "0", tags);
assertFalse(defaultRewriterFeature.isRewriteEnabled());
assertFalse(defaultRewriterFeature.shouldRewriteURL("http://www.test.com"));
}
+ @Test
public void testContainerDefaultExcludeOverridesInclude() throws Exception {
defaultRewriterFeature = new
ContentRewriterFeature(createSpecWithoutRewrite(), ".*", ".*", "0",
tags);
@@ -45,6 +51,7 @@
assertFalse(defaultRewriterFeature.shouldRewriteURL("http://www.test.com"));
}
+ @Test
public void testSpecExcludeOverridesContainerDefaultInclude() throws
Exception {
defaultRewriterFeature = new
ContentRewriterFeature(createSpecWithRewrite("", ".*", "0", tags), ".*",
"", "0", tags);
@@ -52,6 +59,7 @@
assertFalse(defaultRewriterFeature.shouldRewriteURL("http://www.test.com"));
}
+ @Test
public void testSpecIncludeOverridesContainerDefaultExclude() throws
Exception {
defaultRewriterFeature = new
ContentRewriterFeature(createSpecWithRewrite(".*", "", "0", tags), "",
".*", "0", tags);
@@ -59,6 +67,7 @@
assertTrue(defaultRewriterFeature.shouldRewriteURL("http://www.test.com"));
}
+ @Test
public void testExcludeOverridesInclude() throws Exception {
defaultRewriterFeature = new ContentRewriterFeature(
createSpecWithRewrite("test\\.com", "test", "0", tags), "", "", "0",
tags);
@@ -66,6 +75,7 @@
assertFalse(defaultRewriterFeature.shouldRewriteURL("http://www.test.com"));
}
+ @Test
public void testIncludeOnlyMatch() throws Exception {
defaultRewriterFeature = new ContentRewriterFeature(
createSpecWithRewrite("test\\.com", "testx", "0", tags), "", "", "0",
tags);
@@ -74,6 +84,7 @@
assertFalse(defaultRewriterFeature.shouldRewriteURL("http://testx.test.com"));
}
+ @Test
public void testTagRewrite() throws Exception {
defaultRewriterFeature = new ContentRewriterFeature(
createSpecWithRewrite("test\\.com", "testx", "0", tags), "", "", "0",
tags);
@@ -82,6 +93,7 @@
assertTrue(defaultRewriterFeature.shouldRewriteTag("ScripT"));
}
+ @Test
public void testOverrideTagRewrite() throws Exception {
Set<String> newTags = Sets.newHashSet("iframe");
defaultRewriterFeature = new ContentRewriterFeature(
@@ -92,6 +104,7 @@
assertFalse(defaultRewriterFeature.shouldRewriteTag("link"));
}
+ @Test
public void testExpiresTimeParse() throws Exception {
defaultRewriterFeature = new ContentRewriterFeature(
createSpecWithRewrite("test\\.com", "testx", "12345", tags), "", "",
"0", tags);
@@ -99,12 +112,14 @@
assertNotNull(defaultRewriterFeature.getExpires() == 12345);
}
+ @Test
public void testExpiresHTTPParse() throws Exception {
defaultRewriterFeature = new ContentRewriterFeature(
createSpecWithRewrite("test\\.com", "testx", "htTp ", tags), "", "",
"12345", tags);
assertNull(defaultRewriterFeature.getExpires());
}
+ @Test
public void testExpiresInvalidParse() throws Exception {
defaultRewriterFeature = new ContentRewriterFeature(
createSpecWithRewrite("test\\.com", "testx", "junk", tags), "", "",
"12345", tags);
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/DefaultContentRewriterRegistryTest.java
Tue Mar 17 20:52:31 2009
@@ -17,34 +17,41 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.spec.GadgetSpec;
-
-import com.google.common.collect.Lists;
-
import org.easymock.EasyMock;
+import org.junit.Before;
+import org.junit.Test;
import java.util.Arrays;
import java.util.List;
+import com.google.common.collect.Lists;
+
public class DefaultContentRewriterRegistryTest extends BaseRewriterTestCase {
private static final Uri SPEC_URL =
Uri.parse("http://example.org/gadget.xml");
private List<CaptureRewriter> rewriters;
private List<ContentRewriter> contentRewriters;
private ContentRewriterRegistry registry;
+ @Before
@Override
- protected void setUp() throws Exception {
+ public void setUp() throws Exception {
super.setUp();
rewriters = Arrays.asList(new CaptureRewriter(), new CaptureRewriter());
contentRewriters = Lists.<ContentRewriter>newArrayList(rewriters);
registry = new DefaultContentRewriterRegistry(contentRewriters, parser);
}
+ @Test
public void testRewriteGadget() throws Exception {
String body = "Hello, world";
String xml = "<Module><ModulePrefs title=''/><Content>" + body +
"</Content></Module>";
@@ -62,6 +69,7 @@
assertEquals(body, rewritten);
}
+ @Test
public void testRewriteHttpResponse() throws Exception {
String body = "Hello, world";
HttpRequest request = new HttpRequest(SPEC_URL);
@@ -75,6 +83,7 @@
assertEquals(response, rewritten);
}
+ @Test
public void testRewriteView() throws Exception {
String body = "Hello, world";
String xml = "<Module><ModulePrefs title=''/><Content>" + body +
"</Content></Module>";
@@ -98,19 +107,20 @@
* from a performance and content consistency standpoint. Because
HttpResonse is final
* we test that no new
*/
+ @Test
public void testNoDecodeHttpResponseForUnRewriteableMimeTypes() {
List<ContentRewriter> rewriters = Lists.newArrayList();
rewriters.add(injector.getInstance(HTMLContentRewriter.class));
rewriters.add(injector.getInstance(CSSContentRewriter.class));
registry = new DefaultContentRewriterRegistry(rewriters, parser);
- HttpRequest req = mock(HttpRequest.class);
- EasyMock.expect(req.getRewriteMimeType()).andReturn("unknown");
+ HttpRequest req = control.createMock(HttpRequest.class);
+ EasyMock.expect(req.getRewriteMimeType()).andStubReturn("unknown");
- replay();
+ control.replay();
HttpResponse rewritten = registry.rewriteHttpResponse(req, fakeResponse);
// Assert that response is untouched
assertSame(rewritten, fakeResponse);
- verify();
+ control.verify();
}
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/HTMLContentRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/HTMLContentRewriterTest.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/HTMLContentRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/HTMLContentRewriterTest.java
Tue Mar 17 20:52:31 2009
@@ -17,11 +17,18 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
import org.easymock.EasyMock;
+import org.junit.Before;
+import org.junit.Test;
import org.w3c.dom.Document;
/**
@@ -31,19 +38,19 @@
private HTMLContentRewriter rewriter;
@Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
ContentRewriterFeature overrideFeature =
rewriterFeatureFactory.get(createSpecWithRewrite(".*", ".*exclude.*",
"HTTP",
HTMLContentRewriter.TAGS));
ContentRewriterFeatureFactory factory =
mockContentRewriterFeatureFactory(overrideFeature);
- ContentRewriterUris rewriterUris = new ContentRewriterUris(config,
DEFAULT_PROXY_BASE,
- DEFAULT_CONCAT_BASE);
rewriter = new HTMLContentRewriter(factory, rewriterUris,
new CSSContentRewriter(factory, rewriterUris, new
CajaCssLexerParser()));
}
+ @Test
public void testScriptsBasic() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritescriptbasic.html"));
@@ -101,6 +108,7 @@
}
+ @Test
public void testScriptsForContainer() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritescriptbasic.html"));
@@ -110,6 +118,7 @@
assertTrue(text.contains(MOCK_CONCAT_BASE));
}
+ @Test
public void testLinksBasic() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritelinksbasic.html"));
@@ -136,6 +145,7 @@
assertEquals("http://www.example.org/excluded/some.swf",
wrapper.getValue("//embed[2]/@src"));
}
+ @Test
public void testLinksForContainer() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritelinksbasic.html"));
@@ -145,6 +155,7 @@
assertTrue(text.contains(MOCK_PROXY_BASE));
}
+ @Test
public void testStyleBasic() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritestylebasic.html"));
@@ -179,6 +190,7 @@
assertEquals("div { color : black; }",
wrapper.getValue("//style[1]").trim());
}
+ @Test
public void testStyleBasic2() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritestyle2.html"));
@@ -189,6 +201,7 @@
StringUtils.deleteWhitespace(expected));
}
+ @Test
public void testStyleForContainer() throws Exception {
String content = IOUtils.toString(this.getClass().getClassLoader().
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritestylebasic.html"));
@@ -197,14 +210,14 @@
assertFalse(text.contains(DEFAULT_CONCAT_BASE));
assertTrue(text.contains(MOCK_CONCAT_BASE));
}
-
+
+ @Test
public void testNoRewriteUnknownMimeType() {
- // Strict mock as we expect no calls
- MutableContent mc = mock(MutableContent.class, true);
- HttpRequest req = mock(HttpRequest.class);
+ MutableContent mc = control.createMock(MutableContent.class);
+ HttpRequest req = control.createMock(HttpRequest.class);
EasyMock.expect(req.getRewriteMimeType()).andReturn("unknown");
- replay();
+ control.replay();
assertNull(rewriter.rewrite(req, fakeResponse, mc));
- verify();
+ control.verify();
}
}
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java?rev=755388&r1=755387&r2=755388&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/ProxyingLinkRewriterTest.java
Tue Mar 17 20:52:31 2009
@@ -17,6 +17,10 @@
*/
package org.apache.shindig.gadgets.rewrite;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
import com.google.common.collect.Sets;
/**
@@ -28,30 +32,35 @@
return defaultLinkRewriter.rewrite(uri, SPEC_URL);
}
+ @Test
public void testAbsoluteRewrite() {
String val = "http://a.b.com";
assertEquals("http://www.test.com/dir/proxy?url=http%3A%2F%2Fa.b.com&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=-182800334",
rewrite(val));
}
+ @Test
public void testHostRelativeRewrite() {
String val = "/somepath/test.gif";
assertEquals("http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fsomepath%2Ftest.gif&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=-182800334",
rewrite(val));
}
+ @Test
public void testPathRelativeRewrite() {
String val = "test.gif";
assertEquals("http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fdir%2Ftest.gif&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=-182800334",
rewrite(val));
}
+ @Test
public void testLeadingAndTrailingSpace() {
String val = " test.gif ";
assertEquals("http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fdir%2Ftest.gif&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=-182800334",
rewrite(val));
}
+ @Test
public void testWithRefresh() throws Exception {
ContentRewriterFeature contentRewriterFeature = new ContentRewriterFeature(
createSpecWithoutRewrite(), ".*", "", "86400",
@@ -65,13 +74,15 @@
rewriter.rewrite(val, SPEC_URL));
}
+ @Test
public void testInvalidCharRewrite() {
String val = "/images/opensocial/movie_trivia/76/${quiz.picture_url}";
assertEquals(val,
rewrite(val));
}
- public void testEmpty() {
+ @Test
+ public void testEmpty() {
String val = " ";
assertEquals("", rewrite(val));
}