@Override protected void onSetUp(SystemTestData testData) throws Exception { super.onSetUp(testData); GeoServer geoserver = getGeoServer(); GeoServerInfo global = geoserver.getGlobal(); global.setGlobalServices(false); geoserver.save(global); Catalog catalog = getCatalog(); LayerInfo layer = catalog.getLayerByName(new NameImpl(CiteTestData.BASIC_POLYGONS)); StyleInfo style = catalog.getStyleByName(CiteTestData.DEFAULT_VECTOR_STYLE); CatalogFactory factory = catalog.getFactory(); LayerGroupInfo lg1 = factory.createLayerGroup(); lg1.setName("LayerGroup1"); lg1.getLayers().add(layer); lg1.getStyles().add(style); catalog.add(lg1); LayerGroupInfo lg2 = factory.createLayerGroup(); lg2.setName("LayerGroup2"); lg2.setWorkspace(catalog.getWorkspaceByName(CiteTestData.CITE_PREFIX)); lg2.getLayers().add(layer); lg2.getStyles().add(style); catalog.add(lg2); }
/** Keys for overriding default layer properties */ public static class StyleProperty<T> { T get(Map<StyleProperty, Object> map, T def) { return map != null && map.containsKey(this) ? (T) map.get(this) : def; } public static StyleProperty<String> FORMAT = new StyleProperty<String>(); public static StyleProperty<Version> FORMAT_VERSION = new StyleProperty<Version>(); public static StyleProperty<LegendInfo> LEGEND_INFO = new StyleProperty<LegendInfo>(); }
@Test public void testModifyCoverage() throws Exception { testAddCoverage(); CoverageInfo ft = catalog.getCoverageByName("bar", "foo"); ft.setTitle("fooTitle"); catalog.save(ft); File f = new File( testData.getDataDirectoryRoot(), "workspaces/acme/foostore/foo/coverage.xml"); Document dom = dom(f); assertXpathEvaluatesTo("fooTitle", "/coverage/title", dom); }
@Override public PublishedInfo visitNamedLayerInternal(StyledLayer namedLayer) { PublishedInfo p = catalog.getLayerGroupByName(namedLayer.getName()); if (p == null) { p = catalog.getLayerByName(namedLayer.getName()); if (p == null) { throw new ServiceException( "No layer or layer group with name \"" + namedLayer.getName() + "\""); } } return p; }
@Test public void testRemoveDefaultWorkspace() { catalog.add(ws); assertNotNull(catalog.getDefaultWorkspace()); catalog.remove(ws); assertNull(catalog.getDefaultWorkspace()); }
/** * Helper method that updates the isolation state of an workspace and the corresponding * namespace. */ protected void updateWorkspaceIsolationState(String prefix, boolean isolated) { Catalog catalog = getCatalog(); // set the workspace isolation state using the provided one WorkspaceInfo workspace = catalog.getWorkspaceByName(prefix); workspace.setIsolated(isolated); catalog.save(workspace); // set the namespace isolation state using the provided one NamespaceInfo namespace = catalog.getNamespaceByPrefix(prefix); namespace.setIsolated(isolated); catalog.save(namespace); }
/** Tests that symbols are not bigger than the requested icon size. */ @org.junit.Test public void testSymbolContainedInIcon() throws Exception { GetLegendGraphicRequest req = new GetLegendGraphicRequest(); FeatureTypeInfo ftInfo = getCatalog() .getFeatureTypeByName( MockData.MPOINTS.getNamespaceURI(), MockData.MPOINTS.getLocalPart()); req.setLayer(ftInfo.getFeatureType()); req.setStyle(readSLD("BigSymbol.sld")); BufferedImage image = this.legendProducer.buildLegendGraphic(req); assertNotBlank("testSymbolSize", image, LegendUtils.DEFAULT_BG_COLOR); // background at borders assertPixel(image, 1, 1, new Color(255, 255, 255)); // symbol in the center assertPixel(image, 10, 10, new Color(255, 0, 0)); }
@org.junit.Test public void testOpaque() throws Exception { LayerInfo lines = getCatalog().getLayerByName(MockData.LINES.getLocalPart()); lines.setOpaque(true); getCatalog().save(lines); LayerInfo points = getCatalog().getLayerByName(MockData.POINTS.getLocalPart()); points.setOpaque(false); getCatalog().save(points); String linesName = MockData.LINES.getPrefix() + ":" + MockData.LINES.getLocalPart(); String pointsName = MockData.POINTS.getPrefix() + ":" + MockData.POINTS.getLocalPart(); Document doc = getAsDOM("wms?service=WMS&request=getCapabilities&version=1.3.0", true); assertXpathEvaluatesTo("1", "//wms:Layer[wms:Name='" + linesName + "']/@opaque", doc); assertXpathEvaluatesTo("0", "//wms:Layer[wms:Name='" + pointsName + "']/@opaque", doc); }
@Test public void testBasic() throws Exception { final File xml = new File("./src/test/resources/rangesubset/requestGetCoverageRangeSubsetting.xml"); final String request = FileUtils.readFileToString(xml); MockHttpServletResponse response = postAsServletResponse("wcs", request); assertEquals("image/tiff", response.getContentType()); byte[] tiffContents = getBinary(response); File file = File.createTempFile("bm_gtiff", "bm_gtiff.tiff", new File("./target")); FileUtils.writeByteArrayToFile(file, tiffContents); final GeoTiffReader reader = new GeoTiffReader(file); assertTrue( CRS.equalsIgnoreMetadata( reader.getCoordinateReferenceSystem(), CRS.decode("EPSG:4326", true))); assertEquals(360, reader.getOriginalGridRange().getSpan(0)); assertEquals(360, reader.getOriginalGridRange().getSpan(1)); final GridCoverage2D coverage = reader.read(null); assertEquals(1, coverage.getSampleDimensions().length); GridCoverage2D sourceCoverage = (GridCoverage2D) this.getCatalog() .getCoverageByName("BlueMarble") .getGridCoverageReader(null, null) .read(null); assertEnvelopeEquals(sourceCoverage, coverage); reader.dispose(); scheduleForCleaning(coverage); scheduleForCleaning(sourceCoverage); }
@Test public void testContextStartup() { GeoServer config = (GeoServer) applicationContext.getBean("geoServer"); assertNotNull( config.getCatalog() .getFeatureTypeByName( MockData.BUILDINGS.getNamespaceURI(), MockData.BUILDINGS.getLocalPart())); assertNotNull( config.getCatalog() .getFeatureTypeByName( MockData.BASIC_POLYGONS.getNamespaceURI(), MockData.BASIC_POLYGONS.getLocalPart())); } }
/** * Get the FeatureTypeInfo for a featuretype to allow configuration tweaks for tests. * * @param typename the QName for the type */ protected FeatureTypeInfo getFeatureTypeInfo(QName typename) { return getCatalog() .getFeatureTypeByName(typename.getNamespaceURI(), typename.getLocalPart()); }
@Test public void testSldGenerateRaster() throws Exception { Catalog catalog = getCatalog(); StyleGenerator generator = new StyleGenerator(catalog); CoverageInfo coverage = catalog.getCoverageByName(WORLD.getLocalPart()); StyleInfo style = generator.createStyle(Styles.handler("SLD"), coverage); catalog.add(style); MockHttpServletResponse response = getAsServletResponse( "wms?bbox=-120,35,-100,45" + "&styles=" + style.getName() + "&layers=" + coverage.getName() + "&format=image/png&request=GetMap&width=80&height=40&srs=EPSG:4326"); BufferedImage image = ImageIO.read(new ByteArrayInputStream(response.getContentAsByteArray())); Color rgb = new Color(image.getRGB(5, 5)); assertEquals(rgb, new Color(170, 170, 170)); checkImage(response); }
@RunTestSetup @Test public void testGeoServerReload() throws Exception { Catalog cat = getCatalog(); FeatureTypeInfo lakes = cat.getFeatureTypeByName( MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart()); assertFalse("foo".equals(lakes.getTitle())); GeoServerDataDirectory dd = new GeoServerDataDirectory(getResourceLoader()); File info = dd.findResourceFile(lakes); // File info = getResourceLoader().find("featureTypes", "cite_Lakes", "info.xml"); FileReader in = new FileReader(info); Element dom = ReaderUtils.parse(in); Element title = ReaderUtils.getChildElement(dom, "title"); title.getFirstChild().setNodeValue("foo"); OutputStream output = new FileOutputStream(info); try { TransformerFactory.newInstance() .newTransformer() .transform(new DOMSource(dom), new StreamResult(output)); } finally { output.close(); } getGeoServer().reload(); lakes = cat.getFeatureTypeByName( MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart()); assertEquals("foo", lakes.getTitle()); }
/** * Get the QName for a layer specified by the layername that would be used in a request. * * @param typename the layer name for the type */ protected QName resolveLayerName(String typename) { int i = typename.indexOf(":"); String prefix = typename.substring(0, i); String name = typename.substring(i + 1); NamespaceInfo ns = getCatalog().getNamespaceByPrefix(prefix); QName qname = new QName(ns.getURI(), name, ns.getPrefix()); return qname; }
public void testSkipMisconfigured() throws Exception { // enable skipping of misconfigured layers GeoServerInfo global = getGeoServer().getGlobal(); global.setResourceErrorHandling(ResourceErrorHandling.SKIP_MISCONFIGURED_LAYERS); getGeoServer().save(global); // manually misconfigure one layer CoverageStoreInfo cvInfo = getCatalog().getCoverageStoreByName(MockData.TASMANIA_DEM.getLocalPart()); cvInfo.setURL("file:///I/AM/NOT/THERE"); getCatalog().save(cvInfo); Document dom = getAsDOM(BASEPATH + "?request=DescribeCoverage&service=WCS&version=1.0.0"); checkValidationErrors(dom, WCS10_DESCRIBECOVERAGE_SCHEMA); int count = getCatalog().getCoverages().size(); assertEquals(count - 1, dom.getElementsByTagName("wcs:CoverageOffering").getLength()); }
private void enableCoordinatesFormatting() { FeatureTypeInfo info = getGeoServer() .getCatalog() .getResourceByName( new NameImpl( MockData.BASIC_POLYGONS.getPrefix(), MockData.BASIC_POLYGONS.getLocalPart()), FeatureTypeInfo.class); info.setNumDecimals(4); info.setForcedDecimal(true); info.setPadWithZeros(true); getGeoServer().getCatalog().save(info); }
@Test public void testCascadeStyle() { Catalog catalog = getCatalog(); StyleInfo style = catalog.getStyleByName(LAKES.getLocalPart()); assertNotNull(style); new CascadeDeleteVisitor(catalog).visit(style); assertNull(catalog.getStyleByName(LAKES.getLocalPart())); LayerInfo layer = catalog.getLayerByName(getLayerId(LAKES)); assertEquals("polygon", layer.getDefaultStyle().getName()); } }
public void write(Object value, OutputStream output, Operation operation) throws IOException, ServiceException { // get the feature SimpleFeature feature = (SimpleFeature) value; SimpleFeatureType featureType = feature.getType(); // grab the metadata FeatureTypeInfo meta = catalog.getFeatureTypeByName(featureType.getName()); // create teh encoder Encoder encoder = new Encoder(configuration); encoder.setEncoding(Charset.forName(getInfo().getGeoServer().getSettings().getCharset())); encoder.encode(feature, new QName(meta.getNamespace().getURI(), meta.getName()), output); } }
@Test public void testSkipMisconfiguredLayers() throws Exception { // configure geoserver to skip misconfigured layers GeoServerInfo global = getGeoServer().getGlobal(); global.setResourceErrorHandling(ResourceErrorHandling.SKIP_MISCONFIGURED_LAYERS); getGeoServer().save(global); // introduce misconfiguration FeatureTypeInfo ftype = getCatalog().getFeatureTypeByName(CiteTestData.UPDATES.getLocalPart()); ftype.setLatLonBoundingBox(null); getCatalog().save(ftype); // fetch capabilities document Document doc = getAsDOM("wfs?version=1.0.0&service=WFS&request=getCapabilities"); // print(doc); int count = 0; for (FeatureTypeInfo ft : getCatalog().getFeatureTypes()) { if (ft.enabled()) count++; } // print(doc); assertXpathEvaluatesTo(String.valueOf(count - 1), "count(//wfs:FeatureType)", doc); }
@Override protected void onSetUp(SystemTestData testData) throws Exception { super.onSetUp(testData); Catalog cat = getCatalog(); CoverageStoreInfo csi = cat.getCoverageStoreByName(SystemTestData.WORLD.getLocalPart()); csi.setEnabled(false); cat.save(csi); GeoServerInfo global = getGeoServer().getGlobal(); global.getSettings().setProxyBaseUrl("src/test/resources/geoserver"); getGeoServer().save(global); }