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

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

Introduction

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

Prototype

public void setContent(@Nullable byte[] content) 

Source Link

Document

Set the content of the request body as a byte array.

Usage

From source file:org.geogig.geoserver.functional.GeoServerTestSupport.java

/**
 * Issue a POST request to the provided URL with the given content.
 *
 * @param contentType the content type of the data
 * @param resourceUri the url to issue the request to
 * @param postContent the content to be posted
 *
 * @return the response to the request//from w  w  w  .  j  av  a  2  s  .co m
 */
public MockHttpServletResponse postContent(String contentType, String resourceUri, String postContent)
        throws Exception {

    MockHttpServletRequest req = createRequest(resourceUri);

    req.setContentType(contentType);
    req.addHeader("Content-Type", contentType);
    req.setMethod("POST");
    req.setContent(postContent == null ? null : postContent.getBytes());

    return dispatch(req);
}

From source file:org.geogig.geoserver.functional.GeoServerTestSupport.java

public MockHttpServletResponse callWithContentTypeInternal(HttpMethod method, String resourceUri,
        String payload, String contentType) throws Exception {
    MockHttpServletRequest request = super.createRequest(resourceUri);
    request.setMethod(method.name());//ww  w  .ja  v a 2s  . c  o  m
    // set the JSON payload
    request.setContent(payload.getBytes());
    request.setContentType(contentType);

    return dispatch(request, null);
}

From source file:org.geoserver.importer.rest.ImportTaskControllerTest.java

private Integer putZip(String path) throws Exception {
    File file = new File(path);
    InputStream stream;/*  www .  ja va2s. c o  m*/
    if (file.exists()) {
        stream = new FileInputStream(file);
    } else {
        stream = ImporterTestSupport.class.getResourceAsStream("../test-data/" + path);
    }
    MockHttpServletResponse resp = postAsServletResponse(RestBaseController.ROOT_PATH + "/imports", "");
    assertEquals(201, resp.getStatus());
    assertNotNull(resp.getHeader("Location"));

    String[] split = resp.getHeader("Location").split("/");
    Integer id = Integer.parseInt(split[split.length - 1]);
    ImportContext context = importer.getContext(id);

    MockHttpServletRequest req = createRequest(
            RestBaseController.ROOT_PATH + "/imports/" + id + "/tasks/" + file.getName());
    req.setContentType("application/zip");
    req.addHeader("Content-Type", "application/zip");
    req.setMethod("PUT");
    req.setContent(org.apache.commons.io.IOUtils.toByteArray(stream));
    resp = dispatch(req);

    assertEquals(201, resp.getStatus());

    context = importer.getContext(context.getId());
    assertNull(context.getData());
    assertEquals(1, context.getTasks().size());

    ImportTask task = context.getTasks().get(0);
    assertTrue(task.getData() instanceof SpatialFile);

    return id;
}

From source file:org.geoserver.importer.rest.ImportTaskControllerTest.java

private Integer putZipAsURL(String zip) throws Exception {
    MockHttpServletResponse resp = postAsServletResponse(RestBaseController.ROOT_PATH + "/imports", "");
    assertEquals(201, resp.getStatus());
    assertNotNull(resp.getHeader("Location"));

    String[] split = resp.getHeader("Location").split("/");
    Integer id = Integer.parseInt(split[split.length - 1]);
    ImportContext context = importer.getContext(id);

    MockHttpServletRequest req = createRequest(RestBaseController.ROOT_PATH + "/imports/" + id + "/tasks/");
    MultiValueMap<String, Object> form = new LinkedMultiValueMap<String, Object>(1);
    form.add("url", new File(zip).getAbsoluteFile().toURI().toString());
    final ByteArrayOutputStream stream = new ByteArrayOutputStream();
    final HttpHeaders headers = new HttpHeaders();
    new FormHttpMessageConverter().write(form, MediaType.APPLICATION_FORM_URLENCODED, new HttpOutputMessage() {
        @Override//from  w w  w .  j  a v  a 2  s .  c o  m
        public OutputStream getBody() throws IOException {
            return stream;
        }

        @Override
        public HttpHeaders getHeaders() {
            return headers;
        }
    });
    req.setContent(stream.toByteArray());
    req.setMethod("POST");
    req.setContentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE);
    req.addHeader("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE);
    resp = dispatch(req);

    assertEquals(201, resp.getStatus());

    context = importer.getContext(context.getId());
    assertNull(context.getData());
    assertEquals(1, context.getTasks().size());

    ImportTask task = context.getTasks().get(0);
    assertTrue(task.getData() instanceof SpatialFile);

    return id;
}

