List of usage examples for org.springframework.mock.web MockHttpServletRequest setRequestURI
public void setRequestURI(@Nullable String requestURI)
From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java
@Test public void testToAbsoluteInResponse() { // PREPARE//from w w w .j a v a 2 s. c om XForwardedFilter xFilter = new XForwardedFilter(); MockHttpServletRequest request = new MockHttpServletRequest(); HttpServletResponse mockResponse = new MockHttpServletResponse(); XForwardedResponse response = xFilter.new XForwardedResponse(mockResponse, request); request.setScheme("http"); request.setServerName("localhost"); request.setServerPort(80); request.setContextPath("/context"); request.setRequestURI("/context/dir/test"); // TEST and VERIFY assertEquals("relative uri", "http://localhost/context/dir/relativeURI", response.toAbsolute("relativeURI")); assertEquals("relative to host uri", "http://localhost/relativeURI", response.toAbsolute("/relativeURI")); assertEquals("relative to context root uri", "http://localhost/context/relativeURI", response.toAbsolute(request.getContextPath() + "/relativeURI")); assertEquals("absolute uri", "https://server/othercontext/uri", response.toAbsolute("https://server/othercontext/uri")); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testImportInfo() throws IOException { Catalog catalog = getCatalog();//from w w w .jav a 2 s . co m StoreInfo targetStore = catalog.getStoreByName("sf", "sf", StoreInfo.class); assertNotNull(targetStore); ImportController ctrl = new ImportController(getGeoServer(), applicationContext); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("post"); JSONObj obj = ctrl.info("sf"); assertEquals("sf", obj.str("workspace")); assertNotNull(obj.get("spaceAvailable")); assertEquals(obj.get("spaceAvailable"), obj.get("tmpSpace")); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testImportGeoJSONintoDb() throws IOException, Exception { Catalog catalog = getCatalog();/*from w ww . j a v a 2 s .c om*/ StoreInfo targetStore = catalog.getStoreByName("sf", "sf", StoreInfo.class); assertNotNull(targetStore); ImportController ctrl = new ImportController(getGeoServer(), applicationContext); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("post"); createMultiPartFormContent(request, "form-data; name=\"upload\"; filename=\"point.json\"", "application/json", IOUtils.toByteArray(getClass().getResourceAsStream("point.json"))); JSONObj result = ctrl.importFile("sf", "sf", request); Long id = Long.parseLong(result.str("id")); //Wait for the import to complete result = pollImport(ctrl, "gs", id, "pending", request); assertNotNull(result); result = ctrl.update("gs", id, getUpdateTasks(result), request); result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); assertEquals(1, result.array("tasks").size()); JSONObj obj = result.array("tasks").object(0); assertEquals("COMPLETE", obj.get("status")); assertEquals("sf", obj.object("layer").str("workspace")); assertEquals("point", obj.object("layer").str("name")); LayerInfo l = catalog.getLayerByName("sf:point"); assertNotNull(l); FeatureTypeInfo f = (FeatureTypeInfo) l.getResource(); assertEquals(targetStore, f.getStore()); // ensure style in workspace StyleInfo s = l.getDefaultStyle(); assertNotNull(s.getWorkspace()); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testListAttributes() throws Exception { Catalog cat = getCatalog();// www . ja v a2 s . com MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("get"); StoreController ctrl = new StoreController(getGeoServer()); JSONObj obj = ctrl.attributes("sf", "sf", "PrimitiveGeoFeature", 10, request); JSONArr attributes = obj.object("schema").array("attributes"); JSONArr values = obj.array("values"); //Page through actual features and ensure values match what is returned StoreInfo store = cat.getStoreByName("sf", "sf", StoreInfo.class); DataAccess data = ((DataStoreInfo) store).getDataStore(new NullProgressListener()); FeatureSource source = data.getFeatureSource(new NameImpl("PrimitiveGeoFeature")); Query query = new Query(Query.ALL); query.setMaxFeatures(10); FeatureIterator features = source.getFeatures(query).features(); int featureIndex = 0; while (features.hasNext()) { Feature feature = features.next(); JSONArr featureJSON = (JSONArr) values.at(featureIndex); Property[] properties = feature.getProperties().toArray(new Property[feature.getProperties().size()]); for (int i = 0; i < attributes.size(); i++) { //Verify the schema matches the feature JSONObj attribute = attributes.object(i); assertEquals(attribute.get("type"), properties[i].getDescriptor().getType().getBinding().getSimpleName()); assertEquals(attribute.get("name"), properties[i].getDescriptor().getName().getLocalPart()); //Verify the value matches the feature assertEquals(featureJSON.str(i), properties[i].getValue() == null ? null : properties[i].getValue().toString()); } featureIndex++; } }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testIconsUploadDelete() throws Exception { Catalog catalog = getCatalog();/*ww w . j ava2 s. com*/ IconController ctrl = new IconController(getGeoServer()); // test upload MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/api/icons/cite"); request.setMethod("post"); createMultiPartFormContent(request, "form-data; name=\"icon\"; filename=\"STYLE.PROPERTIES\"", "text/x-java-properties", "square=LINESTRING((0 0,0 1,1 1,1 0,0 0))".getBytes()); JSONArr arr = ctrl.create("cite", request); assertEquals(1, arr.size()); Resource r = catalog.getResourceLoader().get("workspaces/cite/styles/STYLE.PROPERTIES"); assertEquals("created", Resource.Type.RESOURCE, r.getType()); // test delete MockHttpServletRequestBuilder delete = delete("/api/icons/cite/icon.png"); ctrl.delete("cite", "STYLE.PROPERTIES"); r = catalog.getResourceLoader().get("workspaces/cite/styles/STYLE.PROPERTIES"); assertEquals("deleted", Resource.Type.UNDEFINED, r.getType()); //Global style directory // test upload request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/api/icons"); request.setMethod("post"); createMultiPartFormContent(request, "form-data; name=\"icon\"; filename=\"STYLE.PROPERTIES\"", "text/x-java-properties", "square=LINESTRING((0 0,0 1,1 1,1 0,0 0))".getBytes()); arr = ctrl.create(request); assertEquals(1, arr.size()); r = catalog.getResourceLoader().get("styles/STYLE.PROPERTIES"); assertEquals("created", Resource.Type.RESOURCE, r.getType()); // test delete delete = delete("/api/icons/icon.png"); ctrl.delete("STYLE.PROPERTIES"); r = catalog.getResourceLoader().get("styles/STYLE.PROPERTIES"); assertEquals("deleted", Resource.Type.UNDEFINED, r.getType()); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testImportShapefileAsZip() throws Exception { Catalog catalog = getCatalog();/* w w w. j a v a 2 s . c o m*/ //Test default root of "data" RESTUtils.loadMapFromGlobal().remove("root"); assertNull(catalog.getLayerByName("gs:point")); ImportController ctrl = new ImportController(getGeoServer(), applicationContext); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("post"); createMultiPartFormContent(request, "form-data; name=\"upload\"; filename=\"point.zip\"", "application/zip", IOUtils.toByteArray(getClass().getResourceAsStream("point.shp.zip"))); JSONObj result = ctrl.importFile("gs", request); Long id = Long.parseLong(result.str("id")); //Wait for the import to complete result = pollImport(ctrl, "gs", id, "pending", request); assertNotNull(result); result = ctrl.update("gs", id, getUpdateTasks(result), request); result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); assertEquals(1, result.array("tasks").size()); JSONObj obj = result.array("tasks").object(0); assertEquals("gs", obj.object("layer").str("workspace")); assertEquals("point", obj.object("layer").str("name")); LayerInfo l = catalog.getLayerByName("gs:point"); StoreInfo s = catalog.getStoreByName("gs", "point", StoreInfo.class); assertNotNull(l); assertNotNull(s); //Wait for the taskListener to move the imported file Thread.sleep(500); assertTrue(new File(catalog.getResourceLoader().getBaseDirectory(), "data/gs/point/point.shp").exists()); assertTrue(new File(new URL(ResourcePool.getParams(s.getConnectionParameters(), catalog.getResourceLoader()) .get("url").toString()).getFile()).exists()); assertEquals(new File(catalog.getResourceLoader().getBaseDirectory(), "data/gs/point").getAbsoluteFile(), new File(new URL(ResourcePool.getParams(s.getConnectionParameters(), catalog.getResourceLoader()) .get("url").toString()).getFile()).getAbsoluteFile()); // ensure style in workspace StyleInfo style = l.getDefaultStyle(); assertNotNull(style.getWorkspace()); //Try to reimport the same store - should succeed createMultiPartFormContent(request, "form-data; name=\"upload\"; filename=\"point.zip\"", "application/zip", IOUtils.toByteArray(getClass().getResourceAsStream("point.shp.zip"))); obj = ctrl.importFile("gs", request); assertNotNull(obj.get("id")); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testImportShapefilesWithSpaceInName() throws Exception { Catalog catalog = getCatalog();//from w ww. j a v a 2s . c om //Test REST global root GeoServerInfo gsInfo = GeoServerExtensions.bean(GeoServer.class).getGlobal(); SettingsInfo info = gsInfo.getSettings(); info.getMetadata().put("root", catalog.getResourceLoader().findOrCreateDirectory("uploads").getAbsolutePath()); getGeoServer().save(gsInfo); assertNull(catalog.getLayerByName("gs:point_space")); ImportController ctrl = new ImportController(getGeoServer(), applicationContext); StoreController storeCtrl = new StoreController(getGeoServer()); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("post"); //Import as separate files MimeMultipart body = initMultiPartFormContent(request); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point space.dbf\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point space.dbf"))); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point space.prj\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point space.prj"))); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point space.shp\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point space.shp"))); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point space.shx\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point space.shx"))); createMultiPartFormContent(body, request); JSONObj result = ctrl.importFile("gs", request); Long id = Long.parseLong(result.str("id")); //Wait for the import to complete result = pollImport(ctrl, "gs", id, "pending", request); assertNotNull(result); result = ctrl.update("gs", id, getUpdateTasks(result), request); result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); //Apparently the catalog is time-sensitive now... Thread.sleep(100); LayerInfo l = catalog.getLayerByName("gs:point_20space"); StoreInfo s = catalog.getStoreByName("gs", "point_space", StoreInfo.class); assertNotNull(l); assertNotNull(s); //Wait for the taskListener to move the imported file Thread.sleep(500); assertTrue( new File(catalog.getResourceLoader().getBaseDirectory(), "uploads/gs/point_space/point space.shp") .exists()); assertTrue(new File(new URL(ResourcePool.getParams(s.getConnectionParameters(), catalog.getResourceLoader()) .get("url").toString()).getFile()).exists()); assertEquals( new File(catalog.getResourceLoader().getBaseDirectory(), "uploads/gs/point_space") .getAbsoluteFile(), new File(new URL(ResourcePool.getParams(s.getConnectionParameters(), catalog.getResourceLoader()) .get("url").toString()).getFile()).getAbsoluteFile()); StyleInfo style = l.getDefaultStyle(); assertEquals("point_space", l.getDefaultStyle().getName()); assertEquals("point_20space", l.getResource().getName()); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testImportShapefiles() throws Exception { Catalog catalog = getCatalog();// w ww.ja va 2 s . c o m catalog.addListener(new UploadDeleteCatalogListener(catalog)); //Test REST global root GeoServerInfo gsInfo = GeoServerExtensions.bean(GeoServer.class).getGlobal(); SettingsInfo info = gsInfo.getSettings(); info.getMetadata().put("root", catalog.getResourceLoader().findOrCreateDirectory("uploads").getAbsolutePath()); getGeoServer().save(gsInfo); assertNull(catalog.getLayerByName("gs:point")); ImportController ctrl = new ImportController(getGeoServer(), applicationContext); StoreController storeCtrl = new StoreController(getGeoServer()); MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("post"); //Import as separate files MimeMultipart body = initMultiPartFormContent(request); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point.dbf\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point.dbf"))); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point.prj\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point.prj"))); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point.shp\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point.shp"))); appendMultiPartFormContent(body, "form-data; name=\"upload\"; filename=\"point.shx\"", "application/octet-stream", IOUtils.toByteArray(getClass().getResourceAsStream("point.shx"))); createMultiPartFormContent(body, request); JSONObj result = ctrl.importFile("gs", request); Long id = Long.parseLong(result.str("id")); //Wait for the import to complete result = pollImport(ctrl, "gs", id, "pending", request); assertNotNull(result); result = ctrl.update("gs", id, getUpdateTasks(result), request); result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); assertEquals(1, result.array("tasks").size()); JSONObj obj = result.array("tasks").object(0); assertEquals("gs", obj.object("layer").str("workspace")); assertEquals("point", obj.object("layer").str("name")); LayerInfo l = catalog.getLayerByName("gs:point"); StoreInfo s = catalog.getStoreByName("gs", "point", StoreInfo.class); assertNotNull(l); assertNotNull(s); //Wait for the taskListener to move the imported file Thread.sleep(500); assertTrue(new File(catalog.getResourceLoader().getBaseDirectory(), "uploads/gs/point/point.shp").exists()); assertTrue(new File(new URL(ResourcePool.getParams(s.getConnectionParameters(), catalog.getResourceLoader()) .get("url").toString()).getFile()).exists()); assertEquals(new File(catalog.getResourceLoader().getBaseDirectory(), "uploads/gs/point").getAbsoluteFile(), new File(new URL(ResourcePool.getParams(s.getConnectionParameters(), catalog.getResourceLoader()) .get("url").toString()).getFile()).getAbsoluteFile()); // ensure style in workspace StyleInfo style = l.getDefaultStyle(); assertNotNull(style.getWorkspace()); //Delete the store and re-upload: MockHttpServletRequest deleteRequest = new MockHttpServletRequest(); deleteRequest.setContextPath("/geoserver"); deleteRequest.setRequestURI("/geoserver/hello"); deleteRequest.setMethod("delete"); storeCtrl.delete("gs", "point", true, deleteRequest); assertFalse( new File(catalog.getResourceLoader().getBaseDirectory(), "uploads/gs/point/point.shp").exists()); result = ctrl.importFile("gs", request); id = Long.parseLong(result.str("id")); //Wait for the import to complete result = pollImport(ctrl, "gs", id, "pending", request); assertNotNull(result); result = ctrl.update("gs", id, getUpdateTasks(result), request); result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); assertEquals(1, result.array("tasks").size()); assertEquals("COMPLETE", result.array("tasks").object(0).get("status")); }
From source file:com.boundlessgeo.geoserver.AppIntegrationTest.java
@Test public void testImportDb() throws Exception { Catalog catalog = getCatalog();//from w w w . j ava2s . com assertNull(catalog.getLayerByName("gs:point")); ImportController ctrl = new ImportController(getGeoServer(), applicationContext); try (H2TestData data = new H2TestData()) { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/geoserver"); request.setRequestURI("/geoserver/hello"); request.setMethod("post"); JSONObj result = data.createConnectionParameters(); result = ctrl.importDb("gs", result, request); Long id = Long.parseLong(result.str("id")); result = pollImport(ctrl, "gs", id, "pending", request); assertNotNull(result); assertTrue(result.integer("tasksTotal") > 0); List<String> names = Arrays.asList(new String[] { "ft1", "ft2", "ft3" }); JSONArr tasks = new JSONArr(); for (JSONObj o : result.array("tasks").objects()) { if (names.contains(o.get("name")) && o.get("status").equals("READY")) { tasks.add(new JSONObj().put("task", o.get("task").toString())); assertEquals("table", o.get("type")); } } JSONObj response = new JSONObj(); response.put("tasks", tasks); result = ctrl.update("gs", id, response, request); result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); int complete = 0; int ready = 0; int no_crs = 0; int failed = 0; tasks = new JSONArr(); for (JSONObj o : result.array("tasks").objects()) { if (o.get("status").equals("READY")) { ready++; } if (o.get("status").equals("NO_CRS")) { no_crs++; String srs = "EPSG:4326"; tasks.add(new JSONObj().put("task", o.get("task").toString()).put("proj", IO.proj(new JSONObj(), CRS.decode(srs), srs))); } if (o.get("status").equals("COMPLETE")) { complete++; } if (o.get("status").equals("ERROR") || o.get("status").equals("NO_BOUNDS")) { failed++; } } assertEquals(0, ready); assertEquals(1, complete); assertEquals(2, no_crs); assertEquals(0, failed); response = new JSONObj(); response.put("tasks", tasks); result = ctrl.update("gs", id, response, request); //Wait for the import to complete result = pollImport(ctrl, "gs", id, "complete", request); assertNotNull(result); for (JSONObj o : result.array("tasks").objects()) { assertEquals("COMPLETE", o.get("status")); } //Try to reimport the same store - should fail and return existing store result = data.createConnectionParameters(); result = ctrl.importDb("gs", result, request); assertNotNull(result.get("store")); assertNull(result.get("id")); } }
From source file:org.n52.sos.service.it.MockHttpClient.java
private MockHttpServletRequest build() { try {/*from w w w . j av a2 s . c om*/ final MockHttpServletRequest req = new MockHttpServletRequest(context); req.setMethod(method); for (String header : headers.keySet()) { for (String value : headers.get(header)) { req.addHeader(header, value); } } final StringBuilder queryString = new StringBuilder(); if (query != null && !query.isEmpty()) { boolean first = true; for (String key : query.keySet()) { final Set<String> values = query.get(key); req.addParameter(key, values.toArray(new String[values.size()])); if (first) { queryString.append("?"); first = false; } else { queryString.append("&"); } queryString.append(key).append("="); Iterator<String> i = values.iterator(); queryString.append(i.next()); while (i.hasNext()) { queryString.append(",").append(i.next()); } } req.setQueryString(queryString.toString()); } req.setRequestURI(path + queryString.toString()); if (path == null) { path = "/"; } req.setPathInfo(path); if (content != null) { req.setContent(content.getBytes(MockHttpExecutor.ENCODING)); } return req; } catch (UnsupportedEncodingException ex) { throw new RuntimeException(ex); } }