Beispiel #1
0
  public void testInvocationContext() throws Exception {
    final String resourceName = "something/interesting";

    ServletRunner sr = new ServletRunner();
    sr.registerServlet(resourceName, StatefulServlet.class.getName());
    ServletUnitClient suc = sr.newClient();

    WebRequest request = new PostMethodWebRequest("http://localhost/" + resourceName);
    request.setParameter("color", "red");

    InvocationContext ic = suc.newInvocation(request);
    StatefulServlet ss = (StatefulServlet) ic.getServlet();
    assertNull("A session already exists", ss.getColor(ic.getRequest()));

    ss.setColor(ic.getRequest(), "blue");
    assertEquals("Color in session", "blue", ss.getColor(ic.getRequest()));

    Enumeration e = ic.getRequest().getSession().getAttributeNames();
    assertNotNull("No attribute list returned", e);
    assertTrue("No attribute names in list", e.hasMoreElements());
    assertEquals("First attribute name", "color", e.nextElement());
    assertTrue("List did not end after one name", !e.hasMoreElements());

    String[] names = ic.getRequest().getSession().getValueNames();
    assertEquals("number of value names", 1, names.length);
    assertEquals("first name", "color", names[0]);
  }
Beispiel #2
0
  @Test
  public void testCopyFileOverwrite() throws Exception {
    String directoryPath = "/testCopyFile/directory/path" + System.currentTimeMillis();
    String sourcePath = directoryPath + "/source.txt";
    String destName = "destination.txt";
    String destPath = directoryPath + "/" + destName;
    createDirectory(directoryPath);
    createFile(sourcePath, "This is the contents");
    createFile(destPath, "Original file");

    // with no-overwrite, copy should fail
    JSONObject requestObject = new JSONObject();
    addSourceLocation(requestObject, sourcePath);
    WebRequest request =
        getPostFilesRequest(directoryPath, requestObject.toString(), "destination.txt");
    request.setHeaderField("X-Create-Options", "copy,no-overwrite");
    WebResponse response = webConversation.getResponse(request);
    assertEquals(HttpURLConnection.HTTP_PRECON_FAILED, response.getResponseCode());

    // now omit no-overwrite and copy should succeed and return 200 instead of 201
    request = getPostFilesRequest(directoryPath, requestObject.toString(), "destination.txt");
    request.setHeaderField("X-Create-Options", "copy");
    response = webConversation.getResponse(request);
    assertEquals(HttpURLConnection.HTTP_OK, response.getResponseCode());
    JSONObject responseObject = new JSONObject(response.getText());
    checkFileMetadata(responseObject, destName, null, null, null, null, null, null, null);
    assertTrue(checkFileExists(sourcePath));
    assertTrue(checkFileExists(destPath));
  }
 public void testHostnameSlash3Directory1Directory2File() throws Exception {
   WebRequest request =
       new GetMethodWebRequest("http://host.name////directory1////directory2////file.html");
   assertEquals(
       "URL",
       request.getURL().toExternalForm(),
       "http://host.name/directory1/directory2/file.html");
 }
 public void testTortureHostnameDotDirectory1DotDirectory2DotFile() throws Exception {
   WebRequest request =
       new GetMethodWebRequest("http://host.name/./directory1/./directory2/./file.html");
   assertEquals(
       "URL",
       request.getURL().toExternalForm(),
       "http://host.name/directory1/directory2/file.html");
 }
 // request a table from the servlet
 WebResponse getTable(String table, boolean text) throws Exception {
   initServletRunner();
   WebRequest request = new GetMethodWebRequest("http://null/DaemonStatus");
   request.setParameter("table", table);
   if (text) {
     request.setParameter("output", "text");
   }
   return sClient.getResponse(request);
 }
Beispiel #6
0
 private void checkNextRequest() {
   Log.d(TAG, "check next: " + currentRequests.size());
   if (currentRequests.size() < maxRequests) {
     Log.d(TAG, "queue size: " + requestQueue.size());
     if (requestQueue.size() > 0) {
       WebRequest request = requestQueue.remove();
       currentRequests.add(request);
       request.start();
     }
   }
 }