From source file:org.geoserver.importer.rest.ImportTaskControllerTest.java

@Test
public void testDeleteTask() throws Exception {
    MockHttpServletResponse resp = postAsServletResponse(RestBaseController.ROOT_PATH + "/imports", "");
    assertEquals(201, resp.getStatus());
    assertNotNull(resp.getHeader("Location"));

    String[] split = resp.getHeader("Location").split("/");
    Integer id = Integer.parseInt(split[split.length - 1]);

    ImportContext context = importer.getContext(id);

    File dir = unpack("shape/archsites_epsg_prj.zip");
    unpack("shape/bugsites_esri_prj.tar.gz", dir);

    new File(dir, "extra.file").createNewFile();
    File[] files = dir.listFiles();
    Part[] parts = new Part[files.length];
    for (int i = 0; i < files.length; i++) {
        parts[i] = new FilePart(files[i].getName(), files[i]);
    }/*from  www  .java2 s.com*/

    MultipartRequestEntity multipart = new MultipartRequestEntity(parts, new PostMethod().getParams());

    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    multipart.writeRequest(bout);

    MockHttpServletRequest req = createRequest(RestBaseController.ROOT_PATH + "/imports/" + id + "/tasks");
    req.setContentType(multipart.getContentType());
    req.addHeader("Content-Type", multipart.getContentType());
    req.setMethod("POST");
    req.setContent(bout.toByteArray());
    resp = dispatch(req);

    context = importer.getContext(context.getId());
    assertEquals(2, context.getTasks().size());

    req = createRequest(RestBaseController.ROOT_PATH + "/imports/" + id + "/tasks/1");
    req.setMethod("DELETE");
    resp = dispatch(req);
    assertEquals(204, resp.getStatus());

    context = importer.getContext(context.getId());
    assertEquals(1, context.getTasks().size());
}

From source file:org.geoserver.importer.rest.ImportTaskControllerTest.java

@Test
public void testPostMultiPartFormData() throws Exception {
    MockHttpServletResponse resp = postAsServletResponse(RestBaseController.ROOT_PATH + "/imports", "");
    assertEquals(201, resp.getStatus());
    assertNotNull(resp.getHeader("Location"));

    String[] split = resp.getHeader("Location").split("/");
    Integer id = Integer.parseInt(split[split.length - 1]);
    ImportContext context = importer.getContext(id);
    assertNull(context.getData());//  ww  w  .j  a va 2s. c  o  m
    assertTrue(context.getTasks().isEmpty());

    File dir = unpack("shape/archsites_epsg_prj.zip");

    Part[] parts = new Part[] { new FilePart("archsites.shp", new File(dir, "archsites.shp")),
            new FilePart("archsites.dbf", new File(dir, "archsites.dbf")),
            new FilePart("archsites.shx", new File(dir, "archsites.shx")),
            new FilePart("archsites.prj", new File(dir, "archsites.prj")) };

    MultipartRequestEntity multipart = new MultipartRequestEntity(parts, new PostMethod().getParams());

    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    multipart.writeRequest(bout);

    MockHttpServletRequest req = createRequest(RestBaseController.ROOT_PATH + "/imports/" + id + "/tasks");
    req.setContentType(multipart.getContentType());
    req.addHeader("Content-Type", multipart.getContentType());
    req.setMethod("POST");
    req.setContent(bout.toByteArray());
    resp = dispatch(req);

    context = importer.getContext(context.getId());
    assertNull(context.getData());
    assertEquals(1, context.getTasks().size());

    ImportTask task = context.getTasks().get(0);
    assertTrue(task.getData() instanceof SpatialFile);
    assertEquals(ImportTask.State.READY, task.getState());
}

