import junit.framework.*; import java.io.*; // NOTE: This Test class depends on certain webpages at a // specific URLs remaining static. This is, of course, // impossible, as those webpages may change or the server the // web pages are hosted on may go offline. public class RemoteGetFileHandlerTestCase extends TestCase { // declare these here for convenience private RemoteGetFileHandler testRGFH; private String testURL1, testURL2; private boolean bool; // following variables are used to calculate if the *number* of // characters returned is correct (since testing for the exact // string returned will make things messy) private int testHTMLSize1, testHTMLSize2; public RemoteGetFileHandlerTestCase(String name) { super (name); } protected void setUp() { testRGFH = new RemoteGetFileHandler(HandlerOrder.NO_PREFERENCE); // NOTE: The pages at testURL1 and testURL2 could possibly change // and cause this Test class to fail. testURL1 = "homepage.cs.uri.edu/courses/cscamp/contest1.html"; testHTMLSize1 = 888; testURL2 = "www.cs.umd.edu/class/fall2001/cmsc106/index.html"; testHTMLSize2 = 5979; } protected void tearDown() { } public void testCompareTo() { RemoteGetFileHandler tmpRGFH1 = new RemoteGetFileHandler(HandlerOrder.EARLY); RemoteGetFileHandler tmpRGFH2 = new RemoteGetFileHandler(HandlerOrder.NO_PREFERENCE); RemoteGetFileHandler tmpRGFH3 = new RemoteGetFileHandler(HandlerOrder.LATE); assertTrue(testRGFH.compareTo(tmpRGFH1) > 0); assertTrue(testRGFH.compareTo(tmpRGFH2) == 0); assertTrue(testRGFH.compareTo(tmpRGFH3) < 0); } public void testIsExclusive() { assertTrue(testRGFH.isExclusive()); } public void testMatchRequest() { HttpRequest req = new HttpGetRequestSimple("blah", "HTTP/1.1" ,"GET"); assertTrue(!(testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("getFile/", "HTTP/1.1" ,"GET"); assertTrue(!(testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("remoteGetFile/.*", "HTTP/1.1" ,"GET"); assertTrue((testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("remoteGetFile/", "HTTP/1.1" ,"GET"); assertTrue((testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("remoteGetFile/ravens.html", "HTTP/1.1" ,"GET"); assertTrue((testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("remoteGetFile/www.cnn.com/news.html", "HTTP/1.1" ,"GET"); assertTrue((testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("remoteGetFile/http://slashdot.org", "HTTP/1.1" ,"GET"); assertTrue((testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("/remoteGetFile/ravens.html", "HTTP/1.1" ,"GET"); assertTrue(!(testRGFH.matchRequest(req))); req = new HttpGetRequestSimple("remotegetfile/ravens.html", "HTTP/1.1" ,"GET"); assertTrue(!(testRGFH.matchRequest(req))); } public void testHandleRequest() { HttpRequest req = new HttpGetRequestSimple("blah", "HTTP/1.1" ,"GET"); StringBuffer tmpSB = new StringBuffer(); try { assertTrue(!(testRGFH.handleRequest(req, tmpSB))); } catch (HandlerException e) { } assertTrue(tmpSB.toString().equals("")); tmpSB = new StringBuffer(); req = new HttpGetRequestSimple("remoteGetFile/" + testURL1, "HTTP/1.1" ,"GET"); try { assertTrue(testRGFH.handleRequest(req, tmpSB)); } catch (HandlerException e) { assertTrue(false); } assertTrue(tmpSB.toString().length() == testHTMLSize1); tmpSB = new StringBuffer(); req = new HttpGetRequestSimple("remoteGetFile/" + testURL2, "HTTP/1.1" ,"GET"); try { assertTrue(testRGFH.handleRequest(req, tmpSB)); } catch (HandlerException e) { assertTrue(false); } assertTrue(tmpSB.toString().length() == testHTMLSize2); tmpSB = new StringBuffer(); req = new HttpGetRequestSimple("remoteGetFile/index.html", "HTTP/1.1" ,"GET"); bool = false; try { assertTrue(testRGFH.handleRequest(req, tmpSB)); } catch (HandlerException e) { bool = true; } assertTrue(bool); assertTrue(tmpSB.toString().equals("")); tmpSB = new StringBuffer(); req = new HttpGetRequestSimple("remoteGetFile/", "HTTP/1.1" ,"GET"); bool = false; try { assertTrue(testRGFH.handleRequest(req, tmpSB)); } catch (HandlerException e) { bool = true; } assertTrue(bool); assertTrue(tmpSB.toString().equals("")); tmpSB = new StringBuffer(); req = new HttpGetRequestSimple("remoteGetFile/http://" + testURL1, "HTTP/1.1" ,"GET"); bool = false; try { assertTrue(testRGFH.handleRequest(req, tmpSB)); } catch (HandlerException e) { bool = true; } assertTrue(bool); assertTrue(tmpSB.toString().equals("")); } public static Test suite() { return new TestSuite(RemoteGetFileHandlerTestCase.class); } public static void main(String args[]) { junit.textui.TestRunner.run(suite()); } }