Added: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/SocialPreloaderTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/SocialPreloaderTest.java?rev=727098&view=auto ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/SocialPreloaderTest.java (added) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/SocialPreloaderTest.java Tue Dec 16 09:44:54 2008 @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.shindig.gadgets.preload; + +import com.google.common.collect.Lists; +import org.apache.shindig.common.ContainerConfig; +import org.apache.shindig.gadgets.http.ContentFetcherFactory; +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.spec.GadgetSpec; +import org.apache.shindig.gadgets.spec.SocialData; +import org.easymock.EasyMock; +import org.json.JSONObject; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; + +/** + * Test for SocialPreloader. + */ +public class SocialPreloaderTest extends PreloaderTestFixture { + private ContainerConfig containerConfig; + + private static final String XML = "<Module xmlns:os=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\">" + + "<ModulePrefs title=\"Title\"/>" + + "<Content href=\"http://example.org/proxied.php\" view=\"profile\">" + + " <os:PeopleRequest key=\"p\" userIds=\"you\"/>" + + " <os:PersonAppDataRequest key=\"a\" userId=\"she\"/>" + + "</Content></Module>"; + + @Before + public void createContainerConfig() { + containerConfig = EasyMock.createMock(ContainerConfig.class); + EasyMock.expect(containerConfig.get(CONTAINER, "gadgets.osDataUri")) + .andStubReturn("http://%host%/social/rpc"); + EasyMock.replay(containerConfig); + } + + @Test + public void testSocialPreload() throws Exception { + GadgetSpec spec = new GadgetSpec(GADGET_URL, XML); + + String socialResult = "[{id:'p', data:1}, {id:'a', data:2}]"; + RecordingHttpFetcher fetcher = new RecordingHttpFetcher(socialResult); + SocialPreloader preloader = new SocialPreloader(fetcher, containerConfig); + view = "profile"; + contextParams.put("st", "token"); + + Collection<Callable<PreloadedData>> tasks = + preloader.createPreloadTasks(context, spec, PreloaderService.PreloadPhase.PROXY_FETCH); + assertEquals(1, tasks.size()); + // Nothing fetched yet + assertEquals(0, fetcher.requests.size()); + + Map<String, Object> result = tasks.iterator().next().call().toJson(); + assertEquals(2, result.size()); + + JSONObject resultWithKeyP = new JSONObject("{id: 'p', data: 1}"); + JSONObject resultWithKeyA = new JSONObject("{id: 'a', data: 2}"); + assertEquals(resultWithKeyP.toString(), result.get("p").toString()); + assertEquals(resultWithKeyA.toString(), result.get("a").toString()); + + // Should have only fetched one request + assertEquals(1, fetcher.requests.size()); + HttpRequest request = fetcher.requests.get(0); + + assertEquals("http://" + context.getHost() + "/social/rpc?st=token", + request.getUri().toString()); + assertEquals("POST", request.getMethod()); + assertTrue(request.getContentType().startsWith("application/json")); + } + + @Test + public void testSocialPreloadForOtherView() throws Exception { + GadgetSpec spec = new GadgetSpec(GADGET_URL, XML); + + String socialResult = "[{id:'p', data:1}, {id:'a', data:2}]"; + RecordingHttpFetcher fetcher = new RecordingHttpFetcher(socialResult); + SocialPreloader preloader = new SocialPreloader(fetcher, containerConfig); + view = "canvas"; + contextParams.put("st", "token"); + + Collection<Callable<PreloadedData>> tasks = + preloader.createPreloadTasks(context, spec, PreloaderService.PreloadPhase.PROXY_FETCH); + assertTrue(tasks.isEmpty()); + } + + @Test + public void testSocialPreloadForHtmlRender() throws Exception { + GadgetSpec spec = new GadgetSpec(GADGET_URL, XML); + + String socialResult = "[{id:'p', data:1}, {id:'a', data:2}]"; + RecordingHttpFetcher fetcher = new RecordingHttpFetcher(socialResult); + SocialPreloader preloader = new SocialPreloader(fetcher, containerConfig); + view = "profile"; + contextParams.put("st", "token"); + + Collection<Callable<PreloadedData>> tasks = + preloader.createPreloadTasks(context, spec, PreloaderService.PreloadPhase.HTML_RENDER); + assertTrue(tasks.isEmpty()); + } + + // TODO: test HttpPreloads + + private static class RecordingHttpFetcher extends ContentFetcherFactory { + public final List<HttpRequest> requests = Lists.newArrayList(); + private final String content; + + public RecordingHttpFetcher(String content) { + super(null, null); + this.content = content; + } + + @Override + public HttpResponse fetch(HttpRequest request) { + requests.add(request); + return new HttpResponseBuilder() + .setResponseString(content) + .create(); + } + } +}
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java?rev=727098&r1=727097&r2=727098&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/HtmlRendererTest.java Tue Dec 16 09:44:54 2008 @@ -18,6 +18,8 @@ */ package org.apache.shindig.gadgets.render; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.shindig.auth.AnonymousSecurityToken; import org.apache.shindig.auth.SecurityToken; @@ -30,18 +32,20 @@ import org.apache.shindig.gadgets.http.ContentFetcherFactory; import org.apache.shindig.gadgets.http.HttpRequest; import org.apache.shindig.gadgets.http.HttpResponse; +import org.apache.shindig.gadgets.preload.PreloadException; +import org.apache.shindig.gadgets.preload.PreloadedData; import org.apache.shindig.gadgets.preload.PreloaderService; import org.apache.shindig.gadgets.preload.Preloads; import org.apache.shindig.gadgets.rewrite.ContentRewriterRegistry; import org.apache.shindig.gadgets.spec.GadgetSpec; import org.apache.shindig.gadgets.spec.View; +import org.json.JSONArray; +import org.json.JSONObject; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; -import java.util.Arrays; -import java.util.Locale; -import java.util.Map; +import java.util.*; /** * Tests for HtmlRenderer @@ -135,6 +139,55 @@ } @Test + public void renderProxiedWithPreload() throws Exception { + JSONObject prefetchedJson = new JSONObject("{id: 'foo', data: 'bar'}"); + + preloaderService.preloads = new FakePreloads( + ImmutableMap.of("key", (Object) prefetchedJson)); + + fetcher.plainResponses.put(EXPECTED_PROXIED_HTML_HREF, new HttpResponse(PROXIED_HTML_CONTENT)); + String content = renderer.render(makeHrefGadget("none")); + assertEquals(PROXIED_HTML_CONTENT, content); + + HttpRequest lastHttpRequest = fetcher.getLastHttpRequest(); + assertEquals("POST", lastHttpRequest.getMethod()); + assertEquals("GET", lastHttpRequest.getHeader("X-Method-Override")); + String postBody = lastHttpRequest.getPostBodyAsString(); + JSONArray actualJson = new JSONArray(postBody); + + assertEquals(1, actualJson.length()); + assertEquals(prefetchedJson.toString(), actualJson.getJSONObject(0).toString()); + } + + @Test + public void renderProxiedWithFailedPreload() throws Exception { + JSONObject prefetchedJson = new JSONObject("{id: 'foo', data: 'bar'}"); + + preloaderService.preloads = new Preloads() { + public Collection<PreloadedData> getData() { + PreloadedData preloadedData = new PreloadedData() { + public Map<String, Object> toJson() throws PreloadException { + throw new PreloadException("test"); + } + }; + return Lists.newArrayList(preloadedData); + } + }; + + fetcher.plainResponses.put(EXPECTED_PROXIED_HTML_HREF, new HttpResponse(PROXIED_HTML_CONTENT)); + String content = renderer.render(makeHrefGadget("none")); + assertEquals(PROXIED_HTML_CONTENT, content); + + HttpRequest lastHttpRequest = fetcher.getLastHttpRequest(); + assertEquals("POST", lastHttpRequest.getMethod()); + assertEquals("GET", lastHttpRequest.getHeader("X-Method-Override")); + String postBody = lastHttpRequest.getPostBodyAsString(); + JSONArray actualJson = new JSONArray(postBody); + + assertEquals(0, actualJson.length()); + } + + @Test public void doPreloading() throws Exception { renderer.render(makeGadget(BASIC_HTML_CONTENT)); assertTrue("Preloading not performed.", preloaderService.wasPreloaded); @@ -150,6 +203,7 @@ private final Map<Uri, HttpResponse> plainResponses = Maps.newHashMap(); private final Map<Uri, HttpResponse> signedResponses = Maps.newHashMap(); private final Map<Uri, HttpResponse> oauthResponses = Maps.newHashMap(); + private HttpRequest lastHttpRequest; public FakeContentFetcherFactory() { super(null, null); @@ -157,6 +211,8 @@ @Override public HttpResponse fetch(HttpRequest request) throws GadgetException { + lastHttpRequest = request; + if (request.getGadget() == null) { throw new GadgetException(GadgetException.Code.FAILED_TO_RETRIEVE_CONTENT, "No gadget associated with rendering request."); @@ -198,16 +254,38 @@ } return response; } + + public HttpRequest getLastHttpRequest() { + return lastHttpRequest; + } } private static class FakePreloaderService implements PreloaderService { private boolean wasPreloaded; - public Preloads preload(GadgetContext context, GadgetSpec gadget) { + Preloads preloads; + + public Preloads preload(GadgetContext context, GadgetSpec gadget, PreloadPhase phase) { wasPreloaded = true; - return null; + return preloads; } } + private static class FakePreloads implements Preloads { + private final PreloadedData preloadedData; + + public Collection<PreloadedData> getData() { + return Collections.singletonList(preloadedData); + } + + public FakePreloads(final Map<String, Object> preloadData) { + this.preloadedData = new PreloadedData() { + public Map<String, Object> toJson() throws PreloadException { + return preloadData; + } + }; + } + } + private static class FakeContentRewriterRegistry implements ContentRewriterRegistry { private boolean wasRewritten = false; Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java?rev=727098&r1=727097&r2=727098&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingContentRewriterTest.java Tue Dec 16 09:44:54 2008 @@ -18,6 +18,13 @@ */ package org.apache.shindig.gadgets.render; +import com.google.caja.util.Join; +import com.google.common.collect.ImmutableSortedSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.inject.Guice; +import com.google.inject.Injector; import org.apache.shindig.common.ContainerConfig; import org.apache.shindig.common.PropertiesModule; import org.apache.shindig.common.uri.Uri; @@ -35,14 +42,6 @@ import org.apache.shindig.gadgets.spec.LocaleSpec; import org.apache.shindig.gadgets.spec.MessageBundle; import org.apache.shindig.gadgets.spec.View; - -import com.google.caja.util.Join; -import com.google.common.collect.ImmutableSortedSet; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.inject.Guice; -import com.google.inject.Injector; import static org.easymock.EasyMock.expect; import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; @@ -601,17 +600,14 @@ // implementing equals. Preloads preloads = new Preloads() { - - public PreloadedData getData(final String key) { - return new PreloadedData() { - public Object toJson() { - return preloadData.get(key); + public Collection<PreloadedData> getData() { + PreloadedData preloadedData = new PreloadedData() { + public Map<String, Object> toJson() throws PreloadException { + return preloadData; } }; - } - public Set<String> getKeys() { - return preloadData.keySet(); + return Lists.newArrayList(preloadedData); } }; @@ -629,11 +625,14 @@ @Test public void failedPreloadHandledGracefully() throws Exception { Preloads preloads = new Preloads() { - public PreloadedData getData(final String key) throws PreloadException { - throw new PreloadException("broken"); - } - public Set<String> getKeys() { - return ImmutableSortedSet.of("foo"); + public Collection<PreloadedData> getData() { + PreloadedData preloadedData = new PreloadedData() { + public Map<String, Object> toJson() throws PreloadException { + throw new PreloadException("test"); + } + }; + + return Lists.newArrayList(preloadedData); } }; Added: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/SocialDataTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/SocialDataTest.java?rev=727098&view=auto ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/SocialDataTest.java (added) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/SocialDataTest.java Tue Dec 16 09:44:54 2008 @@ -0,0 +1,160 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.shindig.gadgets.spec; + +import org.apache.shindig.common.xml.XmlUtil; +import org.json.JSONObject; +import static org.junit.Assert.*; +import org.junit.Test; + +public class SocialDataTest { + //TODO: test os:MakeRequest + + @Test + public void testPeopleRequest() throws Exception { + String xml = "<Content><PeopleRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " groupId=\"group\"" + + " userId=\"first,second\"" + + " startIndex=\"20\"" + + " count=\"10\"" + + " fields=\"name,id\"" + + "/></Content>"; + + SocialData socialData = new SocialData(XmlUtil.parse(xml), null); + assertFalse(socialData.needsOwner()); + assertFalse(socialData.needsViewer()); + + JSONObject expected = new JSONObject("{method: 'people.get', id: 'key', params:" + + "{groupId: 'group'," + + "userId: ['first','second']," + + "startIndex: 20," + + "count: 10," + + "fields: ['name','id']" + + "}}"); + + assertEquals(1, socialData.getSocialPreloads().size()); + assertEquals(expected.toString(), socialData.getSocialPreloads().get("key").toString()); + } + + @Test + public void testViewerRequest() throws Exception { + String xml = "<Content><ViewerRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " fields=\"name,id\"" + + "/></Content>"; + + SocialData socialData = new SocialData(XmlUtil.parse(xml), null); + assertFalse(socialData.needsOwner()); + assertTrue(socialData.needsViewer()); + + JSONObject expected = new JSONObject("{method: 'people.get', id: 'key', params:" + + "{userId: ['@viewer']," + + "fields: ['name','id']" + + "}}"); + + assertEquals(1, socialData.getSocialPreloads().size()); + assertEquals(expected.toString(), socialData.getSocialPreloads().get("key").toString()); + } + + @Test + public void testOwnerRequest() throws Exception { + String xml = "<Content><OwnerRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " fields=\"name,id\"" + + "/></Content>"; + + SocialData socialData = new SocialData(XmlUtil.parse(xml), null); + assertTrue(socialData.needsOwner()); + assertFalse(socialData.needsViewer()); + + JSONObject expected = new JSONObject("{method: 'people.get', id: 'key', params:" + + "{userId: ['@owner']," + + "fields: ['name','id']" + + "}}"); + + assertEquals(1, socialData.getSocialPreloads().size()); + assertEquals(expected.toString(), socialData.getSocialPreloads().get("key").toString()); + } + + @Test + public void testPersonAppData() throws Exception { + String xml = "<Content><PersonAppDataRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " userId=\"@viewer\"" + + " fields=\"foo,bar\"" + + "/></Content>"; + + SocialData socialData = new SocialData(XmlUtil.parse(xml), null); + assertFalse(socialData.needsOwner()); + assertTrue(socialData.needsViewer()); + + JSONObject expected = new JSONObject("{method: 'appdata.get', id: 'key', params:" + + "{userId: ['@viewer']," + + "fields: ['foo','bar']" + + "}}"); + + assertEquals(1, socialData.getSocialPreloads().size()); + assertEquals(expected.toString(), socialData.getSocialPreloads().get("key").toString()); + } + + @Test + public void testActivitiesRequest() throws Exception { + String xml = "<Content><ActivitiesRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " userId=\"@owner,@viewer\"" + + " fields=\"foo,bar\"" + + "/></Content>"; + + SocialData socialData = new SocialData(XmlUtil.parse(xml), null); + assertTrue(socialData.needsOwner()); + assertTrue(socialData.needsViewer()); + + JSONObject expected = new JSONObject("{method: 'activities.get', id: 'key', params:" + + "{userId: ['@owner','@viewer']," + + "fields: ['foo','bar']" + + "}}"); + + assertEquals(1, socialData.getSocialPreloads().size()); + assertEquals(expected.toString(), socialData.getSocialPreloads().get("key").toString()); + } + + @Test + public void testIgnoreNoNamespace() throws Exception { + String xml = "<Content><PersonRequest" + + " key=\"key\"" + + " userId=\"@owner\"" + + " fields=\"name,id\"" + + "/></Content>"; + + SocialData socialData = new SocialData(XmlUtil.parse(xml), null); + assertFalse(socialData.needsOwner()); + + assertTrue(socialData.getSocialPreloads().isEmpty()); + } + + @Test(expected = SpecParserException.class) + public void testErrorOnUnknownOpensocialElement() throws Exception { + String xml = "<Content><NotARealElement xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + "/></Content>"; + + new SocialData(XmlUtil.parse(xml), null); + } +} Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java?rev=727098&r1=727097&r2=727098&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java Tue Dec 16 09:44:54 2008 @@ -19,15 +19,11 @@ package org.apache.shindig.gadgets.spec; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - import org.apache.shindig.common.uri.Uri; import org.apache.shindig.common.xml.XmlUtil; import org.apache.shindig.gadgets.variables.Substitutions; import org.apache.shindig.gadgets.variables.Substitutions.Type; - +import static org.junit.Assert.*; import org.junit.Test; import java.util.Arrays; @@ -199,4 +195,53 @@ assertFalse("sign_owner parsed incorrectly.", view.isSignOwner()); assertFalse("sign_viewer parsed incorrectly.", view.isSignViewer()); } + + @Test + public void testSocialPreload() throws Exception { + String xml = "<Content href=\"http://example.org/proxied.php\" " + + "authz=\"SIGNED\">" + + "<OwnerRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " fields=\"name,id\"" + + "/></Content>"; + View view = new View("test", Arrays.asList(XmlUtil.parse(xml)), SPEC_URL); + assertEquals(1, view.getSocialData().getSocialPreloads().size()); + assertTrue(view.getSocialData().getSocialPreloads().containsKey("key")); + } + + @Test(expected = SpecParserException.class) + public void testSocialPreloadWithoutAuth() throws Exception { + // Not signed, so a parse exception will result + String xml = "<Content href=\"http://example.org/proxied.php\" " + + "sign_owner=\"true\">" + + "<OwnerRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " fields=\"name,id\"" + + "/></Content>"; + new View("test", Arrays.asList(XmlUtil.parse(xml)), SPEC_URL); + } + + @Test(expected = SpecParserException.class) + public void testSocialPreloadWithoutSignOwner() throws Exception { + // Signed, but not by owner when owner data is fetched + String xml = "<Content href=\"http://example.org/proxied.php\" " + + "authz=\"SIGNED\" sign_owner=\"false\">" + + "<OwnerRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " fields=\"name,id\"" + + "/></Content>"; + new View("test", Arrays.asList(XmlUtil.parse(xml)), SPEC_URL); + } + + @Test(expected = SpecParserException.class) + public void testSocialPreloadWithoutSignViewer() throws Exception { + // Signed, but not by viewer when viewer data is fetched + String xml = "<Content href=\"http://example.org/proxied.php\" " + + "authz=\"SIGNED\" sign_viewer=\"false\">" + + "<ViewerRequest xmlns=\"" + SocialData.OPENSOCIAL_NAMESPACE + "\" " + + " key=\"key\"" + + " fields=\"name,id\"" + + "/></Content>"; + new View("test", Arrays.asList(XmlUtil.parse(xml)), SPEC_URL); + } }