From source file:org.geoserver.importer.rest.ImportTaskControllerTest.java

private ImportContext uploadGeotiffAndVerify(String taskName, InputStream geotiffResourceStream,
        String contentType, String createImportBody, String creationContentType) throws Exception {
    // upload  tif or zip file containing a tif and verify the results
    MockHttpServletResponse resp = postAsServletResponse(RestBaseController.ROOT_PATH + "/imports",
            createImportBody, creationContentType);
    assertEquals(201, resp.getStatus());
    assertNotNull(resp.getHeader("Location"));

    String[] split = resp.getHeader("Location").split("/");
    Integer id = Integer.parseInt(split[split.length - 1]);
    ImportContext context = importer.getContext(id);

    MockHttpServletRequest req = createRequest(
            RestBaseController.ROOT_PATH + "/imports/" + id + "/tasks/" + taskName);
    req.setContentType(contentType);/*from   w w w.  j ava2  s  .c  o m*/
    req.addHeader("Content-Type", contentType);
    req.setMethod("PUT");
    req.setContent(org.apache.commons.io.IOUtils.toByteArray(geotiffResourceStream));
    resp = dispatch(req);

    assertEquals(201, resp.getStatus());

    context = importer.getContext(context.getId());
    assertNull(context.getData());
    assertEquals(1, context.getTasks().size());

    ImportTask task = context.getTasks().get(0);
    assertEquals(ImportTask.State.READY, task.getState());

    ImportData importData = task.getData();
    assertTrue(importData instanceof SpatialFile);

    DataFormat format = importData.getFormat();
    assertTrue(format instanceof GridFormat);

    return context;
}

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

@Test
public void testHarvestImageMosaic() throws Exception {
    // Upload of the Mosaic via REST
    URL zip = MockData.class.getResource("watertemp.zip");
    InputStream is = null;//  w  ww .j  ava  2s . c  om
    byte[] bytes;
    try {
        is = zip.openStream();
        bytes = IOUtils.toByteArray(is);
    } finally {
        IOUtils.closeQuietly(is);
    }

    MockHttpServletResponse response = putAsServletResponse(
            RestBaseController.ROOT_PATH + "/workspaces/gs/coveragestores/watertemp2/file.imagemosaic", bytes,
            "application/zip");
    assertEquals(201, response.getStatus());

    // check the response contents
    String content = response.getContentAsString();
    Document d = dom(new ByteArrayInputStream(content.getBytes()));

    XMLAssert.assertXpathEvaluatesTo("watertemp2", "//coverageStore/name", d);
    XMLAssert.assertXpathEvaluatesTo("ImageMosaic", "//coverageStore/type", d);

    // check the coverage is actually there
    CoverageStoreInfo storeInfo = getCatalog().getCoverageStoreByName("watertemp2");
    assertNotNull(storeInfo);
    CoverageInfo ci = getCatalog().getCoverageByName("watertemp2");
    assertNotNull(ci);
    assertEquals(storeInfo, ci.getStore());

    // Harvesting of the Mosaic
    URL zipHarvest = MockData.class.getResource("harvesting.zip");
    // Extract a Byte array from the zip file
    is = null;
    try {
        is = zipHarvest.openStream();
        bytes = IOUtils.toByteArray(is);
    } finally {
        IOUtils.closeQuietly(is);
    }
    // Create the POST request
    MockHttpServletRequest request = createRequest(
            RestBaseController.ROOT_PATH + "/workspaces/gs/coveragestores/watertemp2/file.imagemosaic");
    request.setMethod("POST");
    request.setContentType("application/zip");
    request.setContent(bytes);
    request.addHeader("Content-type", "application/zip");
    // Get The response
    dispatch(request);
    // Get the Mosaic Reader
    GridCoverageReader reader = storeInfo.getGridCoverageReader(null, GeoTools.getDefaultHints());
    // Test if all the TIME DOMAINS are present
    String[] metadataNames = reader.getMetadataNames();
    assertNotNull(metadataNames);
    assertEquals("true", reader.getMetadataValue("HAS_TIME_DOMAIN"));
    assertEquals("2008-10-31T00:00:00.000Z,2008-11-01T00:00:00.000Z,2008-11-02T00:00:00.000Z",
            reader.getMetadataValue(metadataNames[0]));
}

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

