Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java?rev=666593&r1=666592&r2=666593&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyHandlerTest.java Wed Jun 11 02:33:22 2008 @@ -18,432 +18,91 @@ */ package org.apache.shindig.gadgets.servlet; -import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.isA; +import static org.junit.Assert.assertEquals; -import org.apache.shindig.common.SecurityToken; -import org.apache.shindig.gadgets.FakeGadgetToken; import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.http.HttpRequest; import org.apache.shindig.gadgets.http.HttpResponse; -import org.apache.shindig.gadgets.spec.Auth; -import org.apache.shindig.gadgets.spec.Preload; -import org.json.JSONArray; -import org.json.JSONObject; +import org.junit.Test; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintWriter; import java.net.URI; import java.util.Arrays; -import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.servlet.ServletOutputStream; - -public class ProxyHandlerTest extends HttpTestFixture { +import javax.servlet.http.HttpServletResponse; +public class ProxyHandlerTest { private final static String URL_ONE = "http://www.example.org/test.html"; private final static String DATA_ONE = "hello world"; - private static final SecurityToken DUMMY_TOKEN = new FakeGadgetToken(); - - final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - final PrintWriter writer = new PrintWriter(baos); + private final ServletTestFixture fixture = new ServletTestFixture(); + private final ProxyHandler proxyHandler + = new ProxyHandler(fixture.httpFetcher, fixture.lockedDomainService, fixture.rewriter); + private final HttpServletResponseRecorder recorder + = new HttpServletResponseRecorder(fixture.response); - final ServletOutputStream responseStream = new ServletOutputStream() { - @SuppressWarnings("unused") - @Override - public void write(int b) throws IOException { - baos.write(b); - } - }; - - final static Enumeration<String> EMPTY_LIST = new Enumeration<String>() { - public boolean hasMoreElements() { - return false; - } - public String nextElement() { - return null; - } - }; - - private void expectGetAndReturnData(String url, byte[] data) - throws Exception { - HttpRequest req = new HttpRequest( - "GET", new URI(url), null, null, new HttpRequest.Options()); + private void expectGetAndReturnData(String url, byte[] data) throws Exception { + HttpRequest req = new HttpRequest(new URI(url), new HttpRequest.Options()); HttpResponse resp = new HttpResponse(200, data, null); - expect(contentFetcherFactory.get()).andReturn(fetcher); - expect(fetcher.fetch(req)).andReturn(resp); + expect(fixture.httpFetcher.fetch(req)).andReturn(resp); } private void expectGetAndReturnHeaders(String url, Map<String, List<String>> headers) throws Exception { - HttpRequest req = new HttpRequest( - "GET", new URI(url), null, null, new HttpRequest.Options()); + HttpRequest req = new HttpRequest(new URI(url), new HttpRequest.Options()); HttpResponse resp = new HttpResponse(200, null, headers); - expect(contentFetcherFactory.get()).andReturn(fetcher); - expect(fetcher.fetch(req)).andReturn(resp); - } - - private void expectPostAndReturnData(String url, byte[] body, byte[] data) - throws Exception { - HttpRequest req = new HttpRequest( - "POST", new URI(url), null, body, new HttpRequest.Options()); - HttpResponse resp = new HttpResponse(200, data, null); - expect(contentFetcherFactory.get()).andReturn(fetcher); - expect(fetcher.fetch(req)).andReturn(resp); - } - - private void setupPostRequestMock(String url, String body) throws Exception { - setupGenericRequestMock("POST", url); - expect(request.getParameter("postData")).andReturn(body).atLeastOnce(); - } - - private void setupGetRequestMock(String url) throws Exception { - setupGenericRequestMock("GET", url); - } - - private void setupGenericRequestMock(String method, String url) - throws Exception { - expect(request.getMethod()).andReturn("POST").atLeastOnce(); - expect(request.getParameter("httpMethod")).andReturn(method).atLeastOnce(); - expect(request.getParameter("url")).andReturn(url).atLeastOnce(); - expect(response.getWriter()).andReturn(writer).atLeastOnce(); + expect(fixture.httpFetcher.fetch(req)).andReturn(resp); } private void setupProxyRequestMock(String host, String url) throws Exception { - expect(request.getMethod()).andReturn("GET").atLeastOnce(); - expect(request.getHeader("Host")).andReturn(host); - expect(request.getParameter("url")).andReturn(url).atLeastOnce(); - expect(request.getHeaderNames()).andReturn(EMPTY_LIST); - expect(response.getOutputStream()).andReturn(responseStream).atLeastOnce(); + expect(fixture.request.getHeader("Host")).andReturn(host); + expect(fixture.request.getParameter("url")).andReturn(url).atLeastOnce(); } - private void setupFailedProxyRequestMock(String host, String url) - throws Exception { - expect(request.getHeader("Host")).andReturn(host); + private void setupFailedProxyRequestMock(String host, String url) throws Exception { + expect(fixture.request.getHeader("Host")).andReturn(host); } - private JSONObject readJSONResponse(String body) throws Exception { - String json - = body.substring("throw 1; < don't be evil' >".length(), body.length()); - return new JSONObject(json); - } - - public void testFetchJson() throws Exception { - setupGetRequestMock(URL_ONE); - expectGetAndReturnData(URL_ONE, DATA_ONE.getBytes()); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(URL_ONE); - assertEquals(200, info.getInt("rc")); - assertEquals(DATA_ONE, info.get("body")); - } + @Test + public void ifModifiedSinceAlwaysReturnsEarly() throws Exception { + expect(fixture.request.getHeader("If-Modified-Since")) + .andReturn("Yes, this is an invalid header."); + fixture.replay(); - public void testFetchFeed() throws Exception { - String entryTitle = "Feed title"; - String entryLink = "http://example.org/entry/0/1"; - String entrySummary = "This is the summary"; - String rss = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + - "<rss version=\"2.0\"><channel>" + - "<title>dummy</title>" + - "<link>http://example.org/</link>" + - "<item>" + - "<title>" + entryTitle + "</title>" + - "<link>" + entryLink + "</link>" + - "<description>" + entrySummary + "</description>" + - "</item>" + - "</channel></rss>"; - setupGetRequestMock(URL_ONE); - expect(request.getParameter(ProxyHandler.CONTENT_TYPE_PARAM)).andReturn("FEED"); - expectGetAndReturnData(URL_ONE, rss.getBytes()); - replay(); - - proxyHandler.fetchJson(request, response); - - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(URL_ONE); - JSONObject feed = new JSONObject(info.getString("body")); - JSONObject entry = feed.getJSONArray("Entry").getJSONObject(0); - - assertEquals(entryTitle, entry.getString("Title")); - assertEquals(entryLink, entry.getString("Link")); - assertNull("getSummaries has the wrong default value (should be false).", - entry.optString("Summary", null)); - } + proxyHandler.fetch(fixture.request, recorder); + fixture.verify(); - public void testFetchFeedParameters() throws Exception { - String entryTitle = "Feed title"; - String entryLink = "http://example.org/entry/0/1"; - String entrySummary = "This is the summary"; - String rss = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + - "<rss version=\"2.0\"><channel>" + - "<title>dummy</title>" + - "<link>http://example.org/</link>" + - "<item>" + - "<title>" + entryTitle + "</title>" + - "<link>" + entryLink + "</link>" + - "<description>" + entrySummary + "</description>" + - "</item>" + - "<item>" + - "<title>" + entryTitle + "</title>" + - "<link>" + entryLink + "</link>" + - "<description>" + entrySummary + "</description>" + - "</item>" + - "<item>" + - "<title>" + entryTitle + "</title>" + - "<link>" + entryLink + "</link>" + - "<description>" + entrySummary + "</description>" + - "</item>" + - "</channel></rss>"; - setupGetRequestMock(URL_ONE); - expect(request.getParameter(ProxyHandler.CONTENT_TYPE_PARAM)).andReturn("FEED"); - expect(request.getParameter(ProxyHandler.GET_SUMMARIES_PARAM)).andReturn("true"); - expect(request.getParameter(ProxyHandler.NUM_ENTRIES_PARAM)).andReturn("2"); - expectGetAndReturnData(URL_ONE, rss.getBytes()); - replay(); - - proxyHandler.fetchJson(request, response); - - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(URL_ONE); - JSONObject feed = new JSONObject(info.getString("body")); - JSONArray feeds = feed.getJSONArray("Entry"); - - assertEquals("numEntries not parsed correctly!", 2, feeds.length()); - - JSONObject entry = feeds.getJSONObject(1); - assertEquals(entryTitle, entry.getString("Title")); - assertEquals(entryLink, entry.getString("Link")); - assertEquals(entrySummary, entry.getString("Summary")); + assertEquals(HttpServletResponse.SC_NOT_MODIFIED, recorder.getHttpStatusCode()); } - public void testLockedDomainEmbed() throws Exception { + @Test + public void lockedDomainEmbed() throws Exception { setupProxyRequestMock("www.example.com", URL_ONE); - expect(lockedDomainService.embedCanRender("www.example.com")) - .andReturn(true); - expectGetAndReturnData(URL_ONE, DATA_ONE.getBytes()); - replay(); - proxyHandler.fetch(request, response); - verify(); - responseStream.close(); - assertEquals(DATA_ONE, new String(baos.toByteArray())); - } - - public void testLockedDomainFailedEmbed() throws Exception { - setupFailedProxyRequestMock("www.example.com", URL_ONE); - expect(lockedDomainService.embedCanRender("www.example.com")) - .andReturn(false); - replay(); - try { - proxyHandler.fetch(request, response); - fail("should have thrown"); - } catch (GadgetException e) { - assertTrue( - e.getMessage().contains("made to wrong domain www.example.com")); - } - verify(); - } - - public void testFetchDecodedUrl() throws Exception { - String origUrl = "http://www.example.com"; - String cleanedUrl = "http://www.example.com/"; - setupGetRequestMock(origUrl); - expectGetAndReturnData(cleanedUrl, DATA_ONE.getBytes()); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(origUrl); - assertEquals(200, info.getInt("rc")); - assertEquals(DATA_ONE, info.get("body")); - } - - public void testEmptyDocument() throws Exception { - setupGetRequestMock(URL_ONE); - expectGetAndReturnData(URL_ONE, "".getBytes()); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(URL_ONE); - assertEquals(200, info.getInt("rc")); - assertEquals("", info.get("body")); - } - - public void testPostRequest() throws Exception { - String body = "abc"; - setupPostRequestMock(URL_ONE, body); - expectPostAndReturnData(URL_ONE, body.getBytes(), DATA_ONE.getBytes()); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(URL_ONE); - assertEquals(200, info.getInt("rc")); - assertEquals(DATA_ONE, info.get("body")); - } - - public void testSignedGetRequest() throws Exception { - // Doesn't actually sign since it returns the standard fetcher. - // Signing tests are in SigningFetcherTest - setupGetRequestMock(URL_ONE); - expect(securityTokenDecoder.createToken("fake-token")).andReturn(DUMMY_TOKEN); - expect(request.getParameter(ProxyHandler.SECURITY_TOKEN_PARAM)) - .andReturn("fake-token").atLeastOnce(); - expect(request.getParameter(Preload.AUTHZ_ATTR)) - .andReturn(Auth.SIGNED.toString()).atLeastOnce(); - HttpResponse resp = new HttpResponse(200, DATA_ONE.getBytes(), null); - expect(contentFetcherFactory.getSigningFetcher(eq(DUMMY_TOKEN))) - .andReturn(fetcher); - expect(fetcher.fetch(isA(HttpRequest.class))).andReturn(resp); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - } - - public void testSignedPostRequest() throws Exception { - // Doesn't actually sign since it returns the standard fetcher. - // Signing tests are in SigningFetcherTest - String postBody = "foo=bar%20baz"; - setupPostRequestMock(URL_ONE, postBody); - expect(securityTokenDecoder.createToken("fake-token")).andReturn(DUMMY_TOKEN); - expect(request.getParameter(ProxyHandler.SECURITY_TOKEN_PARAM)) - .andReturn("fake-token").atLeastOnce(); - expect(request.getParameter(Preload.AUTHZ_ATTR)) - .andReturn(Auth.SIGNED.toString()).atLeastOnce(); - HttpResponse resp = new HttpResponse(200, DATA_ONE.getBytes(), null); - expect(contentFetcherFactory.getSigningFetcher(eq(DUMMY_TOKEN))) - .andReturn(fetcher); - expect(fetcher.fetch(isA(HttpRequest.class))).andReturn(resp); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - assertFalse(json.getJSONObject(URL_ONE).has("st")); - } - - public void testChangeSecurityToken() throws Exception { - // Doesn't actually sign since it returns the standard fetcher. - // Signing tests are in SigningFetcherTest - FakeGadgetToken authToken = new FakeGadgetToken("updated"); - setupGetRequestMock(URL_ONE); - expect(securityTokenDecoder.createToken("fake-token")).andReturn(authToken); - expect(request.getParameter(ProxyHandler.SECURITY_TOKEN_PARAM)) - .andReturn("fake-token").atLeastOnce(); - expect(request.getParameter(Preload.AUTHZ_ATTR)) - .andReturn(Auth.SIGNED.toString()).atLeastOnce(); - HttpResponse resp = new HttpResponse(200, DATA_ONE.getBytes(), null); - expect(contentFetcherFactory.getSigningFetcher(eq(authToken))) - .andReturn(fetcher); - expect(fetcher.fetch(isA(HttpRequest.class))).andReturn(resp); - replay(); - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - JSONObject json = readJSONResponse(baos.toString()); - assertEquals("updated", json.getJSONObject(URL_ONE).getString("st")); - } - - public void testInvalidSigningTypeTreatedAsNone() throws Exception { - setupGenericRequestMock("GET", URL_ONE); + expect(fixture.lockedDomainService.embedCanRender("www.example.com")).andReturn(true); expectGetAndReturnData(URL_ONE, DATA_ONE.getBytes()); - expect(request.getParameter(Preload.AUTHZ_ATTR)) - .andReturn("garbage").atLeastOnce(); - replay(); - - proxyHandler.fetchJson(request, response); - verify(); - writer.close(); - - JSONObject json = readJSONResponse(baos.toString()); - JSONObject info = json.getJSONObject(URL_ONE); - assertEquals(200, info.getInt("rc")); - assertEquals(DATA_ONE, info.get("body")); - } - - public void testValidateUrlNoPath() throws Exception { - URI url = proxyHandler.validateUrl("http://www.example.com"); - assertEquals("http", url.getScheme()); - assertEquals("www.example.com", url.getHost()); - assertEquals(-1, url.getPort()); - assertEquals("/", url.getPath()); - assertNull(url.getQuery()); - assertNull(url.getFragment()); - } + fixture.replay(); - public void testValidateUrlWithPath() throws Exception { - URI url = proxyHandler.validateUrl("http://www.example.com/foo"); - assertEquals("http", url.getScheme()); - assertEquals("www.example.com", url.getHost()); - assertEquals(-1, url.getPort()); - assertEquals("/foo", url.getPath()); - assertNull(url.getQuery()); - assertNull(url.getFragment()); - } + proxyHandler.fetch(fixture.request, recorder); + fixture.verify(); - public void testValidateUrlWithPort() throws Exception { - URI url = proxyHandler.validateUrl("http://www.example.com:8080/foo"); - assertEquals("http", url.getScheme()); - assertEquals("www.example.com", url.getHost()); - assertEquals(8080, url.getPort()); - assertEquals("/foo", url.getPath()); - assertNull(url.getQuery()); - assertNull(url.getFragment()); + assertEquals(DATA_ONE, recorder.getResponseAsString()); } - public void testValidateUrlWithEncodedPath() throws Exception { - URI url - = proxyHandler.validateUrl("http://www.example.com:8080/foo%20bar"); - assertEquals("http", url.getScheme()); - assertEquals("www.example.com", url.getHost()); - assertEquals(8080, url.getPort()); - assertEquals("/foo%20bar", url.getRawPath()); - assertEquals("/foo bar", url.getPath()); - assertNull(url.getQuery()); - assertNull(url.getFragment()); - } - - public void testValidateUrlWithEncodedQuery() throws Exception { - URI url = proxyHandler.validateUrl( - "http://www.example.com:8080/foo?q=with%20space"); - assertEquals("http", url.getScheme()); - assertEquals("www.example.com", url.getHost()); - assertEquals(8080, url.getPort()); - assertEquals("/foo", url.getPath()); - assertEquals("q=with%20space", url.getRawQuery()); - assertEquals("q=with space", url.getQuery()); - assertNull(url.getFragment()); - } + @Test(expected = GadgetException.class) + public void lockedDomainFailedEmbed() throws Exception { + setupFailedProxyRequestMock("www.example.com", URL_ONE); + expect(fixture.lockedDomainService.embedCanRender("www.example.com")).andReturn(false); + fixture.replay(); - public void testValidateUrlWithNoPathAndEncodedQuery() throws Exception { - URI url - = proxyHandler.validateUrl("http://www.example.com?q=with%20space"); - assertEquals("http", url.getScheme()); - assertEquals("www.example.com", url.getHost()); - assertEquals(-1, url.getPort()); - assertEquals("/", url.getPath()); - assertEquals("q=with%20space", url.getRawQuery()); - assertEquals("q=with space", url.getQuery()); - assertNull(url.getFragment()); + proxyHandler.fetch(fixture.request, fixture.response); } - public void testHeadersPreserved() throws Exception { + @Test + public void headersPreserved() throws Exception { // Some headers may be blacklisted. These are ok. String url = "http://example.org/file.evil"; String domain = "example.org"; @@ -453,15 +112,15 @@ headers.put("Content-Type", Arrays.asList(contentType)); headers.put("X-Magic-Garbage", Arrays.asList(magicGarbage)); - expect(lockedDomainService.embedCanRender(domain)) - .andReturn(true).atLeastOnce(); + expect(fixture.lockedDomainService.embedCanRender(domain)).andReturn(true).atLeastOnce(); setupProxyRequestMock(domain, url); expectGetAndReturnHeaders(url, headers); - response.addHeader("Content-Type", contentType); - response.addHeader("X-Magic-Garbage", magicGarbage); - replay(); - proxyHandler.fetch(request, response); - verify(); + fixture.replay(); + + proxyHandler.fetch(fixture.request, recorder); + + assertEquals(contentType, recorder.getHeader("Content-Type")); + assertEquals(magicGarbage, recorder.getHeader("X-Magic-Garbage")); } }
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java?rev=666593&r1=666592&r2=666593&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ProxyServletTest.java Wed Jun 11 02:33:22 2008 @@ -30,8 +30,6 @@ import org.junit.Test; import java.net.URI; -import java.util.Collections; -import java.util.Enumeration; import javax.servlet.http.HttpServletResponse; @@ -49,10 +47,10 @@ = "http://opensocial.org/proxy/foo=bar/" + REQUEST_URL; private static final String RESPONSE_BODY = "Hello, world!"; private static final String ERROR_MESSAGE = "Broken!"; - private static final Enumeration<String> EMPTY_ENUM - = Collections.enumeration(Collections.<String>emptyList()); private final ServletTestFixture fixture = new ServletTestFixture(); + private final ProxyHandler proxyHandler + = new ProxyHandler(fixture.httpFetcher, fixture.lockedDomainService, fixture.rewriter); private final ProxyServlet servlet = new ProxyServlet(); private final HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(fixture.response); @@ -61,13 +59,9 @@ @Before public void setUp() { - servlet.setProxyHandler(fixture.proxyHandler); - expect(fixture.request.getHeaderNames()).andReturn(EMPTY_ENUM).anyTimes(); - expect(fixture.request.getParameter(ProxyHandler.METHOD_PARAM)) - .andReturn("GET").anyTimes(); - expect(fixture.request.getParameter(ProxyHandler.URL_PARAM)) + servlet.setProxyHandler(proxyHandler); + expect(fixture.request.getParameter(ProxyBase.URL_PARAM)) .andReturn(REQUEST_URL).anyTimes(); - expect(fixture.request.getMethod()).andReturn("GET").anyTimes(); expect(fixture.request.getHeader("Host")).andReturn(REQUEST_DOMAIN).anyTimes(); expect(fixture.lockedDomainService.embedCanRender(REQUEST_DOMAIN)) .andReturn(true).anyTimes(); Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java?rev=666593&r1=666592&r2=666593&view=diff ============================================================================== --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java (original) +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java Wed Jun 11 02:33:22 2008 @@ -19,11 +19,17 @@ package org.apache.shindig.gadgets.servlet; import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.isA; +import org.apache.shindig.common.SecurityToken; import org.apache.shindig.common.SecurityTokenDecoder; +import org.apache.shindig.gadgets.GadgetException; import org.apache.shindig.gadgets.LockedDomainService; +import org.apache.shindig.gadgets.SigningFetcher; import org.apache.shindig.gadgets.http.ContentFetcherFactory; import org.apache.shindig.gadgets.http.HttpFetcher; +import org.apache.shindig.gadgets.oauth.OAuthFetcher; +import org.apache.shindig.gadgets.oauth.OAuthRequestParams; import org.apache.shindig.gadgets.rewrite.ContentRewriter; import org.apache.shindig.gadgets.rewrite.NoOpContentRewriter; @@ -45,20 +51,24 @@ public final HttpServletResponse response = mock(HttpServletResponse.class); public final SecurityTokenDecoder securityTokenDecoder = mock(SecurityTokenDecoder.class); public final HttpFetcher httpFetcher = mock(HttpFetcher.class); + public final SigningFetcher signingFetcher = mock(SigningFetcher.class); + public final OAuthFetcher oauthFetcher = mock(OAuthFetcher.class); + public final ContentFetcherFactory contentFetcherFactory = mock(ContentFetcherFactory.class); public final LockedDomainService lockedDomainService = mock(LockedDomainService.class); public final ContentRewriter rewriter = new NoOpContentRewriter(); - public final ProxyHandler proxyHandler; public ServletTestFixture() { - // TODO: This is horrible. It needs to be fixed. - ContentFetcherFactory contentFetcherFactory = mock(ContentFetcherFactory.class); - expect(contentFetcherFactory.get()).andReturn(httpFetcher).anyTimes(); - - proxyHandler = new ProxyHandler( - contentFetcherFactory, - securityTokenDecoder, - lockedDomainService, - rewriter); + try { + // TODO: This is horrible. It needs to be fixed. + expect(contentFetcherFactory.get()).andReturn(httpFetcher).anyTimes(); + expect(contentFetcherFactory.getSigningFetcher(isA(SecurityToken.class))) + .andReturn(signingFetcher).anyTimes(); + expect(contentFetcherFactory.getOAuthFetcher( + isA(SecurityToken.class), isA(OAuthRequestParams.class))) + .andReturn(oauthFetcher).anyTimes(); + } catch (GadgetException e) { + // Blah + } } /** @@ -101,4 +111,8 @@ protected void verify() { EasyMock.verify(mocks.toArray()); } + + protected void reset() { + EasyMock.reset(mocks.toArray()); + } }