Beispiel #7
0
  public void testStateCookies() throws Exception {
    final String resourceName = "something/interesting";

    ServletRunner sr = new ServletRunner();
    sr.registerServlet(resourceName, StatefulServlet.class.getName());

    WebRequest request = new PostMethodWebRequest("http://localhost/" + resourceName);
    request.setParameter("color", "red");
    WebResponse response = sr.getResponse(request);
    assertNotNull("No response received", response);
    assertEquals("Returned cookie count", 1, response.getNewCookieNames().length);
  }
Beispiel #8
0
  @Test
  public void testCopyFileInvalidSource() throws Exception {
    String directoryPath = "/testCopyFile/directory/path" + System.currentTimeMillis();
    createDirectory(directoryPath);

    JSONObject requestObject = new JSONObject();
    requestObject.put("Location", "/this/does/not/exist/at/all");
    WebRequest request =
        getPostFilesRequest(directoryPath, requestObject.toString(), "destination.txt");
    request.setHeaderField("X-Create-Options", "copy");
    WebResponse response = webConversation.getResponse(request);
    assertEquals(HttpURLConnection.HTTP_NOT_FOUND, response.getResponseCode());
    JSONObject responseObject = new JSONObject(response.getText());
    assertEquals("Error", responseObject.get("Severity"));
  }
 public Document getDocument() throws IOException {
   try {
     return WebRequest.getDocument(get());
   } catch (SAXException e) {
     throw new RuntimeException(e);
   }
 }
 private String getRequestUri() {
   try {
     return null == _request ? null : _request.getURL().getFile();
   } catch (MalformedURLException e) {
     return null;
   }
 }
Beispiel #11
0
  public void testSessionAccess() throws Exception {
    final String resourceName1 = "something/interesting/start";
    final String resourceName2 = "something/continue";

    ServletRunner sr = new ServletRunner();
    sr.registerServlet(resourceName1, StatefulServlet.class.getName());
    sr.registerServlet(resourceName2, StatefulServlet.class.getName());

    WebRequest request = new PostMethodWebRequest("http://localhost/" + resourceName1);
    request.setParameter("color", "yellow");
    sr.getResponse(request);

    assertNotNull("No session was created", sr.getSession(false));
    assertEquals(
        "Color attribute in session", "yellow", sr.getSession(false).getAttribute("color"));
  }
 static String getStringParameter(WebRequest request, String name) {
   String p;
   if ((p = request.getParameter(name)) != null) {
     return p;
   } else {
     return "";
   }
 }
  @Override
  protected String fetchData(URL url, long lastModified) throws IOException {
    ByteBuffer data = WebRequest.fetchIfModified(url, lastModified);

    if (data == null) return null; // not modified

    return Charset.forName("UTF-8").decode(data).toString();
  }
 /**
  * Resynchronizes calls performed from the thread where this instance has been created.
  *
  * <p>{@inheritDoc}
  */
 @Override
 public boolean processSynchron(
     final HtmlPage page, final WebRequest settings, final boolean async) {
   if (async && isInOriginalThread()) {
     LOG.info("Re-synchronized call to " + settings.getUrl());
     return true;
   }
   return !async;
 }
Beispiel #15
0
  public void testInvocationCompletion() throws Exception {
    final String resourceName = "something/interesting";

    ServletRunner sr = new ServletRunner();
    sr.registerServlet(resourceName, StatefulServlet.class.getName());
    ServletUnitClient suc = sr.newClient();

    WebRequest request = new PostMethodWebRequest("http://localhost/" + resourceName);
    request.setParameter("color", "red");

    InvocationContext ic = suc.newInvocation(request);
    StatefulServlet ss = (StatefulServlet) ic.getServlet();
    ss.setColor(ic.getRequest(), "blue");
    ss.writeSelectMessage("blue", ic.getResponse().getWriter());

    WebResponse response = ic.getServletResponse();
    assertEquals("requested resource", "You selected blue", response.getText());
    assertEquals("Returned cookie count", 1, response.getNewCookieNames().length);
  }
 /**
  * cleans up the current thread. if a current request is set and the request object implements the
  * WebRequest interface then the exit function is called.
  *
  * @param exitCode the exitCode
  */
 protected static void exit(int exitCode) {
   Object reqObj = currentRequest.get();
   if (reqObj != null) {
     if (reqObj instanceof WebRequest) {
       ((WebRequest) reqObj).exit(exitCode);
     }
     // Clear Thread local
     currentRequest.set(null);
   }
 }
