1 package com.diasparsoftware.htmlunitx.test; 2 3 import java.io.InputStream; 4 import java.net.URL; 5 6 import junit.framework.TestCase; 7 import junitx.framework.ArrayAssert; 8 9 import com.diasparsoftware.gsbase.StreamUtil; 10 import com.diasparsoftware.htmlunitx.TestableWebResponse; 11 12 public abstract class AbstractWebResponseTestCase extends 13 TestCase { 14 private TestableWebResponse webResponse; 15 16 protected void setUp() throws Exception { 17 webResponse = makeActualWebResponse(); 18 } 19 20 protected abstract TestableWebResponse makeActualWebResponse() 21 throws Exception; 22 23 protected abstract byte[] getExpectedResponseBody() 24 throws Exception; 25 26 protected abstract InputStream getExpectedContentAsStream() 27 throws Exception; 28 29 protected abstract String getExpectedContentAsString() 30 throws Exception; 31 32 public void testStatusCode() { 33 assertEquals(200, webResponse.getStatusCode()); 34 webResponse.setStatusCode(500); 35 assertEquals(500, webResponse.getStatusCode()); 36 } 37 38 public void testStatusMessage() { 39 assertEquals("", webResponse.getStatusMessage()); 40 webResponse.setStatusMessage("A status message"); 41 assertEquals("A status message", webResponse 42 .getStatusMessage()); 43 } 44 45 public void testContentAsStream() throws Exception { 46 ArrayAssert 47 .assertEquals( 48 StreamUtil 49 .getContentAsBytes(getExpectedContentAsStream()), 50 StreamUtil 51 .getContentAsBytes(webResponse 52 .getContentAsStream())); 53 } 54 55 public void testContentAsString() throws Exception { 56 assertEquals(getExpectedContentAsString(), webResponse 57 .getContentAsString()); 58 } 59 60 public void testContentCharSet() { 61 assertEquals("ISO-8859-1", webResponse 62 .getContentCharSet()); 63 webResponse.setContentCharSet("Big5"); 64 assertEquals("Big5", webResponse.getContentCharSet()); 65 } 66 67 public void testContentType() { 68 assertEquals("application/octet-stream", webResponse 69 .getContentType()); 70 webResponse.setContentType("text/plain"); 71 assertEquals("text/plain", webResponse.getContentType()); 72 } 73 74 public void testHasStopwatch() { 75 assertNotNull(webResponse.getStopwatch()); 76 } 77 78 public void testLoadTime() throws Exception { 79 FakeStopwatch fakeStopwatch = new FakeStopwatch(100); 80 webResponse.setStopwatch(fakeStopwatch); 81 webResponse.getContentAsStream(); 82 assertEquals(100, webResponse 83 .getLoadTimeInMilliSeconds()); 84 } 85 86 public void testResponseBody() throws Exception { 87 ArrayAssert.assertEquals(getExpectedResponseBody(), 88 webResponse.getResponseBody()); 89 } 90 91 public void testResponseHeaderValue() { 92 assertEquals(null, webResponse 93 .getResponseHeaderValue("notThereYet")); 94 webResponse.addResponseHeaderValue("thereNow", 95 "a value"); 96 assertEquals("a value", webResponse 97 .getResponseHeaderValue("thereNow")); 98 99 } 100 101 public void testUrl() throws Exception { 102 assertEquals(new URL("http://foo"), webResponse 103 .getUrl()); 104 } 105 106 }