You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2011/10/02 21:44:15 UTC
svn commit: r1178236 [3/4] - in /shindig/trunk: config/
content/samplecontainer/examples/commoncontainer/
features/src/main/javascript/features/container.util/
features/src/main/javascript/features/container/
features/src/main/javascript/features/rpc/ ...
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java?rev=1178236&r1=1178235&r2=1178236&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java Sun Oct 2 19:44:13 2011
@@ -18,13 +18,17 @@
*/
package org.apache.shindig.gadgets.servlet;
-import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
import org.apache.commons.codec.binary.Base64;
import org.apache.shindig.auth.SecurityToken;
@@ -34,10 +38,20 @@ import org.apache.shindig.common.EasyMoc
import org.apache.shindig.common.servlet.HttpUtil;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.util.FakeTimeSource;
+import org.apache.shindig.gadgets.Gadget;
+import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.gadgets.RenderingContext;
import org.apache.shindig.gadgets.GadgetException.Code;
+import org.apache.shindig.gadgets.RenderingContext;
+import org.apache.shindig.gadgets.admin.ContainerAdminData;
+import org.apache.shindig.gadgets.admin.FeatureAdminData;
+import org.apache.shindig.gadgets.admin.FeatureAdminData.Type;
+import org.apache.shindig.gadgets.admin.GadgetAdminData;
+import org.apache.shindig.gadgets.admin.GadgetAdminStore;
+import org.apache.shindig.gadgets.features.ApiDirective;
import org.apache.shindig.gadgets.features.FeatureRegistry;
+import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
+import org.apache.shindig.gadgets.features.FeatureRegistryProvider;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
import org.apache.shindig.gadgets.js.JsException;
@@ -48,8 +62,8 @@ import org.apache.shindig.gadgets.js.JsS
import org.apache.shindig.gadgets.process.ProcessingException;
import org.apache.shindig.gadgets.servlet.GadgetsHandlerApi.Feature;
import org.apache.shindig.gadgets.uri.JsUriManager;
-import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
+import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.apache.shindig.gadgets.uri.ProxyUriManager.ProxyUri;
import org.apache.shindig.protocol.conversion.BeanDelegator;
import org.apache.shindig.protocol.conversion.BeanFilter;
@@ -58,9 +72,11 @@ import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
-import java.nio.charset.Charset;
-import java.util.List;
-import java.util.Map;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
public class GadgetsHandlerServiceTest extends EasyMockTestCase {
@@ -74,9 +90,11 @@ public class GadgetsHandlerServiceTest e
private static final Long TOKEN_EXPIRY_TIME_MS = CURRENT_TIME_MS + 789L;
private static final Uri RESOURCE = Uri.parse("http://example.com/data");
private static final String FALLBACK = "http://example.com/data2";
+ private static final String RPC_SERVICE_1 = "rcp_service_1";
+ private static final String RPC_SERVICE_2 = "rpc_service_2";
- private final BeanDelegator delegator = new BeanDelegator(
- GadgetsHandlerService.API_CLASSES, GadgetsHandlerService.ENUM_CONVERSION_MAP);
+ private final BeanDelegator delegator = new BeanDelegator(GadgetsHandlerService.API_CLASSES,
+ GadgetsHandlerService.ENUM_CONVERSION_MAP);
private final FakeTimeSource timeSource = new FakeTimeSource(CURRENT_TIME_MS);
private final FeatureRegistry mockRegistry = mock(FeatureRegistry.class);
@@ -88,16 +106,34 @@ public class GadgetsHandlerServiceTest e
private final CajaContentRewriter cajaContentRewriter = mock(CajaContentRewriter.class);
private final JsServingPipeline jsPipeline = mock(JsServingPipeline.class);
private final JsRequestBuilder jsRequestBuilder = new JsRequestBuilder(jsUriManager, null);
+ private final GadgetAdminStore gadgetAdminStore = mock(GadgetAdminStore.class);
private FakeSecurityTokenCodec tokenCodec;
private GadgetsHandlerService gadgetHandler;
+ private GadgetsHandlerService gadgetHandlerWithAdmin;
+ private FeatureRegistryProvider featureRegistryProvider;
@Before
public void setUp() {
tokenCodec = new FakeSecurityTokenCodec();
- gadgetHandler = new GadgetsHandlerService(timeSource, processor, urlGenerator,
- tokenCodec, proxyUriManager, jsUriManager, proxyHandler, jsPipeline,
- jsRequestBuilder, SPEC_REFRESH_INTERVAL_MS, new BeanFilter(), cajaContentRewriter);
+ GadgetAdminData gadgetAdminData = new GadgetAdminData(
+ new FeatureAdminData(Sets.newHashSet(FakeProcessor.FEATURE2, FakeProcessor.FEATURE3),
+ Type.WHITELIST));
+ ContainerAdminData containerAdminData = new ContainerAdminData();
+ containerAdminData.addGadgetAdminData(FakeProcessor.SPEC_URL4.toString(), gadgetAdminData);
+ featureRegistryProvider = new FeatureRegistryProvider() {
+ public FeatureRegistry get(String repository) throws GadgetException {
+ return mockRegistry;
+ }
+ };
+ gadgetHandler = new GadgetsHandlerService(timeSource, processor, urlGenerator, tokenCodec,
+ proxyUriManager, jsUriManager, proxyHandler, jsPipeline, jsRequestBuilder,
+ SPEC_REFRESH_INTERVAL_MS, new BeanFilter(), cajaContentRewriter, gadgetAdminStore,
+ featureRegistryProvider);
+ gadgetHandlerWithAdmin = new GadgetsHandlerService(timeSource, processor, urlGenerator,
+ tokenCodec, proxyUriManager, jsUriManager, proxyHandler, jsPipeline, jsRequestBuilder,
+ SPEC_REFRESH_INTERVAL_MS, new BeanFilter(), cajaContentRewriter, gadgetAdminStore,
+ featureRegistryProvider);
}
// Next test verify that the API data classes are configured correctly.
@@ -109,41 +145,102 @@ public class GadgetsHandlerServiceTest e
delegator.validate();
}
+ private void setupMockGadgetAdminStore(boolean isAllowed) {
+ EasyMock.expect(gadgetAdminStore.checkFeatureAdminInfo(EasyMock.isA(Gadget.class)))
+ .andReturn(isAllowed).anyTimes();
+ }
+
@SuppressWarnings("unchecked")
+ private void setupMockRegistry(List<String> features) {
+ EasyMock.expect(mockRegistry.getFeatures(EasyMock.isA(Collection.class)))
+ .andReturn(Lists.newArrayList(features)).anyTimes();
+ FeatureBundle featureBundle = createMockFeatureBundle();
+ FeatureRegistry.LookupResult lr = createMockLookupResult(ImmutableList.of(featureBundle));
+ EasyMock.expect(
+ mockRegistry.getFeatureResources(isA(GadgetContext.class),
+ eq(Lists.newArrayList(features)), EasyMock.<List<String>> isNull()))
+ .andReturn(lr).anyTimes();
+ replay();
+ }
+
+ private FeatureBundle createMockFeatureBundle() {
+ FeatureBundle result = createMock(FeatureBundle.class);
+ expect(result.getApis(ApiDirective.Type.RPC, false)).andReturn(
+ Lists.newArrayList(RPC_SERVICE_1, RPC_SERVICE_2)).anyTimes();
+ replay(result);
+ return result;
+ }
+
+ private FeatureRegistry.LookupResult createMockLookupResult(List<FeatureBundle> featureBundles) {
+ FeatureRegistry.LookupResult result = createMock(FeatureRegistry.LookupResult.class);
+ EasyMock.expect(result.getBundles()).andReturn(featureBundles).anyTimes();
+ replay(result);
+ return result;
+ }
+
@Test
public void testGetMetadata() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL, CONTAINER, "default",
- createAuthContext(null, null), ImmutableList.of("*"));
- EasyMock.expect(mockRegistry.getFeatures(EasyMock.isA(List.class)))
- .andReturn(Lists.newArrayList("auth-refresh"));
- replay();
- GadgetsHandlerApi.MetadataResponse response =
- gadgetHandler.getMetadata(request);
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL,
+ CONTAINER, "default", createAuthContext(null, null), ImmutableList.of("*"));
+ setupMockGadgetAdminStore(true);
+ setupMockRegistry(ImmutableList.<String> of("auth-refresh"));
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
assertEquals(FakeIframeUriManager.DEFAULT_IFRAME_URI.toString(), response.getIframeUrl());
assertTrue(response.getNeedsTokenRefresh());
assertEquals(1, response.getViews().size());
assertEquals(FakeProcessor.SPEC_TITLE, response.getModulePrefs().getTitle());
assertEquals(FakeProcessor.LINK_HREF,
- response.getModulePrefs().getLinks().get(FakeProcessor.LINK_REL).getHref().toString());
+ response.getModulePrefs().getLinks().get(FakeProcessor.LINK_REL).getHref().toString());
assertEquals(FakeProcessor.LINK_REL,
- response.getModulePrefs().getLinks().get(FakeProcessor.LINK_REL).getRel());
+ 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").getOrderedEnumValues().size());
assertEquals(CURRENT_TIME_MS, response.getResponseTimeMs());
assertEquals(METADATA_EXPIRY_TIME_MS, response.getExpireTimeMs());
+ assertEquals(Sets.newHashSet(RPC_SERVICE_1, RPC_SERVICE_2), response.getRpcServiceIds());
verify();
}
@Test
+ public void testFeatureAdminAllowedGadget() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL4,
+ CONTAINER, "default", createAuthContext(null, null), ImmutableList.of("*"));
+ setupMockGadgetAdminStore(true);
+ setupMockRegistry(Lists.newArrayList("example-feature", "example-feature2"));
+
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandlerWithAdmin.getMetadata(request);
+ assertEquals(FakeIframeUriManager.DEFAULT_IFRAME_URI.toString(), response.getIframeUrl());
+ assertEquals(1, response.getViews().size());
+ 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").getOrderedEnumValues().size());
+ assertEquals(CURRENT_TIME_MS, response.getResponseTimeMs());
+ assertEquals(METADATA_EXPIRY_TIME_MS, response.getExpireTimeMs());
+ assertEquals(Sets.newHashSet(RPC_SERVICE_1, RPC_SERVICE_2), response.getRpcServiceIds());
+ verify();
+ }
+
+ @Test(expected = ProcessingException.class)
+ public void testFeatureAdminDeniedGadget() throws Exception {
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL4,
+ CONTAINER, "default", createAuthContext(null, null), ImmutableList.of("*"));
+ setupMockGadgetAdminStore(false);
+ setupMockRegistry(Lists.newArrayList("example-feature", "example-feature2"));
+ gadgetHandlerWithAdmin.getMetadata(request);
+ }
+
+ @Test
public void testGetMetadataOnlyView() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL, CONTAINER, null,
- createAuthContext(null, null), ImmutableList.of("views.*"));
- replay();
- GadgetsHandlerApi.MetadataResponse response =
- gadgetHandler.getMetadata(request);
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL,
+ CONTAINER, null, createAuthContext(null, null), ImmutableList.of("views.*"));
+ setupMockRegistry(new ArrayList<String>());
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
assertNull(response.getIframeUrl());
assertNull(response.getUserPrefs());
assertNull(response.getModulePrefs());
@@ -154,93 +251,83 @@ public class GadgetsHandlerServiceTest e
@Test(expected = ProcessingException.class)
public void testGetMetadataNoView() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL3, CONTAINER, "invalid_view",
- createAuthContext(null, null), ImmutableList.of("*"));
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL3,
+ CONTAINER, "invalid_view", createAuthContext(null, null), ImmutableList.of("*"));
replay();
gadgetHandler.getMetadata(request);
}
@Test(expected = ProcessingException.class)
public void testGetMetadataNoContainer() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL, null, null,
- createAuthContext(null, null), ImmutableList.of("*"));
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL, null,
+ null, createAuthContext(null, null), ImmutableList.of("*"));
replay();
gadgetHandler.getMetadata(request);
}
@Test(expected = ProcessingException.class)
public void testGetMetadataNoUrl() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- null, CONTAINER, null,
- createAuthContext(null, null), ImmutableList.of("*"));
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(null, CONTAINER, null,
+ createAuthContext(null, null), ImmutableList.of("*"));
replay();
gadgetHandler.getMetadata(request);
}
@Test(expected = ProcessingException.class)
public void testGetMetadataNoFields() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL, CONTAINER, null,
- createAuthContext(null, null), null);
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL,
+ CONTAINER, null, createAuthContext(null, null), null);
replay();
gadgetHandler.getMetadata(request);
}
@Test(expected = ProcessingException.class)
public void testGetMetadataBadGadget() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- Uri.parse("unknown"), CONTAINER, null,
- createAuthContext(null, null), null);
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(Uri.parse("unknown"),
+ CONTAINER, null, createAuthContext(null, null), null);
replay();
gadgetHandler.getMetadata(request);
}
- @SuppressWarnings("unchecked")
@Test
public void testGetMetadataNoToken() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL, CONTAINER, "default", null, ImmutableList.of("*"));
- EasyMock.expect(mockRegistry.getFeatures(EasyMock.isA(List.class)))
- .andReturn(Lists.newArrayList("auth-refresh"));
- replay();
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL,
+ CONTAINER, "default", null, ImmutableList.of("*"));
+ setupMockGadgetAdminStore(true);
+ setupMockRegistry(Lists.newArrayList("auth-refresh"));
GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
assertEquals(FakeIframeUriManager.DEFAULT_IFRAME_URI.toString(), response.getIframeUrl());
verify();
}
- @SuppressWarnings("unchecked")
@Test
public void testGetMetadataWithParams() throws Exception {
- GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(
- FakeProcessor.SPEC_URL4, CONTAINER, "default",
- createAuthContext(null, null), ImmutableList.of("*"));
- EasyMock.expect(mockRegistry.getFeatures(EasyMock.isA(List.class)))
- .andReturn(Lists.newArrayList("auth-refresh"));
- replay();
- GadgetsHandlerApi.MetadataResponse response =
- gadgetHandler.getMetadata(request);
-
- Map<String, Feature> features=response.getModulePrefs().getFeatures();
- //make sure that the feature set contains all the features, and no extra features
- //Note that the core feature is automatically included.
- assertTrue(features.containsKey(FakeProcessor.FEATURE1) &&
- features.containsKey(FakeProcessor.FEATURE2) &&
- features.containsKey(FakeProcessor.FEATURE3) &&
- features.size()==3);
- Multimap<String, String> params1=features.get(FakeProcessor.FEATURE2).getParams();
- assertEquals(ImmutableList.of(FakeProcessor.PARAM_VALUE, FakeProcessor.PARAM_VALUE2), params1.get(FakeProcessor.PARAM_NAME));
- Multimap<String, String> params2=features.get(FakeProcessor.FEATURE3).getParams();
- assertEquals(ImmutableList.of(FakeProcessor.PARAM_VALUE3), params2.get(FakeProcessor.PARAM_NAME2));
+ GadgetsHandlerApi.MetadataRequest request = createMetadataRequest(FakeProcessor.SPEC_URL4,
+ CONTAINER, "default", createAuthContext(null, null), ImmutableList.of("*"));
+ setupMockGadgetAdminStore(true);
+ setupMockRegistry(Lists.newArrayList("auth-refresh"));
+ GadgetsHandlerApi.MetadataResponse response = gadgetHandler.getMetadata(request);
+
+ Map<String, Feature> features = response.getModulePrefs().getFeatures();
+ // make sure that the feature set contains all the features, and no extra features
+ // Note that the core feature is automatically included.
+ assertTrue(features.containsKey(FakeProcessor.FEATURE1)
+ && features.containsKey(FakeProcessor.FEATURE2)
+ && features.containsKey(FakeProcessor.FEATURE3) && features.size() == 3);
+ Multimap<String, String> params1 = features.get(FakeProcessor.FEATURE2).getParams();
+ assertEquals(ImmutableList.of(FakeProcessor.PARAM_VALUE, FakeProcessor.PARAM_VALUE2),
+ params1.get(FakeProcessor.PARAM_NAME));
+ Multimap<String, String> params2 = features.get(FakeProcessor.FEATURE3).getParams();
+ assertEquals(ImmutableList.of(FakeProcessor.PARAM_VALUE3),
+ params2.get(FakeProcessor.PARAM_NAME2));
verify();
}
+
@Test
public void testGetToken() throws Exception {
- GadgetsHandlerApi.TokenRequest request = createTokenRequest(
- FakeProcessor.SPEC_URL, CONTAINER,
- createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(FakeProcessor.SPEC_URL, CONTAINER,
+ createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
replay();
tokenCodec.encodedToken = TOKEN;
tokenCodec.tokenExpiryTimeMs = TOKEN_EXPIRY_TIME_MS;
@@ -256,36 +343,32 @@ public class GadgetsHandlerServiceTest e
@Test(expected = ProcessingException.class)
public void testGetTokenNoContainer() throws Exception {
- GadgetsHandlerApi.TokenRequest request = createTokenRequest(
- FakeProcessor.SPEC_URL, null,
- createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(FakeProcessor.SPEC_URL, null,
+ createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
replay();
gadgetHandler.getToken(request);
}
@Test(expected = ProcessingException.class)
public void testGetTokenNoUrl() throws Exception {
- GadgetsHandlerApi.TokenRequest request = createTokenRequest(
- null, CONTAINER,
- createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(null, CONTAINER,
+ createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
replay();
gadgetHandler.getToken(request);
}
@Test(expected = ProcessingException.class)
public void testGetTokenNoFields() throws Exception {
- GadgetsHandlerApi.TokenRequest request = createTokenRequest(
- FakeProcessor.SPEC_URL, CONTAINER,
- createAuthContext(OWNER, VIEWER), null);
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(FakeProcessor.SPEC_URL, CONTAINER,
+ createAuthContext(OWNER, VIEWER), null);
replay();
gadgetHandler.getToken(request);
}
@Test(expected = SecurityTokenException.class)
public void testGetTokenException() throws Exception {
- GadgetsHandlerApi.TokenRequest request = createTokenRequest(
- FakeProcessor.SPEC_URL, CONTAINER,
- createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(FakeProcessor.SPEC_URL, CONTAINER,
+ createAuthContext(OWNER, VIEWER), ImmutableList.of("*"));
replay();
tokenCodec.exc = new SecurityTokenException("bad data");
gadgetHandler.getToken(request);
@@ -293,9 +376,8 @@ public class GadgetsHandlerServiceTest e
@Test
public void testGetTokenNoToken() throws Exception {
- GadgetsHandlerApi.TokenRequest request = createTokenRequest(
- FakeProcessor.SPEC_URL, CONTAINER,
- null, ImmutableList.of("*"));
+ GadgetsHandlerApi.TokenRequest request = createTokenRequest(FakeProcessor.SPEC_URL, CONTAINER,
+ null, ImmutableList.of("*"));
replay();
tokenCodec.encodedToken = TOKEN;
GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
@@ -308,8 +390,8 @@ public class GadgetsHandlerServiceTest e
public void testCreateJsResponse() throws Exception {
Uri jsUri = Uri.parse("http://www.shindig.com/js");
String content = "content";
- GadgetsHandlerApi.JsResponse jsResponse =
- gadgetHandler.createJsResponse(null, jsUri, content, ImmutableSet.of("*"), null);
+ GadgetsHandlerApi.JsResponse jsResponse = gadgetHandler.createJsResponse(null, jsUri, content,
+ ImmutableSet.of("*"), null);
BeanDelegator.validateDelegator(jsResponse);
}
@@ -318,28 +400,27 @@ public class GadgetsHandlerServiceTest e
List<String> fields = ImmutableList.of("jsurl");
List<String> features = ImmutableList.of("rpc");
Uri resUri = Uri.parse("server.com/gadgets/js/rpc");
- GadgetsHandlerApi.JsRequest request =
- createJsRequest(null, CONTAINER, fields, features, null);
+ GadgetsHandlerApi.JsRequest request = createJsRequest(null, CONTAINER, fields, features, null);
Capture<JsUri> uriCapture = new Capture<JsUri>();
expect(jsUriManager.makeExternJsUri(capture(uriCapture))).andReturn(resUri);
replay();
GadgetsHandlerApi.JsResponse response = gadgetHandler.getJs(request);
- JsUri expectedUri = new JsUri(null, false, false, CONTAINER, null,
- features, null, null, false, false, RenderingContext.GADGET, null, null);
+ JsUri expectedUri = new JsUri(null, false, false, CONTAINER, null, features, null, null, false,
+ false, RenderingContext.GADGET, null, null);
assertEquals(expectedUri, uriCapture.getValue());
assertEquals(resUri, response.getJsUrl());
assertNull(response.getJsContent());
- assertEquals(timeSource.currentTimeMillis() + HttpUtil.getDefaultTtl() * 1000,
- response.getExpireTimeMs().longValue());
+ assertEquals(timeSource.currentTimeMillis() + HttpUtil.getDefaultTtl() * 1000, response
+ .getExpireTimeMs().longValue());
verify();
}
@Test(expected = ProcessingException.class)
public void testJsNoContainer() throws Exception {
List<String> fields = ImmutableList.of("*");
- GadgetsHandlerApi.JsRequest request =
- createJsRequest(null, null, fields, ImmutableList.of("rpc"), null);
+ GadgetsHandlerApi.JsRequest request = createJsRequest(null, null, fields,
+ ImmutableList.of("rpc"), null);
gadgetHandler.getJs(request);
}
@@ -353,23 +434,22 @@ public class GadgetsHandlerServiceTest e
String onload = "do this";
String repository = "v01";
expect(jsUriManager.makeExternJsUri(capture(uriCapture))).andReturn(resUri);
- expect(jsPipeline.execute(EasyMock.isA(JsRequest.class)))
- .andReturn(new JsResponseBuilder().appendJs(jsContent, "js")
- .setProxyCacheable(true).build());
- GadgetsHandlerApi.JsRequest request =
- createJsRequest(FakeProcessor.SPEC_URL.toString(), CONTAINER, fields, features, repository);
+ expect(jsPipeline.execute(EasyMock.isA(JsRequest.class))).andReturn(
+ new JsResponseBuilder().appendJs(jsContent, "js").setProxyCacheable(true).build());
+ GadgetsHandlerApi.JsRequest request = createJsRequest(FakeProcessor.SPEC_URL.toString(),
+ CONTAINER, fields, features, repository);
expect(request.getOnload()).andStubReturn(onload);
expect(request.getContext()).andStubReturn(GadgetsHandlerApi.RenderingContext.CONTAINER);
replay();
GadgetsHandlerApi.JsResponse response = gadgetHandler.getJs(request);
JsUri expectedUri = new JsUri(null, false, false, CONTAINER, FakeProcessor.SPEC_URL.toString(),
- features, null, onload, false, false, RenderingContext.CONTAINER, null, repository);
+ features, null, onload, false, false, RenderingContext.CONTAINER, null, repository);
assertEquals(expectedUri, uriCapture.getValue());
assertNull(response.getJsUrl());
assertEquals(jsContent, response.getJsContent());
- assertEquals(timeSource.currentTimeMillis() + HttpUtil.getDefaultTtl() * 1000,
- response.getExpireTimeMs().longValue());
+ assertEquals(timeSource.currentTimeMillis() + HttpUtil.getDefaultTtl() * 1000, response
+ .getExpireTimeMs().longValue());
verify();
}
@@ -380,10 +460,10 @@ public class GadgetsHandlerServiceTest e
Uri resUri = Uri.parse("http://server.com/gadgets/js/foo");
Capture<JsUri> uriCapture = new Capture<JsUri>();
expect(jsUriManager.makeExternJsUri(capture(uriCapture))).andReturn(resUri);
- expect(jsPipeline.execute(EasyMock.isA(JsRequest.class)))
- .andThrow(new JsException(404, "error"));
- GadgetsHandlerApi.JsRequest request =
- createJsRequest(FakeProcessor.SPEC_URL.toString(), CONTAINER, fields, features, null);
+ expect(jsPipeline.execute(EasyMock.isA(JsRequest.class))).andThrow(
+ new JsException(404, "error"));
+ GadgetsHandlerApi.JsRequest request = createJsRequest(FakeProcessor.SPEC_URL.toString(),
+ CONTAINER, fields, features, null);
expect(request.getOnload()).andStubReturn("do this");
expect(request.getContext()).andStubReturn(GadgetsHandlerApi.RenderingContext.CONTAINER);
replay();
@@ -414,7 +494,7 @@ public class GadgetsHandlerServiceTest e
ProxyUri pUri = gadgetHandler.createProxyUri(request);
ProxyUri expectedUri = new ProxyUri(333, true, true, CONTAINER,
- FakeProcessor.SPEC_URL.toString(), RESOURCE);
+ FakeProcessor.SPEC_URL.toString(), RESOURCE);
expectedUri.setRewriteMimeType("image/png").setSanitizeContent(true);
expectedUri.setResize(210, 120, 77, true).setFallbackUrl(FALLBACK);
assertEquals(pUri, expectedUri);
@@ -423,8 +503,8 @@ public class GadgetsHandlerServiceTest e
@Test
public void testValidateProxyResponse() throws Exception {
- GadgetsHandlerApi.ProxyResponse response =
- gadgetHandler.createProxyResponse(RESOURCE, null, ImmutableSet.<String>of("*"), 1000001L);
+ GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE, null,
+ ImmutableSet.<String> of("*"), 1000001L);
BeanDelegator.validateDelegator(response);
assertEquals(RESOURCE, response.getProxyUrl());
@@ -439,11 +519,11 @@ public class GadgetsHandlerServiceTest e
httpResponse.setEncoding(Charset.forName("UTF8"));
httpResponse.setHttpStatusCode(404);
- GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(
- RESOURCE, httpResponse.create(), ImmutableSet.<String>of("*"), 1000001L);
+ GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE,
+ httpResponse.create(), ImmutableSet.<String> of("*"), 1000001L);
BeanDelegator.validateDelegator(response);
assertEquals("Content",
- new String(Base64.decodeBase64(response.getProxyContent().getContentBase64())));
+ new String(Base64.decodeBase64(response.getProxyContent().getContentBase64())));
assertEquals(404, response.getProxyContent().getCode());
assertEquals(2, response.getProxyContent().getHeaders().size());
assertEquals("Date", response.getProxyContent().getHeaders().get(0).getName());
@@ -455,8 +535,8 @@ public class GadgetsHandlerServiceTest e
@Test
public void testFilterProxyResponse() throws Exception {
HttpResponse httpResponse = new HttpResponse("data");
- GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(
- RESOURCE, httpResponse, ImmutableSet.<String>of("proxyurl"), 1000001L);
+ GadgetsHandlerApi.ProxyResponse response = gadgetHandler.createProxyResponse(RESOURCE,
+ httpResponse, ImmutableSet.<String> of("proxyurl"), 1000001L);
assertNull(response.getProxyContent());
assertEquals(RESOURCE, response.getProxyUrl());
}
@@ -467,8 +547,8 @@ public class GadgetsHandlerServiceTest e
Uri resUri = Uri.parse("server.com/gadgets/proxy?url=" + RESOURCE);
GadgetsHandlerApi.ProxyRequest request = createProxyRequest(RESOURCE, CONTAINER, fields);
Capture<List<ProxyUri>> uriCapture = new Capture<List<ProxyUri>>();
- expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt()))
- .andReturn(ImmutableList.of(resUri));
+ expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt())).andReturn(
+ ImmutableList.of(resUri));
replay();
GadgetsHandlerApi.ProxyResponse response = gadgetHandler.getProxy(request);
assertEquals(1, uriCapture.getValue().size());
@@ -476,8 +556,8 @@ public class GadgetsHandlerServiceTest e
assertEquals(CONTAINER, pUri.getContainer());
assertEquals(resUri, response.getProxyUrl());
assertNull(response.getProxyContent());
- assertEquals(timeSource.currentTimeMillis() + HttpUtil.getDefaultTtl() * 1000,
- response.getExpireTimeMs().longValue());
+ assertEquals(timeSource.currentTimeMillis() + HttpUtil.getDefaultTtl() * 1000, response
+ .getExpireTimeMs().longValue());
verify();
}
@@ -507,8 +587,8 @@ public class GadgetsHandlerServiceTest e
Uri resUri = Uri.parse("server.com/gadgets/proxy?url=" + RESOURCE);
GadgetsHandlerApi.ProxyRequest request = createProxyRequest(RESOURCE, CONTAINER, fields);
Capture<List<ProxyUri>> uriCapture = new Capture<List<ProxyUri>>();
- expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt()))
- .andReturn(ImmutableList.of(resUri));
+ expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt())).andReturn(
+ ImmutableList.of(resUri));
HttpResponseBuilder builder = new HttpResponseBuilder();
builder.setExpirationTime(20000).setContent("response");
HttpResponse httpResponse = builder.create();
@@ -520,7 +600,7 @@ public class GadgetsHandlerServiceTest e
assertEquals(CONTAINER, pUri.getContainer());
assertNull(response.getProxyUrl());
assertEquals("response",
- new String(Base64.decodeBase64(response.getProxyContent().getContentBase64())));
+ new String(Base64.decodeBase64(response.getProxyContent().getContentBase64())));
assertEquals(20000L, response.getExpireTimeMs().longValue());
verify();
}
@@ -531,8 +611,8 @@ public class GadgetsHandlerServiceTest e
Uri resUri = Uri.parse("server.com/gadgets/proxy?url=" + RESOURCE);
GadgetsHandlerApi.ProxyRequest request = createProxyRequest(RESOURCE, CONTAINER, fields);
Capture<List<ProxyUri>> uriCapture = new Capture<List<ProxyUri>>();
- expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt()))
- .andReturn(ImmutableList.of(resUri));
+ expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt())).andReturn(
+ ImmutableList.of(resUri));
HttpResponse httpResponse = new HttpResponseBuilder().setHttpStatusCode(504).create();
expect(proxyHandler.fetch(EasyMock.isA(ProxyUri.class))).andReturn(httpResponse);
replay();
@@ -552,18 +632,18 @@ public class GadgetsHandlerServiceTest e
Uri resUri = Uri.parse("server.com/gadgets/proxy?url=" + RESOURCE);
GadgetsHandlerApi.ProxyRequest request = createProxyRequest(RESOURCE, CONTAINER, fields);
Capture<List<ProxyUri>> uriCapture = new Capture<List<ProxyUri>>();
- expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt()))
- .andReturn(ImmutableList.of(resUri));
+ expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt())).andReturn(
+ ImmutableList.of(resUri));
new HttpResponse("response");
- expect(proxyHandler.fetch(EasyMock.isA(ProxyUri.class)))
- .andThrow(new GadgetException(Code.FAILED_TO_RETRIEVE_CONTENT));
+ expect(proxyHandler.fetch(EasyMock.isA(ProxyUri.class))).andThrow(
+ new GadgetException(Code.FAILED_TO_RETRIEVE_CONTENT));
replay();
gadgetHandler.getProxy(request);
}
@Test
public void testCreateCajaResponse() throws Exception {
- String goldenEntries[][] = {{"name1", "LINT", "msg1"}, {"name2", "LINT", "msg2"}};
+ String goldenEntries[][] = { { "name1", "LINT", "msg1" }, { "name2", "LINT", "msg2" } };
List<GadgetsHandlerApi.Message> goldenMessages = Lists.newArrayList();
for (String[] goldenEntry : goldenEntries) {
@@ -576,16 +656,15 @@ public class GadgetsHandlerServiceTest e
replay();
Uri jsUri = Uri.parse("http://www.shindig.com/js");
- GadgetsHandlerApi.CajaResponse jsResponse =
- gadgetHandler.createCajaResponse(jsUri, "html", "js",
- goldenMessages, ImmutableSet.of("*"), null);
+ GadgetsHandlerApi.CajaResponse jsResponse = gadgetHandler.createCajaResponse(jsUri, "html",
+ "js", goldenMessages, ImmutableSet.of("*"), null);
BeanDelegator.validateDelegator(jsResponse);
assertEquals("html", jsResponse.getHtml());
assertEquals("js", jsResponse.getJs());
List<GadgetsHandlerApi.Message> response = jsResponse.getMessages();
assertEquals(goldenMessages.size(), response.size());
- for (int i=0; i < response.size(); i++) {
+ for (int i = 0; i < response.size(); i++) {
assertEquals(goldenEntries[i][0], response.get(i).getName());
assertEquals(goldenEntries[i][1], response.get(i).getLevel().name());
assertEquals(goldenEntries[i][2], response.get(i).getMessage());
@@ -604,18 +683,19 @@ public class GadgetsHandlerServiceTest e
}
private GadgetsHandlerApi.MetadataRequest createMetadataRequest(Uri url, String container,
- String view, GadgetsHandlerApi.AuthContext authContext, List<String> fields) {
+ String view, GadgetsHandlerApi.AuthContext authContext, 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.getAuthContext()).andReturn(authContext).once();
+
return request;
}
private GadgetsHandlerApi.TokenRequest createTokenRequest(Uri url, String container,
- GadgetsHandlerApi.AuthContext authContext, List<String> fields) {
+ GadgetsHandlerApi.AuthContext authContext, List<String> fields) {
GadgetsHandlerApi.TokenRequest request = mock(GadgetsHandlerApi.TokenRequest.class);
EasyMock.expect(request.getFields()).andReturn(fields).anyTimes();
EasyMock.expect(request.getUrl()).andReturn(url).anyTimes();
@@ -625,7 +705,7 @@ public class GadgetsHandlerServiceTest e
}
private GadgetsHandlerApi.JsRequest createJsRequest(String gadget, String container,
- List<String> fields, List<String> features, String repository) {
+ List<String> fields, List<String> features, String repository) {
GadgetsHandlerApi.JsRequest request = mock(GadgetsHandlerApi.JsRequest.class);
EasyMock.expect(request.getFields()).andStubReturn(fields);
EasyMock.expect(request.getContainer()).andStubReturn(container);
@@ -636,7 +716,7 @@ public class GadgetsHandlerServiceTest e
}
private GadgetsHandlerApi.ProxyRequest createProxyRequest(Uri url, String container,
- List<String> fields) {
+ List<String> fields) {
GadgetsHandlerApi.ProxyRequest request = mock(GadgetsHandlerApi.ProxyRequest.class);
EasyMock.expect(request.getFields()).andStubReturn(fields);
EasyMock.expect(request.getContainer()).andStubReturn(container);
@@ -659,7 +739,7 @@ public class GadgetsHandlerServiceTest e
}
public SecurityToken createToken(Map<String, String> tokenParameters)
- throws SecurityTokenException {
+ throws SecurityTokenException {
if (exc != null) {
throw exc;
}
@@ -675,4 +755,3 @@ public class GadgetsHandlerServiceTest e
}
}
}
-
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java?rev=1178236&r1=1178235&r2=1178236&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java Sun Oct 2 19:44:13 2011
@@ -17,6 +17,11 @@
package org.apache.shindig.gadgets.servlet;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.isA;
+
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
@@ -34,7 +39,15 @@ import org.apache.shindig.common.testing
import org.apache.shindig.common.testing.ImmediateExecutorService;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.util.FakeTimeSource;
+import org.apache.shindig.gadgets.Gadget;
+import org.apache.shindig.gadgets.GadgetContext;
+import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.RenderingContext;
+import org.apache.shindig.gadgets.admin.GadgetAdminStore;
+import org.apache.shindig.gadgets.features.ApiDirective;
+import org.apache.shindig.gadgets.features.FeatureRegistry;
+import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
+import org.apache.shindig.gadgets.features.FeatureRegistryProvider;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.js.JsException;
import org.apache.shindig.gadgets.js.JsRequest;
@@ -45,8 +58,8 @@ import org.apache.shindig.gadgets.proces
import org.apache.shindig.gadgets.servlet.CajaContentRewriter.CajoledResult;
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.uri.JsUriManager;
-import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
+import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.apache.shindig.gadgets.uri.ProxyUriManager.ProxyUri;
import org.apache.shindig.protocol.DefaultHandlerRegistry;
import org.apache.shindig.protocol.HandlerExecutionListener;
@@ -70,21 +83,25 @@ import com.google.caja.reporting.Message
import com.google.caja.reporting.SimpleMessageQueue;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class GadgetsHandlerTest extends EasyMockTestCase {
private static final String GADGET1_URL = FakeProcessor.SPEC_URL.toString();
- private static final String GADGET2_URL = FakeProcessor.SPEC_URL2 .toString();
+ private static final String GADGET2_URL = FakeProcessor.SPEC_URL2.toString();
private static final Uri HTML_URL = Uri.parse("http://www.example.com/a.html");
private static final Uri JS_URL = Uri.parse("http://www.example.com/a.js");
private static final String CONTAINER = "container";
private static final String TOKEN = "_nekot_";
private static final Long SPEC_REFRESH_INTERVAL = 123L;
private static final Long EXPIRY_TIME_MS = 456L;
+ private static final String RPC_SERVICE_1 = "rcp_service_1";
+ private static final String RPC_SERVICE_2 = "rpc_service_2";
private final FakeTimeSource timeSource = new FakeTimeSource();
- private final FakeProcessor processor = new FakeProcessor();
+ private final FeatureRegistry mockRegistry = mock(FeatureRegistry.class);
+ private final FakeProcessor processor = new FakeProcessor(mockRegistry);
private final FakeIframeUriManager urlGenerator = new FakeIframeUriManager();
private final Map<String, FormDataItem> emptyFormItems = Collections.emptyMap();
private final ProxyUriManager proxyUriManager = mock(ProxyUriManager.class);
@@ -93,61 +110,110 @@ public class GadgetsHandlerTest extends
private final CajaContentRewriter cajaContentRewriter = mock(CajaContentRewriter.class);
private final JsServingPipeline jsPipeline = mock(JsServingPipeline.class);
private final JsRequestBuilder jsRequestBuilder = new JsRequestBuilder(jsUriManager, null);
+ private final GadgetAdminStore gadgetAdminStore = mock(GadgetAdminStore.class);
private Injector injector;
private BeanJsonConverter converter;
private HandlerRegistry registry;
private FakeGadgetToken authContext;
+ private FeatureRegistryProvider featureRegistryProvider;
@Before
public void setUp() throws Exception {
injector = Guice.createInjector();
converter = new BeanJsonConverter(injector);
authContext = new FakeGadgetToken();
+ featureRegistryProvider = new FeatureRegistryProvider() {
+ public FeatureRegistry get(String repository) throws GadgetException {
+ return mockRegistry;
+ }
+ };
authContext.setAppUrl("http://www.example.com/gadget.xml");
}
private void registerGadgetsHandler(SecurityTokenCodec codec) {
BeanFilter beanFilter = new BeanFilter();
- GadgetsHandlerService service = new GadgetsHandlerService(timeSource, processor,
- urlGenerator, codec, proxyUriManager, jsUriManager, proxyHandler, jsPipeline,
- jsRequestBuilder, SPEC_REFRESH_INTERVAL, beanFilter, cajaContentRewriter);
- GadgetsHandler handler =
- new GadgetsHandler(new ImmediateExecutorService(), service, beanFilter);
- registry = new DefaultHandlerRegistry(
- injector, converter, new HandlerExecutionListener.NoOpHandler());
+
+ GadgetsHandlerService service = new GadgetsHandlerService(timeSource, processor, urlGenerator,
+ codec, proxyUriManager, jsUriManager, proxyHandler, jsPipeline, jsRequestBuilder,
+ SPEC_REFRESH_INTERVAL, beanFilter, cajaContentRewriter, gadgetAdminStore,
+ featureRegistryProvider);
+ GadgetsHandler handler = new GadgetsHandler(new ImmediateExecutorService(), service, beanFilter);
+ registry = new DefaultHandlerRegistry(injector, converter,
+ new HandlerExecutionListener.NoOpHandler());
registry.addHandlers(ImmutableSet.<Object> of(handler));
}
- private JSONObject makeMetadataRequest(String lang, String country, String... uris)
- throws JSONException {
- JSONObject req =
- new JSONObject().put("method", "gadgets.metadata").put("id", "req1").put("params",
- new JSONObject().put("ids", ImmutableList.copyOf(uris)).put("container", CONTAINER));
- if (lang != null) req.put("language", lang);
- if (country != null) req.put("country", country);
+ private JSONObject makeMetadataRequest(String lang, String country, String[] fields,
+ String... uris) throws JSONException {
+ JSONObject req = new JSONObject()
+ .put("method", "gadgets.metadata")
+ .put("id", "req1")
+ .put("params",
+ new JSONObject().put("ids", ImmutableList.copyOf(uris)).put("container",
+ CONTAINER));
+ if (lang != null)
+ req.put("language", lang);
+ if (country != null)
+ req.put("country", country);
+ if (fields != null)
+ req.getJSONObject("params").put("fields", new JSONArray(fields));
return req;
}
- private JSONObject makeMetadataNoContainerRequest(String... uris)
- throws JSONException {
- JSONObject req =
- new JSONObject().put("method", "gadgets.metadata").put("id", "req1").put("params",
- new JSONObject().put("ids", ImmutableList.copyOf(uris)));
+ private JSONObject makeMetadataNoContainerRequest(String... uris) throws JSONException {
+ JSONObject req = new JSONObject().put("method", "gadgets.metadata").put("id", "req1")
+ .put("params", new JSONObject().put("ids", ImmutableList.copyOf(uris)));
return req;
}
private JSONObject makeTokenRequest(String... uris) throws JSONException {
- JSONObject req =
- new JSONObject().put("method", "gadgets.token").put("id", "req1").put("params",
- new JSONObject().put("ids", ImmutableList.copyOf(uris)).put("container", CONTAINER));
+ JSONObject req = new JSONObject()
+ .put("method", "gadgets.token")
+ .put("id", "req1")
+ .put("params",
+ new JSONObject().put("ids", ImmutableList.copyOf(uris)).put("container",
+ CONTAINER));
return req;
}
+ @SuppressWarnings("unchecked")
+ private void setupMockRegistry(List<String> features) {
+ EasyMock.expect(mockRegistry.getFeatures(EasyMock.isA(List.class)))
+ .andReturn(Lists.newArrayList(features)).anyTimes();
+ FeatureBundle featureBundle = createMockFeatureBundle();
+ FeatureRegistry.LookupResult lr = createMockLookupResult(ImmutableList.of(featureBundle));
+ EasyMock.expect(
+ mockRegistry.getFeatureResources(isA(GadgetContext.class),
+ eq(Lists.newArrayList(features)), EasyMock.<List<String>> isNull()))
+ .andReturn(lr).anyTimes();
+ replay();
+ }
+
+ private void setupGadgetAdminStore() {
+ EasyMock.expect(gadgetAdminStore.checkFeatureAdminInfo(isA(Gadget.class)))
+ .andReturn(true).anyTimes();
+ }
+
+ private FeatureBundle createMockFeatureBundle() {
+ FeatureBundle result = createMock(FeatureBundle.class);
+ expect(result.getApis(ApiDirective.Type.RPC, false)).andReturn(
+ Lists.newArrayList(RPC_SERVICE_1, RPC_SERVICE_2)).anyTimes();
+ replay(result);
+ return result;
+ }
+
+ private FeatureRegistry.LookupResult createMockLookupResult(List<FeatureBundle> featureBundles) {
+ FeatureRegistry.LookupResult result = createMock(FeatureRegistry.LookupResult.class);
+ EasyMock.expect(result.getBundles()).andReturn(featureBundles).anyTimes();
+ replay(result);
+ return result;
+ }
+
@Test
public void testMetadataEmptyRequest() throws Exception {
registerGadgetsHandler(null);
- JSONObject request = makeMetadataRequest(null, null);
+ JSONObject request = makeMetadataRequest(null, null, null);
RpcHandler operation = registry.getRpcHandler(request);
Object empty = operation.execute(emptyFormItems, authContext, converter).get();
JsonAssert.assertJsonEquals("{}", converter.convertToString(empty));
@@ -166,20 +232,15 @@ public class GadgetsHandlerTest extends
}
}
- private JSONObject makeCajaRequest(String mime, String... uris)
- throws JSONException {
- JSONObject params = new JSONObject()
- .put("container", CONTAINER)
- .put("ids", ImmutableList.copyOf(uris));
+ private JSONObject makeCajaRequest(String mime, String... uris) throws JSONException {
+ JSONObject params = new JSONObject().put("container", CONTAINER).put("ids",
+ ImmutableList.copyOf(uris));
if (null != mime) {
params.put("mime_type", mime);
}
- return new JSONObject()
- .put("id", "req1")
- .put("method", "gadgets.cajole")
- .put("params", params);
+ return new JSONObject().put("id", "req1").put("method", "gadgets.cajole").put("params", params);
}
@Test
@@ -210,14 +271,10 @@ public class GadgetsHandlerTest extends
CajoledResult golden = cajole(JS_URL, goldenMime, "alert('hi');");
- EasyMock.expect(cajaContentRewriter.rewrite(
- EasyMock.capture(uriCapture),
- EasyMock.capture(containerCapture),
- EasyMock.capture(mimeCapture),
- EasyMock.eq(true),
- EasyMock.anyBoolean()))
- .andReturn(golden)
- .anyTimes();
+ EasyMock.expect(
+ cajaContentRewriter.rewrite(EasyMock.capture(uriCapture),
+ EasyMock.capture(containerCapture), EasyMock.capture(mimeCapture),
+ EasyMock.eq(true), EasyMock.anyBoolean())).andReturn(golden).anyTimes();
replay();
JSONObject request = makeCajaRequest(goldenMime, JS_URL.toString());
@@ -250,16 +307,12 @@ public class GadgetsHandlerTest extends
String goldenMime = "text/html";
CajoledResult golden = cajole(HTML_URL, goldenMime,
- "<b>hello</b>world<script>evilFunc1()</script><div onclick='evilFunc2'></div>");
+ "<b>hello</b>world<script>evilFunc1()</script><div onclick='evilFunc2'></div>");
- EasyMock.expect(cajaContentRewriter.rewrite(
- EasyMock.capture(uriCapture),
- EasyMock.capture(containerCapture),
- EasyMock.capture(mimeCapture),
- EasyMock.eq(true),
- EasyMock.anyBoolean()))
- .andReturn(golden)
- .anyTimes();
+ EasyMock.expect(
+ cajaContentRewriter.rewrite(EasyMock.capture(uriCapture),
+ EasyMock.capture(containerCapture), EasyMock.capture(mimeCapture),
+ EasyMock.eq(true), EasyMock.anyBoolean())).andReturn(golden).anyTimes();
replay();
JSONObject request = makeCajaRequest(goldenMime, HTML_URL.toString());
@@ -298,9 +351,9 @@ public class GadgetsHandlerTest extends
public void testGetRenderingType() throws Exception {
assertEquals(GadgetsHandlerApi.RenderingType.DEFAULT, GadgetsHandler.getRenderingType(null));
assertEquals(GadgetsHandlerApi.RenderingType.SANITIZED,
- GadgetsHandler.getRenderingType("sanitized"));
+ GadgetsHandler.getRenderingType("sanitized"));
assertEquals(GadgetsHandlerApi.RenderingType.INLINE_CAJOLED,
- GadgetsHandler.getRenderingType("inline_cajoled"));
+ GadgetsHandler.getRenderingType("inline_cajoled"));
try {
GadgetsHandler.getRenderingType("unknown");
fail("Should have failed");
@@ -322,7 +375,7 @@ public class GadgetsHandlerTest extends
public void testMetadataInvalidUrl() throws Exception {
registerGadgetsHandler(null);
String badUrl = "[moo]";
- JSONObject request = makeMetadataRequest(null, null, badUrl);
+ JSONObject request = makeMetadataRequest(null, null, null, badUrl);
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject response = new JSONObject(converter.convertToString(responseObj));
@@ -347,7 +400,9 @@ public class GadgetsHandlerTest extends
@Test
public void testMetadataOneGadget() throws Exception {
registerGadgetsHandler(null);
- JSONObject request = makeMetadataRequest(null, null, GADGET1_URL);
+ setupGadgetAdminStore();
+ setupMockRegistry(Lists.newArrayList("core"));
+ JSONObject request = makeMetadataRequest(null, null, null, GADGET1_URL);
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject response = new JSONObject(converter.convertToString(responseObj));
@@ -361,7 +416,7 @@ public class GadgetsHandlerTest extends
assertEquals(FakeProcessor.PREFERRED_HEIGHT, view.getInt("preferredHeight"));
assertEquals(FakeProcessor.PREFERRED_WIDTH, view.getInt("preferredWidth"));
assertEquals(FakeProcessor.LINK_HREF, gadget.getJSONObject("modulePrefs")
- .getJSONObject("links").getJSONObject(FakeProcessor.LINK_REL).getString("href"));
+ .getJSONObject("links").getJSONObject(FakeProcessor.LINK_REL).getString("href"));
JSONObject userPrefs = gadget.getJSONObject("userPrefs");
assertNotNull(userPrefs);
@@ -380,15 +435,38 @@ public class GadgetsHandlerTest extends
assertEquals("z_xabc", orderedEnums.getJSONObject(2).getString("value"));
assertEquals("disp4", orderedEnums.getJSONObject(3).getString("displayValue"));
assertEquals("foo", orderedEnums.getJSONObject(3).getString("value"));
+
+ verify();
+ }
+
+ @Test
+ public void testAllowedRpcSecurityIds() throws Exception {
+ registerGadgetsHandler(null);
+ setupMockRegistry(Lists.newArrayList("core"));
+ JSONObject request = makeMetadataRequest(null, null, new String[] { "rpcServiceIds" },
+ GADGET1_URL);
+ RpcHandler operation = registry.getRpcHandler(request);
+ Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
+ JSONObject response = new JSONObject(converter.convertToString(responseObj));
+
+ JSONObject gadget = response.getJSONObject(GADGET1_URL);
+
+ JSONArray rpcServiceIds = gadget.getJSONArray("rpcServiceIds");
+ assertEquals(2, rpcServiceIds.length());
+ assertEquals(RPC_SERVICE_2, rpcServiceIds.get(0));
+ assertEquals(RPC_SERVICE_1, rpcServiceIds.get(1));
+
+ verify();
}
@Test
public void testTokenOneGadget() throws Exception {
SecurityTokenCodec codec = EasyMock.createMock(SecurityTokenCodec.class);
Capture<SecurityToken> authContextCapture = new Capture<SecurityToken>();
- EasyMock.expect(codec.encodeToken(EasyMock.capture(authContextCapture))).andReturn(TOKEN).anyTimes();
+ EasyMock.expect(codec.encodeToken(EasyMock.capture(authContextCapture))).andReturn(TOKEN)
+ .anyTimes();
EasyMock.expect(codec.getTokenExpiration(EasyMock.capture(authContextCapture)))
- .andReturn(EXPIRY_TIME_MS).anyTimes();
+ .andReturn(EXPIRY_TIME_MS).anyTimes();
replay(codec);
registerGadgetsHandler(codec);
@@ -411,24 +489,26 @@ public class GadgetsHandlerTest extends
@Test
public void testMetadataOneGadgetFailure() throws Exception {
+ setupGadgetAdminStore();
+ replay();
registerGadgetsHandler(null);
- JSONObject request = makeMetadataRequest(null, null, GADGET1_URL);
+ JSONObject request = makeMetadataRequest(null, null, null, GADGET1_URL);
urlGenerator.throwRandomFault = true;
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject response = new JSONObject(converter.convertToString(responseObj));
JSONObject gadget = response.getJSONObject(GADGET1_URL);
- assertEquals(GadgetsHandler.FAILURE_METADATA,
- gadget.getJSONObject("error").getString("message"));
+ assertEquals(GadgetsHandler.FAILURE_METADATA, gadget.getJSONObject("error")
+ .getString("message"));
assertEquals(500, gadget.getJSONObject("error").getInt("code"));
}
@Test
public void testTokenOneGadgetFailure() throws Exception {
SecurityTokenCodec codec = EasyMock.createMock(SecurityTokenCodec.class);
- EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class)))
- .andThrow(new SecurityTokenException("blah"));
+ EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class))).andThrow(
+ new SecurityTokenException("blah"));
replay(codec);
registerGadgetsHandler(codec);
@@ -439,15 +519,16 @@ public class GadgetsHandlerTest extends
JSONObject gadget = response.getJSONObject(GADGET1_URL);
assertFalse(gadget.has("token"));
- assertEquals(GadgetsHandler.FAILURE_TOKEN,
- gadget.getJSONObject("error").getString("message"));
+ assertEquals(GadgetsHandler.FAILURE_TOKEN, gadget.getJSONObject("error").getString("message"));
assertEquals(500, gadget.getJSONObject("error").getInt("code"));
}
@Test
public void testMetadataMultipleGadgets() throws Exception {
registerGadgetsHandler(null);
- JSONObject request = makeMetadataRequest("en", "US", GADGET1_URL, GADGET2_URL);
+ setupGadgetAdminStore();
+ setupMockRegistry(Lists.newArrayList("core"));
+ JSONObject request = makeMetadataRequest("en", "US", null, GADGET1_URL, GADGET2_URL);
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject response = new JSONObject(converter.convertToString(responseObj));
@@ -457,17 +538,17 @@ public class GadgetsHandlerTest extends
JSONObject modulePrefs2 = response.getJSONObject(GADGET2_URL).getJSONObject("modulePrefs");
assertEquals(FakeProcessor.SPEC_TITLE2, modulePrefs2.getString("title"));
+ verify();
}
@Test
public void testTokenMultipleGadgetsWithSuccessAndFailure() throws Exception {
SecurityTokenCodec codec = EasyMock.createMock(SecurityTokenCodec.class);
- EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class)))
- .andReturn(TOKEN);
- EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class)))
- .andThrow(new SecurityTokenException("blah"));
+ EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class))).andReturn(TOKEN);
+ EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class))).andThrow(
+ new SecurityTokenException("blah"));
EasyMock.expect(codec.getTokenExpiration(EasyMock.isA(SecurityToken.class)))
- .andReturn(EXPIRY_TIME_MS).anyTimes();
+ .andReturn(EXPIRY_TIME_MS).anyTimes();
replay(codec);
registerGadgetsHandler(codec);
@@ -483,17 +564,18 @@ public class GadgetsHandlerTest extends
JSONObject gadget2 = response.getJSONObject(GADGET2_URL);
assertFalse(gadget2.has("token"));
- assertEquals(GadgetsHandler.FAILURE_TOKEN,
- gadget2.getJSONObject("error").getString("message"));
+ assertEquals(GadgetsHandler.FAILURE_TOKEN, gadget2.getJSONObject("error").getString("message"));
assertEquals(500, gadget2.getJSONObject("error").getInt("code"));
}
@Test
public void testMetadataMultipleGadgetsWithFailure() throws Exception {
registerGadgetsHandler(null);
- JSONObject request = makeMetadataRequest("en", "US", GADGET1_URL, GADGET2_URL);
+ setupGadgetAdminStore();
+ setupMockRegistry(Lists.newArrayList("core"));
+ JSONObject request = makeMetadataRequest("en", "US", null, GADGET1_URL, GADGET2_URL);
processor.exceptions.put(FakeProcessor.SPEC_URL2, new ProcessingException("broken",
- HttpServletResponse.SC_BAD_REQUEST));
+ HttpServletResponse.SC_BAD_REQUEST));
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject response = new JSONObject(converter.convertToString(responseObj));
@@ -504,19 +586,19 @@ public class GadgetsHandlerTest extends
JSONObject gadget2 = response.getJSONObject(GADGET2_URL);
assertNotNull("got gadget2", gadget2);
assertEquals("broken", // Processing exception message is used
- gadget2.getJSONObject("error").getString("message"));
- assertEquals(HttpServletResponse.SC_BAD_REQUEST,
- gadget2.getJSONObject("error").getInt("code"));
+ gadget2.getJSONObject("error").getString("message"));
+ assertEquals(HttpServletResponse.SC_BAD_REQUEST, gadget2.getJSONObject("error").getInt("code"));
+ verify();
}
private JSONObject makeSimpleProxyRequest(String fields, String... uris) throws JSONException {
- JSONObject params = new JSONObject().put("ids", ImmutableList.copyOf(uris))
- .put("container", CONTAINER);
+ JSONObject params = new JSONObject().put("ids", ImmutableList.copyOf(uris)).put("container",
+ CONTAINER);
if (fields != null) {
params.put("fields", fields);
}
- JSONObject req =
- new JSONObject().put("method", "gadgets.proxy").put("id", "req1").put("params", params);
+ JSONObject req = new JSONObject().put("method", "gadgets.proxy").put("id", "req1")
+ .put("params", params);
return req;
}
@@ -527,8 +609,9 @@ public class GadgetsHandlerTest extends
String proxyUri = "http://shindig.com/gadgets/proxy?url=" + resUri;
JSONObject request = makeSimpleProxyRequest(null, resUri);
Capture<List<ProxyUri>> captureProxyUri = new Capture<List<ProxyUri>>();
- EasyMock.expect(proxyUriManager.make(EasyMock.capture(captureProxyUri),
- EasyMock.isNull(Integer.class))).andReturn(ImmutableList.<Uri>of(Uri.parse(proxyUri)));
+ EasyMock.expect(
+ proxyUriManager.make(EasyMock.capture(captureProxyUri), EasyMock.isNull(Integer.class)))
+ .andReturn(ImmutableList.<Uri> of(Uri.parse(proxyUri)));
replay();
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
@@ -543,35 +626,33 @@ public class GadgetsHandlerTest extends
verify();
}
- private JSONObject makeSimpleJsRequest(String fields, List<String> features)
- throws JSONException {
- JSONObject params = new JSONObject().put("gadget", GADGET1_URL)
- .put("container", CONTAINER).put("features", features);
+ private JSONObject makeSimpleJsRequest(String fields, List<String> features) throws JSONException {
+ JSONObject params = new JSONObject().put("gadget", GADGET1_URL).put("container", CONTAINER)
+ .put("features", features);
if (fields != null) {
params.put("fields", fields);
}
- JSONObject req =
- new JSONObject().put("method", "gadgets.js").put("id", "req1").put("params", params);
+ JSONObject req = new JSONObject().put("method", "gadgets.js").put("id", "req1")
+ .put("params", params);
return req;
}
@Test
public void testJsSimple() throws Exception {
registerGadgetsHandler(null);
- List<String> features = ImmutableList.of("rpc","io");
+ List<String> features = ImmutableList.of("rpc", "io");
Uri jsUri = Uri.parse("http://shindig.com/gadgets/js/rpc:io");
JSONObject request = makeSimpleJsRequest(null, features);
Capture<JsUri> captureUri = new Capture<JsUri>();
- EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureUri)))
- .andReturn(jsUri);
+ EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureUri))).andReturn(jsUri);
replay();
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject results = new JSONObject(converter.convertToString(responseObj));
assertEquals(jsUri.toString(), results.getString("jsUrl"));
- JsUri expectedUri = new JsUri(null, false, false, CONTAINER, GADGET1_URL,
- features, null, null, false, false, RenderingContext.GADGET, null, null);
+ JsUri expectedUri = new JsUri(null, false, false, CONTAINER, GADGET1_URL, features, null, null,
+ false, false, RenderingContext.GADGET, null, null);
assertEquals(expectedUri, captureUri.getValue());
assertFalse(results.has("error"));
assertFalse(results.has("jsContent"));
@@ -579,23 +660,23 @@ public class GadgetsHandlerTest extends
}
private JSONObject makeComplexJsRequest(List<String> features, List<String> loadedFeatures,
- String onload, String repository) throws JSONException {
- JSONObject params = new JSONObject().put("gadget", GADGET1_URL)
- .put("container", CONTAINER).put("features", features)
- .put("loadedFeatures", loadedFeatures).put("fields", "*").put("refresh", "123")
- .put("debug", "1").put("nocache", "1").put("onload", onload).put("c", "1");
+ String onload, String repository) throws JSONException {
+ JSONObject params = new JSONObject().put("gadget", GADGET1_URL).put("container", CONTAINER)
+ .put("features", features).put("loadedFeatures", loadedFeatures).put("fields", "*")
+ .put("refresh", "123").put("debug", "1").put("nocache", "1").put("onload", onload)
+ .put("c", "1");
if (repository != null) {
- params.put("r", repository);
+ params.put("r", repository);
}
- JSONObject request =
- new JSONObject().put("method", "gadgets.js").put("id", "req1").put("params", params);
+ JSONObject request = new JSONObject().put("method", "gadgets.js").put("id", "req1")
+ .put("params", params);
return request;
}
@Test
public void testJsData() throws Exception {
registerGadgetsHandler(null);
- List<String> features = ImmutableList.of("rpc","io");
+ List<String> features = ImmutableList.of("rpc", "io");
List<String> loadedFeatures = ImmutableList.of("rpc");
Uri jsUri = Uri.parse("http://shindig.com/gadgets/js/rpc:io");
String onload = "do \"this\";";
@@ -604,20 +685,18 @@ public class GadgetsHandlerTest extends
JSONObject request = makeComplexJsRequest(features, loadedFeatures, onload, repository);
Capture<JsUri> captureUri = new Capture<JsUri>();
- EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureUri)))
- .andReturn(jsUri);
+ EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureUri))).andReturn(jsUri);
String jsContent = "var b=\"123\";";
- EasyMock.expect(jsPipeline.execute(EasyMock.isA(JsRequest.class)))
- .andReturn(new JsResponseBuilder().appendJs(jsContent, "js").build());
+ EasyMock.expect(jsPipeline.execute(EasyMock.isA(JsRequest.class))).andReturn(
+ new JsResponseBuilder().appendJs(jsContent, "js").build());
replay();
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
JSONObject results = new JSONObject(converter.convertToString(responseObj));
assertEquals(jsUri.toString(), results.getString("jsUrl"));
- JsUri expectedUri = new JsUri(123, true, true, CONTAINER, GADGET1_URL,
- features, loadedFeatures, onload, false, false, RenderingContext.CONTAINER, null,
- repository);
+ JsUri expectedUri = new JsUri(123, true, true, CONTAINER, GADGET1_URL, features,
+ loadedFeatures, onload, false, false, RenderingContext.CONTAINER, null, repository);
assertEquals(expectedUri, captureUri.getValue());
assertFalse(results.has("error"));
assertEquals(jsContent, results.getString("jsContent"));
@@ -635,10 +714,9 @@ public class GadgetsHandlerTest extends
JSONObject request = makeComplexJsRequest(features, loadedFeatures, onload, null);
Capture<JsUri> captureUri = new Capture<JsUri>();
- EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureUri)))
- .andReturn(jsUri);
- EasyMock.expect(jsPipeline.execute(EasyMock.isA(JsRequest.class)))
- .andThrow(new JsException(404, "not found"));
+ EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureUri))).andReturn(jsUri);
+ EasyMock.expect(jsPipeline.execute(EasyMock.isA(JsRequest.class))).andThrow(
+ new JsException(404, "not found"));
replay();
RpcHandler operation = registry.getRpcHandler(request);
@@ -657,8 +735,9 @@ public class GadgetsHandlerTest extends
String proxyUri = "http://shindig.com/gadgets/proxy?url=" + resUri;
JSONObject request = makeSimpleProxyRequest("*", resUri);
Capture<List<ProxyUri>> captureProxyUri = new Capture<List<ProxyUri>>();
- EasyMock.expect(proxyUriManager.make(EasyMock.capture(captureProxyUri),
- EasyMock.isNull(Integer.class))).andReturn(ImmutableList.<Uri>of(Uri.parse(proxyUri)));
+ EasyMock.expect(
+ proxyUriManager.make(EasyMock.capture(captureProxyUri), EasyMock.isNull(Integer.class)))
+ .andReturn(ImmutableList.<Uri> of(Uri.parse(proxyUri)));
String responseData = "response data";
HttpResponse httpResponse = new HttpResponse(responseData);
EasyMock.expect(proxyHandler.fetch(EasyMock.isA(ProxyUri.class))).andReturn(httpResponse);
@@ -673,22 +752,25 @@ public class GadgetsHandlerTest extends
ProxyUri pUri = captureProxyUri.getValue().get(0);
ProxyUri expectedUri = new ProxyUri(null, false, false, CONTAINER, null, Uri.parse(resUri));
assertTrue(expectedUri.equals(pUri));
- assertEquals(responseData, new String(Base64.decodeBase64(((JSONObject)
- gadget1.get("proxyContent")).getString("contentBase64").getBytes())));
+ assertEquals(
+ responseData,
+ new String(Base64.decodeBase64(((JSONObject) gadget1.get("proxyContent")).getString(
+ "contentBase64").getBytes())));
assertFalse(gadget1.has("error"));
verify();
}
private JSONObject makeComplexProxyRequest(String... uris) throws JSONException {
- JSONObject req =
- new JSONObject().put("method", "gadgets.proxy").put("id", "req1").put("params",
- new JSONObject().put("ids", ImmutableList.copyOf(uris)).put("container", CONTAINER)
- .put("nocache", "1").put("debug", "1").put("sanitize", "true")
- .put("gadget", GADGET1_URL).put("refresh", "333")
- .put("rewriteMime", "text/xml").put("fallback_url", uris[0])
- .put("no_expand", "true").put("resize_h", "444").put("resize_w", "555")
- .put("resize_q", "88")
- );
+ JSONObject req = new JSONObject()
+ .put("method", "gadgets.proxy")
+ .put("id", "req1")
+ .put("params",
+ new JSONObject().put("ids", ImmutableList.copyOf(uris))
+ .put("container", CONTAINER).put("nocache", "1").put("debug", "1")
+ .put("sanitize", "true").put("gadget", GADGET1_URL)
+ .put("refresh", "333").put("rewriteMime", "text/xml")
+ .put("fallback_url", uris[0]).put("no_expand", "true")
+ .put("resize_h", "444").put("resize_w", "555").put("resize_q", "88"));
return req;
}
@@ -699,8 +781,9 @@ public class GadgetsHandlerTest extends
String proxyUri = "http://shindig.com/gadgets/proxy?url=" + resUri;
JSONObject request = makeComplexProxyRequest(resUri);
Capture<List<ProxyUri>> captureProxyUri = new Capture<List<ProxyUri>>();
- EasyMock.expect(proxyUriManager.make(EasyMock.capture(captureProxyUri),
- EasyMock.isNull(Integer.class))).andReturn(ImmutableList.<Uri>of(Uri.parse(proxyUri)));
+ EasyMock.expect(
+ proxyUriManager.make(EasyMock.capture(captureProxyUri), EasyMock.isNull(Integer.class)))
+ .andReturn(ImmutableList.<Uri> of(Uri.parse(proxyUri)));
replay();
RpcHandler operation = registry.getRpcHandler(request);
Object responseObj = operation.execute(emptyFormItems, authContext, converter).get();
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java?rev=1178236&r1=1178235&r2=1178236&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java Sun Oct 2 19:44:13 2011
@@ -23,7 +23,14 @@ import static org.easymock.EasyMock.capt
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
-import com.google.common.collect.Lists;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.servlet.http.HttpServletRequest;
import org.apache.shindig.auth.AuthInfoUtil;
import org.apache.shindig.auth.SecurityToken;
@@ -32,8 +39,8 @@ import org.apache.shindig.common.testing
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.AuthType;
-import org.apache.shindig.gadgets.GadgetBlacklist;
import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.admin.GadgetAdminStore;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
@@ -46,14 +53,7 @@ import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import javax.servlet.http.HttpServletRequest;
+import com.google.common.collect.Lists;
/**
* Tests for MakeRequestHandler.
@@ -64,9 +64,10 @@ public class MakeRequestHandlerTest exte
private static final String RESPONSE_BODY = "makeRequest response body";
private static final SecurityToken DUMMY_TOKEN = new FakeGadgetToken();
- private final GadgetBlacklist gadgetBlacklist = mock(GadgetBlacklist.class);
+ private final GadgetAdminStore gadgetAdminStore = mock(GadgetAdminStore.class);
private final MakeRequestHandler handler
- = new MakeRequestHandler(pipeline, rewriterRegistry, feedProcessorProvider, gadgetBlacklist);
+ = new MakeRequestHandler(pipeline, rewriterRegistry, feedProcessorProvider,
+ gadgetAdminStore);
private void expectGetAndReturnBody(String response) throws Exception {
expectGetAndReturnBody(AuthType.NONE, response);
@@ -175,9 +176,9 @@ public class MakeRequestHandlerTest exte
}
@Test
- public void GetRequestWithBlacklistedGadget() throws Exception {
+ public void GetRequestWithNonWhitelistedGadget() throws Exception {
expect(request.getParameter(Param.GADGET.getKey())).andReturn("http://some/gadget.xml").anyTimes();
- expect(gadgetBlacklist.isBlacklisted(isA(Uri.class))).andReturn(true);
+ expect(gadgetAdminStore.isWhitelisted(isA(String.class), isA(String.class))).andReturn(false);
replay();
boolean exceptionThrown = false;
try {
@@ -185,13 +186,29 @@ public class MakeRequestHandlerTest exte
} catch (GadgetException e) {
exceptionThrown = true;
assertEquals(403, e.getHttpStatusCode());
- assertEquals(GadgetException.Code.BLACKLISTED_GADGET, e.getCode());
+ assertEquals(GadgetException.Code.NON_WHITELISTED_GADGET, e.getCode());
}
assertTrue(exceptionThrown);
verify();
}
@Test
+ public void GetRequestWithWhitelistedGadget() throws Exception {
+ expect(request.getParameter(Param.GADGET.getKey())).andReturn("http://some/gadget.xml").anyTimes();
+ expect(gadgetAdminStore.isWhitelisted(isA(String.class), isA(String.class)))
+ .andReturn(true);
+ expectGetAndReturnBody(RESPONSE_BODY);
+ replay();
+
+ handler.fetch(request, recorder);
+
+ JSONObject results = extractJsonFromResponse();
+ assertEquals(HttpResponse.SC_OK, results.getInt("rc"));
+ assertEquals(RESPONSE_BODY, results.get("body"));
+ assertTrue(rewriter.responseWasRewritten());
+ }
+
+ @Test
public void testExplicitHeaders() throws Exception {
String headerString = "X-Foo=bar&X-Bar=baz%20foo";
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java?rev=1178236&r1=1178235&r2=1178236&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestServletTest.java Sun Oct 2 19:44:13 2011
@@ -22,23 +22,22 @@ import static junitx.framework.StringAss
import static junitx.framework.StringAssert.assertStartsWith;
import static org.easymock.EasyMock.expect;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import javax.servlet.http.HttpServletResponse;
+
import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.gadgets.GadgetBlacklist;
import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.admin.GadgetAdminStore;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.uri.UriCommon.Param;
-
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
-import java.util.Collections;
-import java.util.Enumeration;
-
-import javax.servlet.http.HttpServletResponse;
-
/**
* Tests for MakeRequestServlet.
*
@@ -51,10 +50,10 @@ public class MakeRequestServletTest exte
private static final Enumeration<String> EMPTY_ENUM
= Collections.enumeration(Collections.<String>emptyList());
- private final GadgetBlacklist gadgetBlacklist = mock(GadgetBlacklist.class);
+ private final GadgetAdminStore gadgetAdminStore = mock(GadgetAdminStore.class);
private final MakeRequestServlet servlet = new MakeRequestServlet();
private final MakeRequestHandler handler =
- new MakeRequestHandler(pipeline, null, feedProcessorProvider, gadgetBlacklist);
+ new MakeRequestHandler(pipeline, null, feedProcessorProvider, gadgetAdminStore);
private final HttpRequest internalRequest = new HttpRequest(REQUEST_URL);
private final HttpResponse internalResponse = new HttpResponse(RESPONSE_BODY);