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]); }
@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); }
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(); } } }
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); }
@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; } }
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; }
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); } }
@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)); }
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); }
@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()); }
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()); }
/** {@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); } }
public void requestDidComplete(WebRequest request) { Log.d(TAG, "requestDidComplete ......................................"); currentRequests.remove(request); request.clear(); checkNextRequest(); }
private String getMethod() { return null == _request ? null : _request.getMethod(); }
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()); }
@Override public int compare(WebRequest a, WebRequest b) { return a.getPriority() - b.getPriority(); }
public void addRequest(String url, int type, Callback callback) { WebRequest request = new WebRequest(url, type); request.addCallback(callback); throttle.addRequest(request); }