Beispiel #17
0
 @Test
 public void testCopyFileNoOverwrite() throws Exception {
   String directoryPath = "/testCopyFile/directory/path" + System.currentTimeMillis();
   String sourcePath = directoryPath + "/source.txt";
   String destName = "destination.txt";
   String destPath = directoryPath + "/" + destName;
   createDirectory(directoryPath);
   createFile(sourcePath, "This is the contents");
   JSONObject requestObject = new JSONObject();
   addSourceLocation(requestObject, sourcePath);
   WebRequest request =
       getPostFilesRequest(directoryPath, requestObject.toString(), "destination.txt");
   request.setHeaderField("X-Create-Options", "copy");
   WebResponse response = webConversation.getResponse(request);
   assertEquals(HttpURLConnection.HTTP_CREATED, response.getResponseCode());
   JSONObject responseObject = new JSONObject(response.getText());
   checkFileMetadata(responseObject, destName, null, null, null, null, null, null, null);
   assertTrue(checkFileExists(sourcePath));
   assertTrue(checkFileExists(destPath));
 }
Beispiel #18
0
  public void testInvocationContextUpdate() throws Exception {
    final String resourceName = "something/interesting";

    ServletRunner sr = new ServletRunner();
    sr.registerServlet(resourceName, StatefulServlet.class.getName());
    ServletUnitClient suc = sr.newClient();

    WebRequest request = new PostMethodWebRequest("http://localhost/" + resourceName);
    request.setParameter("color", "red");

    InvocationContext ic = suc.newInvocation(request);
    StatefulServlet ss = (StatefulServlet) ic.getServlet();
    ss.setColor(ic.getRequest(), "blue");
    suc.getResponse(ic);

    WebResponse response = suc.getResponse("http://localhost/" + resourceName);
    assertNotNull("No response received", response);
    assertEquals("content type", "text/plain", response.getContentType());
    assertEquals("requested resource", "You posted blue", response.getText());
    assertEquals("Returned cookie count", 0, response.getNewCookieNames().length);
  }
Beispiel #19
0
  @Test
  public void testCreateFileOverwrite()
      throws CoreException, IOException, SAXException, JSONException {
    String directoryPath = "sample/directory/path" + System.currentTimeMillis();
    createDirectory(directoryPath);
    String fileName = "testfile.txt";

    WebRequest request =
        getPostFilesRequest(directoryPath, getNewFileJSON(fileName).toString(), fileName);
    WebResponse response = webConversation.getResponse(request);
    assertEquals(HttpURLConnection.HTTP_CREATED, response.getResponseCode());

    // creating again at the same location should succeed but return OK rather than CREATED
    request = getPostFilesRequest(directoryPath, getNewFileJSON(fileName).toString(), fileName);
    response = webConversation.getResponse(request);
    assertEquals(HttpURLConnection.HTTP_OK, response.getResponseCode());

    // creating with no-overwrite should fail if it already exists
    request = getPostFilesRequest(directoryPath, getNewFileJSON(fileName).toString(), fileName);
    request.setHeaderField("X-Create-Options", "no-overwrite");
    response = webConversation.getResponse(request);
    assertEquals(HttpURLConnection.HTTP_PRECON_FAILED, response.getResponseCode());
  }
