Example usage for org.springframework.mock.web MockHttpServletRequest addHeader

List of usage examples for org.springframework.mock.web MockHttpServletRequest addHeader

Introduction

In this page you can find the example usage for org.springframework.mock.web MockHttpServletRequest addHeader.

Prototype

public void addHeader(String name, Object value) 

Source Link

Document

Add an HTTP header entry for the given name.

Usage

From source file:org.geoserver.rest.catalog.StyleControllerTest.java

/**
 * TODO I had to put this here BECAUSE:/*from  w w  w.  j a v a2s.com*/
 *
 * - The testPutSLDPackage test uses a *.zip URL
 * - BUT, put style does not support ZIP responses
 * - Spring interprets the .zip extension on the path as being a request for a zip response
 * - This fails, because there is no actual handler for a zip response on a style endpoint
 * - Unfortunately Spring only considers one of the Accept header or the path
 * - So the handler is never found
 *
 * this leaves us with a few options
 *
 * 1) Configure spring to prefer the accept header over the path. This would:
 *
 *   - Force future clients who depended on put/posting to zip endpoints to make sure their
 *     Accept header is correct.
 *   - Maybe more importantly it could potentially break other end points that depend on preferring
 *     the path extension.
 *
 * 2) Continue letting Spring prefer the path (which is really the right behavior for a REST api)
 *
 *   - Future clients would not be able to use an endpoint like .zip
 *   - But this is more REST-y
 *
 * 3) Write our own content negotiation strategy that allows for both.
 *
 *   - This is a pain in the ass.
 *   - Potentially difficult to recreate all default behavior + behavior needed to fix this test
 *     case
 *
 * @param path
 * @param body
 * @param contentType
 * @return
 * @throws Exception
 */
