// Copyright 2012 Google Inc. All Rights Reserved. package com.google.jstestdriver.server.gateway; import com.google.common.collect.ImmutableMap; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import junit.framework.TestCase; import org.easymock.EasyMock; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; /** * @author rdionne@google.com (Robert Dionne) */ public class MockResponseTest extends TestCase { private JsonParser parser; @Override protected void setUp() throws Exception { parser = new JsonParser(); } public void testEntryDescribesMockResponse_status() throws Exception { JsonObject entry = parser.parse("{\"status\":0}").getAsJsonObject(); assertTrue("Should describe mock response", MockResponse.entryDescribesMockResponse(entry)); } public void testEntryDescribesMockResponse_responseText() throws Exception { JsonObject entry = parser.parse("{\"responseText\":0}").getAsJsonObject(); assertTrue("Should describe mock response", MockResponse.entryDescribesMockResponse(entry)); } public void testEntryDescribesMockResponse_contentType() throws Exception { JsonObject entry = parser.parse("{\"contentType\":0}").getAsJsonObject(); assertTrue("Should describe mock response", MockResponse.entryDescribesMockResponse(entry)); } public void testEntryDescribesMockResponse_responseHeaders() throws Exception { JsonObject entry = parser.parse("{\"responseHeaders\":{}}").getAsJsonObject(); assertTrue("Should describe mock response", MockResponse.entryDescribesMockResponse(entry)); } public void testEntryDescribesMockResponse_negative() throws Exception { JsonObject entry = parser.parse("{\"server\":{}}").getAsJsonObject(); assertFalse("Should describe mock response", MockResponse.entryDescribesMockResponse(entry)); } public void testBuildFromEntry() throws Exception { JsonObject entry = parser.parse("{" + "\"status\":200," + "\"responseHeaders\":{}," + "\"contentType\":\"text/html\"," + "\"responseText\":\"hello world\"" + "}").getAsJsonObject(); MockResponse mockResponse = MockResponse.buildFromEntry(entry); assertEquals( "status should match", Integer.valueOf(200), mockResponse.status); assertEquals( "responseHeaders should match", 0, mockResponse.responseHeaders.size()); assertEquals( "contentType should match", "text/html", mockResponse.contentType); assertEquals( "repsonseText should match", "hello world", mockResponse.responseText); } public void testWriteTo() throws Exception { HttpServletResponse response = EasyMock.createMock(HttpServletResponse.class); ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintWriter writer = new PrintWriter(out); MockResponse mockResponse = new MockResponse( 200, ImmutableMap.of("X-Test", "Blah"), "text/plain", "hello world"); /* expect */ response.setStatus(200); /* expect */ response.setHeader("X-Test", "Blah"); /* expect */ response.setContentType("text/plain"); EasyMock.expect(response.getWriter()).andReturn(writer); EasyMock.replay(response); mockResponse.writeTo(response); writer.flush(); EasyMock.verify(response); assertEquals("responseText should match", "hello world", out.toString()); } }