/* * (c) 2017 Open Source Geospatial Foundation - all rights reserved */ package org.geoserver.ows; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.geoserver.test.GeoServerSystemTestSupport; import org.junit.Test; import static org.geoserver.data.test.CiteTestData.BASIC_POLYGONS; import static org.geoserver.data.test.CiteTestData.POINTS; import static org.junit.Assert.assertEquals; public class SimulateIntegrationTest extends GeoServerSystemTestSupport { @Test public void testGetFeature() throws Exception { JSONObject rsp = (JSONObject) getAsJSON("wfs?" + String.join("&", "service=wfs", "request=GetFeature", "version=1.0.0", "srsName=EPSG:4326", "bbox=-170,-80,170,80", "typename=" + getLayerId(POINTS), "simulate=true")); print(rsp); assertService(rsp, "wfs", "1.0.0"); JSONObject req = rsp.getJSONObject("operation").getJSONObject("request"); JSONArray queries = req.getJSONArray("query"); assertEquals(1, queries.size()); JSONObject query = queries.getJSONObject(0); JSONObject typeName = query.getJSONArray("type_name").getJSONObject(0); assertEquals(POINTS.getLocalPart(), typeName.getString("local_part")); assertEquals(POINTS.getPrefix(), typeName.getString("prefix")); assertEquals(POINTS.getNamespaceURI(), typeName.getString("namespace_uri")); } @Test public void testGetMap() throws Exception { JSONObject rsp = (JSONObject) getAsJSON("wms?" + String.join("&", "service=wms", "request=GetMap", "version=1.1.1", "layers=" + getLayerId(BASIC_POLYGONS), "styles=", "bbox=-170,-80,170,80", "srs=EPSG:4326", "width=256", "height=256", "format=image/png", "simulate=true")); print(rsp); assertService(rsp, "wms", "1.1.1"); JSONObject req = rsp.getJSONObject("operation").getJSONObject("request"); JSONArray layers = req.getJSONArray("layers"); assertEquals(1, layers.size()); JSONObject layer = layers.getJSONObject(0); assertEquals("cite:BasicPolygons", layer.getString("name")); } @Test public void testGetMapWithViewParams() throws Exception { JSONObject rsp = (JSONObject) getAsJSON("wms?" + String.join("&", "service=wms", "request=GetMap", "version=1.1.1", "layers=" + getLayerId(BASIC_POLYGONS), "styles=", "bbox=-170,-80,170,80", "srs=EPSG:4326", "width=256", "height=256", "format=image/png", "viewparams=foo:bar;baz:bam", "simulate=true" )); print(rsp); JSONObject req = rsp.getJSONObject("operation").getJSONObject("request"); JSONArray vp = req.getJSONArray("view_params"); assertEquals(1, vp.size()); JSONObject kvp = vp.getJSONObject(0); assertEquals(2, kvp.size()); assertEquals("bam", kvp.get("BAZ")); assertEquals("bar", kvp.get("FOO")); } void assertService(JSONObject rsp, String id, String ver) { JSONObject srv = rsp.getJSONObject("service"); assertEquals(id, srv.getString("name")); assertEquals(ver, srv.getString("version")); } }