View Javadoc

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  }