1 package com.atlassian.selenium.browsers;
2
3 import com.atlassian.selenium.SeleniumClient;
4 import junit.framework.TestCase;
5 import org.mortbay.jetty.Handler;
6 import org.mortbay.jetty.Request;
7 import org.mortbay.jetty.Server;
8 import org.mortbay.jetty.handler.AbstractHandler;
9
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import java.io.IOException;
14 import java.net.ServerSocket;
15
16 import static com.atlassian.selenium.browsers.AutoInstallClient.assertThat;
17 import static com.atlassian.selenium.browsers.AutoInstallClient.seleniumClient;
18
19
20
21
22 public class TestHelloWorld extends TestCase
23 {
24 public void testHelloWorld() throws Exception
25 {
26 int port = pickFreePort();
27 Server server = startServer(port);
28 System.setProperty("selenium.browser", "firefox-3.5");
29 System.setProperty("baseurl", "http://localhost:" + port);
30 SeleniumClient client = seleniumClient();
31 client.open("/");
32 assertThat().textPresent("Hello");
33 server.stop();
34 }
35
36 private Server startServer(int port) throws Exception
37 {
38 Handler handler=new AbstractHandler()
39 {
40 public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch)
41 throws IOException, ServletException
42 {
43 response.setContentType("text/html");
44 response.setStatus(HttpServletResponse.SC_OK);
45 response.getWriter().println("<h1>Hello</h1>");
46 ((Request)request).setHandled(true);
47 }
48 };
49
50 Server server = new Server(port);
51 server.setHandler(handler);
52 server.start();
53 return server;
54 }
55
56 static int pickFreePort()
57 {
58 ServerSocket socket = null;
59 try
60 {
61 socket = new ServerSocket(0);
62 return socket.getLocalPort();
63 }
64 catch (IOException e)
65 {
66 throw new RuntimeException("Error opening socket", e);
67 }
68 finally
69 {
70 if (socket != null)
71 {
72 try
73 {
74 socket.close();
75 }
76 catch (IOException e)
77 {
78 throw new RuntimeException("Error closing socket", e);
79 }
80 }
81 }
82 }
83 }