@Test
public void testHarvestNotAllowedOnSimpleCoverageStore() throws Exception {
    // add bluemarble
    getTestData().addDefaultRasterLayer(SystemTestData.TASMANIA_BM, getCatalog());

    // Harvesting of the Mosaic
    URL zipHarvest = MockData.class.getResource("harvesting.zip");
    // Extract a Byte array from the zip file
    InputStream is = null;/*  w w  w .j av  a 2 s  . co m*/
    byte[] bytes;
    try {
        is = zipHarvest.openStream();
        bytes = IOUtils.toByteArray(is);
    } finally {
        IOUtils.closeQuietly(is);
    }
    // Create the POST request
    MockHttpServletRequest request = createRequest(
            RestBaseController.ROOT_PATH + "/workspaces/wcs/coveragestores/BlueMarble");
    request.setMethod("POST");
    request.setContentType("application/zip");
    request.setContent(bytes);
    request.addHeader("Content-type", "application/zip");
    // Get The response
    MockHttpServletResponse response = dispatch(request);
    // not allowed
    assertEquals(405, response.getStatus());
}

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

@Test
public void testHarvestImageMosaicWithDirectory() throws Exception {
    // Upload of the Mosaic via REST
    URL zip = MockData.class.getResource("watertemp.zip");
    InputStream is = null;//from   w  w w .j av a 2  s . c om
    byte[] bytes;
    try {
        is = zip.openStream();
        bytes = IOUtils.toByteArray(is);
    } finally {
        IOUtils.closeQuietly(is);
    }

    MockHttpServletResponse response = putAsServletResponse(
            RestBaseController.ROOT_PATH + "/workspaces/gs/coveragestores/watertemp3/file.imagemosaic", bytes,
            "application/zip");
    assertEquals(201, response.getStatus());

    // check the response contents
    String content = response.getContentAsString();
    Document d = dom(new ByteArrayInputStream(content.getBytes()));

    XMLAssert.assertXpathEvaluatesTo("watertemp3", "//coverageStore/name", d);
    XMLAssert.assertXpathEvaluatesTo("ImageMosaic", "//coverageStore/type", d);

    // check the coverage is actually there
    CoverageStoreInfo storeInfo = getCatalog().getCoverageStoreByName("watertemp3");
    assertNotNull(storeInfo);
    CoverageInfo ci = getCatalog().getCoverageByName("watertemp3");
    assertNotNull(ci);
    assertEquals(storeInfo, ci.getStore());

    // Harvesting of the Mosaic
    URL zipHarvest = MockData.class.getResource("harvesting.zip");
    Resource newZip = Files.asResource(new File("./target/harvesting2.zip"));
    // Copy the content of the first zip to the second
    IOUtils.copyStream(zipHarvest.openStream(), newZip.out(), true, true);
    Resource outputDirectory = Files.asResource(new File("./target/harvesting"));
    RESTUtils.unzipFile(newZip, outputDirectory);
    // Create the POST request
    MockHttpServletRequest request = createRequest(
            RestBaseController.ROOT_PATH + "/workspaces/gs/coveragestores/watertemp3/external.imagemosaic");
    request.setMethod("POST");
    request.setContentType("text/plain");
    request.setContent(("file:///" + outputDirectory.dir().getAbsolutePath()).getBytes("UTF-8"));
    request.addHeader("Content-type", "text/plain");
    // Get The response
    dispatch(request);
    // Get the Mosaic Reader
    GridCoverageReader reader = storeInfo.getGridCoverageReader(null, GeoTools.getDefaultHints());
    // Test if all the TIME DOMAINS are present
    String[] metadataNames = reader.getMetadataNames();
    assertNotNull(metadataNames);
    assertEquals("true", reader.getMetadataValue("HAS_TIME_DOMAIN"));
    assertEquals("2008-10-31T00:00:00.000Z,2008-11-01T00:00:00.000Z,2008-11-02T00:00:00.000Z",
            reader.getMetadataValue(metadataNames[0]));
    // Removal of the temporary directory
    outputDirectory.delete();
}