protected MockHttpServletResponse putAsServletResponse(String path, byte[] body, String contentType,
        String accepts) throws Exception {

    MockHttpServletRequest request = createRequest(path);
    request.setMethod("PUT");
    request.setContentType(contentType);
    request.setContent(body);
    request.addHeader("Accept", accepts);
    request.addHeader("Content-type", contentType);

    return dispatch(request);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testUploadFull() throws Exception {
    String uploadId = sendPostRequest();
    File uploadedFile = getTempPath(uploadId);
    assertTrue(uploadedFile.exists());/*from w ww  .  j  av a2  s.  c  om*/
    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    byte[] bigFile = generateFileAsBytes();
    request.setContent(bigFile);
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    MockHttpServletResponse response = dispatch(request);
    assertEquals(Status.SUCCESS_OK.getCode(), response.getStatus());
    assertFalse(uploadedFile.exists());
    File destinationFile = new File(FilenameUtils.concat(root, fileName.replaceAll("^/", "")));
    assertTrue(destinationFile.exists());
    assertEquals(bigFile.length, destinationFile.length());
    // Check uploaded file byte by byte
    boolean checkBytes = Arrays.equals(bigFile, toBytes(new FileInputStream(destinationFile)));
    assertTrue(checkBytes);
    // Check response content
    String restUrl = response.getContentAsString();
    assertEquals(fileName.replaceAll("^/", ""), restUrl);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testPartialUpload() throws Exception {
    String uploadId = sendPostRequest();
    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    byte[] bigFile = generateFileAsBytes();
    byte[] partialFile = ArrayUtils.subarray(bigFile, 0, (int) partialSize);
    request.setContent(partialFile);//from  w w  w  .  j  a v a 2 s.  c o  m
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    MockHttpServletResponse response = dispatch(request);
    assertEquals(ResumableUploadCatalogResource.RESUME_INCOMPLETE.getCode(), response.getStatus());
    assertEquals(null, response.getHeader("Content-Length"));
    assertEquals("0-" + (partialSize - 1), response.getHeader("Range"));
    File uploadedFile = getTempPath(uploadId);
    assertTrue(uploadedFile.exists());
    assertEquals(partialSize, uploadedFile.length());
    boolean checkBytes = Arrays.equals(partialFile, toBytes(new FileInputStream(uploadedFile)));
    assertTrue(checkBytes);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testUploadPartialResume() throws Exception {
    String uploadId = sendPostRequest();
    byte[] bigFile = generateFileAsBytes();
    byte[] partialFile1 = ArrayUtils.subarray(bigFile, 0, (int) partialSize);
    // First upload

    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    request.setContent(partialFile1);/*  w ww  .j  av a 2 s. c  om*/
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    dispatch(request);

    // Resume upload
    request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    byte[] partialFile2 = ArrayUtils.subarray(bigFile, (int) partialSize, (int) partialSize * 2);
    request.setContent(partialFile2);
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(partialFile2.length));
    request.addHeader("Content-Range", "bytes " + partialSize + "-" + partialSize * 2 + "/" + bigFile.length);
    MockHttpServletResponse response = dispatch(request);
    assertEquals(ResumableUploadCatalogResource.RESUME_INCOMPLETE.getCode(), response.getStatus());
    assertEquals(null, response.getHeader("Content-Length"));
    assertEquals("0-" + (partialSize * 2 - 1), response.getHeader("Range"));
    File uploadedFile = getTempPath(uploadId);
    assertTrue(uploadedFile.exists());
    assertEquals(partialSize * 2, uploadedFile.length());
    // Check uploaded file byte by byte
    boolean checkBytes = Arrays.equals(ArrayUtils.addAll(partialFile1, partialFile2),
            toBytes(new FileInputStream(uploadedFile)));
    assertTrue(checkBytes);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testUploadFullResume() throws Exception {
    String uploadId = sendPostRequest();
    byte[] bigFile = generateFileAsBytes();
    byte[] partialFile1 = ArrayUtils.subarray(bigFile, 0, (int) partialSize);
    // First upload

    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    request.setContent(partialFile1);/*from w w  w.  j  av a  2 s.  com*/
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    dispatch(request);

    // Resume upload
    request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    byte[] partialFile2 = ArrayUtils.subarray(bigFile, (int) partialSize, bigFile.length);
    request.setContent(partialFile2);
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(partialFile2.length));
    request.addHeader("Content-Range", "bytes " + partialSize + "-" + bigFile.length + "/" + bigFile.length);
    MockHttpServletResponse response = dispatch(request);
    assertEquals(Status.SUCCESS_OK.getCode(), response.getStatus());

    File uploadedFile = getTempPath(uploadId);

    assertFalse(uploadedFile.exists());
    File destinationFile = new File(FilenameUtils.concat(root, fileName.replaceAll("^/", "")));
    assertTrue(destinationFile.exists());
    assertEquals(bigFile.length, destinationFile.length());
    // Check uploaded file byte by byte
    boolean checkBytes = Arrays.equals(bigFile, toBytes(new FileInputStream(destinationFile)));
    assertTrue(checkBytes);
    // Check response content
    String restUrl = response.getContentAsString();
    assertEquals(fileName.replaceAll("^/", ""), restUrl);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testPartialCleanup() throws Exception {
    // Change cleanup expirationDelay
    ResumableUploadResourceCleaner cleaner = (ResumableUploadResourceCleaner) applicationContext
            .getBean("resumableUploadStorageCleaner");
    cleaner.setExpirationDelay(1000);//from  w  ww.ja va2 s. c  o m
    // Upload file
    String uploadId = sendPostRequest();
    byte[] bigFile = generateFileAsBytes();
    byte[] partialFile = ArrayUtils.subarray(bigFile, 0, (int) partialSize);
    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    request.setContent(partialFile);
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    dispatch(request);

    File uploadedFile = getTempPath(uploadId);
    assertTrue(uploadedFile.exists());
    // Wait to cleanup, max 2 minutes
    long startTime = new Date().getTime();
    while (uploadedFile.exists() && (new Date().getTime() - startTime) < 120000) {
        Thread.sleep(1000);
    }
    assertTrue(!uploadedFile.exists());
    cleaner.setExpirationDelay(300000);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testSidecarCleanup() throws Exception {
    // Change cleanup expirationDelay
    ResumableUploadResourceCleaner cleaner = (ResumableUploadResourceCleaner) applicationContext
            .getBean("resumableUploadStorageCleaner");
    cleaner.setExpirationDelay(1000);/*  w w  w . j  a v a 2  s  . c  o m*/
    // Upload file
    String uploadId = sendPostRequest();
    byte[] bigFile = generateFileAsBytes();
    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    request.setContent(bigFile);
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    dispatch(request);

    File uploadedFile = getTempPath(uploadId);
    assertFalse(uploadedFile.exists());
    File sidecarFile = new File(
            FilenameUtils.concat(tmpUploadFolder.dir().getCanonicalPath(), uploadId + ".sidecar"));
    assertTrue(sidecarFile.exists());
    // Wait to cleanup, max 2 minutes
    long startTime = new Date().getTime();
    while (sidecarFile.exists() && (new Date().getTime() - startTime) < 120000) {
        Thread.sleep(1000);
    }
    assertFalse(sidecarFile.exists());

    // Test GET after sidecar cleanup
    MockHttpServletResponse response = getAsServletResponse("/rest/resumableupload/" + uploadId, "text/plain");
    assertEquals(Status.CLIENT_ERROR_NOT_FOUND.getCode(), response.getStatus());

    cleaner.setExpirationDelay(300000);
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testGetAfterPartial() throws Exception {
    String uploadId = sendPostRequest();
    byte[] bigFile = generateFileAsBytes();
    byte[] partialFile = ArrayUtils.subarray(bigFile, 0, (int) partialSize);
    // First upload

    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    request.setContent(partialFile);//from  w  w w . ja  va 2 s .  c  o  m
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    dispatch(request);
    File uploadedFile = getTempPath(uploadId);
    assertTrue(uploadedFile.exists());

    MockHttpServletResponse response = getAsServletResponse("/rest/resumableupload/" + uploadId, "text/plain");
    assertEquals(ResumableUploadCatalogResource.RESUME_INCOMPLETE.getCode(), response.getStatus());
    assertEquals(null, response.getHeader("Content-Length"));
    assertEquals("0-" + (partialSize - 1), response.getHeader("Range"));
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

@Test
public void testGetAfterFull() throws Exception {
    String uploadId = sendPostRequest();
    File uploadedFile = getTempPath(uploadId);
    assertTrue(uploadedFile.exists());//from  w ww . j av a 2s. c  o  m
    MockHttpServletRequest request = createRequest("/rest/resumableupload/" + uploadId);
    request.setMethod("PUT");
    request.setContentType("application/octet-stream");
    byte[] bigFile = generateFileAsBytes();
    request.setContent(bigFile);
    request.addHeader("Content-type", "application/octet-stream");
    request.addHeader("Content-Length", String.valueOf(bigFile.length));
    MockHttpServletResponse response = dispatch(request);
    assertEquals(Status.SUCCESS_OK.getCode(), response.getStatus());
    File sidecarFile = new File(
            FilenameUtils.concat(tmpUploadFolder.dir().getCanonicalPath(), uploadId + ".sidecar"));
    assertTrue(sidecarFile.exists());
}

From source file:org.geoserver.restupload.ResumableUploadTest.java

private String sendPostRequest() throws Exception {
    MockHttpServletRequest request = createRequest("/rest/resumableupload/");
    request.setMethod("POST");
    request.setContentType("text/plain");
    request.setContent(fileName.getBytes("UTF-8"));
    request.addHeader("Content-type", "text/plain");
    MockHttpServletResponse response = dispatch(request);
    assertEquals(Status.SUCCESS_CREATED.getCode(), response.getStatus());
    String responseBody = response.getContentAsString();
    String url = responseBody.split("\\r?\\n")[1];
    String uploadId = FilenameUtils.getBaseName(url);
    return uploadId;
}