Beispiel #20
0
  public void testStatePreservation() throws Exception {
    final String resourceName1 = "something/interesting/start";
    final String resourceName2 = "something/continue";

    ServletRunner sr = new ServletRunner();
    sr.registerServlet(resourceName1, StatefulServlet.class.getName());
    sr.registerServlet(resourceName2, StatefulServlet.class.getName());
    WebClient wc = sr.newClient();

    WebRequest request = new PostMethodWebRequest("http://localhost/" + resourceName1);
    request.setParameter("color", "red");
    WebResponse response = wc.getResponse(request);
    assertNotNull("No response received", response);
    assertEquals("content type", "text/plain", response.getContentType());
    assertEquals("requested resource", "You selected red", response.getText());

    request = new GetMethodWebRequest("http://localhost/" + resourceName2);
    response = wc.getResponse(request);
    assertNotNull("No response received", response);
    assertEquals("content type", "text/plain", response.getContentType());
    assertEquals("requested resource", "You posted red", response.getText());
    assertEquals("Returned cookie count", 0, response.getNewCookieNames().length);
  }
 static int parseIntParameter(WebRequest request, String name, int ifMissing) {
   String p;
   if ((p = request.getParameter(name)) != null) {
     try {
       return asInt(p);
     } catch (NumberFormatException ee) {
       logger.error(
           new StringWriter()
               .append("Could not cast event property '")
               .append(name)
               .append(": ")
               .append(p)
               .append("' to int")
               .toString());
       return ifMissing;
     }
   } else {
     return ifMissing;
   }
 }
  private URL getRequestURL(WebRequest request) throws MalformedURLException {
    DNSListener dnsListener = getClientProperties().getDnsListener();
    if (dnsListener == null) return request.getURL();

    String hostName = request.getURL().getHost();
    String portPortion = request.getURL().getPort() == -1 ? "" : (":" + request.getURL().getPort());
    setHeaderField("Host", hostName + portPortion);
    String actualHost = dnsListener.getIpAddress(hostName);
    if (HttpUnitOptions.isLoggingHttpHeaders())
      System.out.println("Rerouting request to :: " + actualHost);
    return new URL(
        request.getURL().getProtocol(),
        actualHost,
        request.getURL().getPort(),
        request.getURL().getFile());
  }
Beispiel #23
0
  /** {@inheritDoc} */
  public WebResponse getResponse(final WebRequest request) throws IOException {
    final URL url = request.getUrl();

    if (LOG.isDebugEnabled()) {
      LOG.debug("Getting response for " + url.toExternalForm());
    }

    lastRequest_ = request;
    requestCount_++;
    requestedUrls_.add(url);

    WebResponseData response = responseMap_.get(url.toExternalForm());
    if (response == null) {
      response = defaultResponse_;
      if (response == null) {
        throw new IllegalStateException(
            "No response specified that can handle URL [" + url.toExternalForm() + "]");
      }
    }

    return new WebResponse(response, request, 0);
  }
 /** Creates a web response object which represents the response to the specified web request. */
 protected WebResponse newResponse(WebRequest request, FrameSelector targetFrame)
     throws MalformedURLException, IOException {
   Properties savedProperties = (Properties) System.getProperties().clone();
   try {
     if (_proxyHost != null) {
       System.setProperty("proxyHost", _proxyHost);
       System.setProperty("proxyPort", Integer.toString(_proxyPort));
     }
     URLConnection connection = openConnection(getRequestURL(request));
     if (HttpUnitOptions.isLoggingHttpHeaders()) {
       String urlString = request.getURLString();
       System.out.println("\nConnecting to " + request.getURL().getHost());
       System.out.println("Sending:: " + request.getMethod() + " " + urlString);
     }
     sendHeaders(connection, getHeaderFields(request.getURL()));
     sendHeaders(connection, request.getHeaderDictionary());
     request.completeRequest(connection);
     return new HttpWebResponse(
         this, targetFrame, request, connection, getExceptionsThrownOnErrorStatus());
   } finally {
     System.setProperties(savedProperties);
   }
 }
Beispiel #25
0
 public void requestDidComplete(WebRequest request) {
   Log.d(TAG, "requestDidComplete ......................................");
   currentRequests.remove(request);
   request.clear();
   checkNextRequest();
 }
 private String getMethod() {
   return null == _request ? null : _request.getMethod();
 }
Beispiel #27
0
 public void addRequest(WebRequest request) {
   request.setThrottle(this);
   requestQueue.add(request);
   checkNextRequest();
 }
 /**
  * Determine the message to be pushed onto the Log4J nested diagnostic context.
  *
  * <p>Default is the request object's {@code getDescription} result.
  *
  * @param request current HTTP request
  * @return the message to be pushed onto the Log4J NDC
  * @see WebRequest#getDescription
  * @see #isIncludeClientInfo()
  */
 protected String getNestedDiagnosticContextMessage(WebRequest request) {
   return request.getDescription(isIncludeClientInfo());
 }
Beispiel #29
0
 @Override
 public int compare(WebRequest a, WebRequest b) {
   return a.getPriority() - b.getPriority();
 }
Beispiel #30
0
 public void addRequest(String url, int type, Callback callback) {
   WebRequest request = new WebRequest(url, type);
   request.addCallback(callback);
   throttle.addRequest(request);
 }