#176 Fix tests related to styles in workspaces

This commit is contained in:
etj 2016-04-08 19:28:54 +02:00
parent 5447c06dbc
commit ff7f383591
4 changed files with 392 additions and 387 deletions

View File

@ -156,7 +156,7 @@ public class GeoserverRESTArcGridTest extends GeoserverRESTTest {
assertTrue(reader.existsCoveragestore(DEFAULT_WS, storeName)); assertTrue(reader.existsCoveragestore(DEFAULT_WS, storeName));
assertTrue(reader.existsCoverage(DEFAULT_WS, storeName, storeName)); assertTrue(reader.existsCoverage(DEFAULT_WS, storeName, storeName));
RESTLayer layer = reader.getLayer(DEFAULT_WS, storeName); RESTLayer layer = reader.getLayer(DEFAULT_WS, storeName);
assertEquals("mystyle", layer.getDefaultStyle()); assertEquals(DEFAULT_WS + ":mystyle", layer.getDefaultStyle());
assertEquals(DEFAULT_WS, layer.getDefaultStyleWorkspace()); assertEquals(DEFAULT_WS, layer.getDefaultStyleWorkspace());
} }

View File

@ -130,7 +130,8 @@ public class GeoserverRESTGeoTiffTest extends GeoserverRESTTest {
} }
@Test @Test
public void testGeoTiffWithStyleInWorkspace() throws IOException { public void testGeoTiffWithStyleInWorkspace() throws IOException
{
if (!enabled()) return; if (!enabled()) return;
deleteAll(); deleteAll();
@ -155,11 +156,11 @@ public class GeoserverRESTGeoTiffTest extends GeoserverRESTTest {
assertNotNull("publish() failed", pub); assertNotNull("publish() failed", pub);
// Test exists // Test exists
assertTrue(reader.existsCoveragestore(DEFAULT_WS, storeName)); assertTrue("New coverage not found", reader.existsCoveragestore(DEFAULT_WS, storeName));
assertTrue(reader.existsCoverage(DEFAULT_WS, storeName, storeName)); assertTrue("New Store not found", reader.existsCoverage(DEFAULT_WS, storeName, storeName));
RESTLayer layer = reader.getLayer(DEFAULT_WS, storeName); RESTLayer layer = reader.getLayer(DEFAULT_WS, storeName);
assertEquals("mystyle", layer.getDefaultStyle()); assertEquals("Bad default style", DEFAULT_WS + ":mystyle", layer.getDefaultStyle());
assertEquals(DEFAULT_WS, layer.getDefaultStyleWorkspace()); assertEquals("Bad workspace for style", DEFAULT_WS, layer.getDefaultStyleWorkspace());
} }
@Test @Test

View File

@ -274,7 +274,7 @@ public class GeoserverRESTShapeTest extends GeoserverRESTTest {
RESTLayer layer = reader.getLayer(layerName); RESTLayer layer = reader.getLayer(layerName);
// RESTLayer layerDecoder = new RESTLayer(layer); // RESTLayer layerDecoder = new RESTLayer(layer);
LOGGER.info("Layer style is " + layer.getDefaultStyle()); LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals("Style not assigned properly", styleName, layer.getDefaultStyle()); assertEquals("Style not assigned properly", DEFAULT_WS + ":" + styleName, layer.getDefaultStyle());
assertEquals("Style not assigned properly", DEFAULT_WS, layer.getDefaultStyleWorkspace()); assertEquals("Style not assigned properly", DEFAULT_WS, layer.getDefaultStyleWorkspace());
// remove also datastore // remove also datastore

View File

@ -1,7 +1,7 @@
/* /*
* GeoServer-Manager - Simple Manager Library for GeoServer * GeoServer-Manager - Simple Manager Library for GeoServer
* *
* Copyright (C) 2007,2015 GeoSolutions S.A.S. * Copyright (C) 2007-2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it * http://www.geo-solutions.it
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
@ -57,27 +57,27 @@ import org.springframework.core.io.ClassPathResource;
*/ */
public class GeoserverRESTStyleTest extends GeoserverRESTTest { public class GeoserverRESTStyleTest extends GeoserverRESTTest {
private final static Logger LOGGER = LoggerFactory private final static Logger LOGGER = LoggerFactory.getLogger(GeoserverRESTStyleTest.class);
.getLogger(GeoserverRESTStyleTest.class);
@Test @Test
public void testStyles() throws IOException { public void testStyles() throws IOException
if (!enabled()) {
return; if (!enabled()) {
deleteAll(); return;
}
deleteAll();
assertEquals(0, reader.getStyles().size()); assertEquals(0, reader.getStyles().size());
final String STYLENAME = "restteststyle"; final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld") File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
.getFile();
// insert style // insert style
assertTrue(publisher.publishStyle(sldFile)); assertTrue(publisher.publishStyle(sldFile));
assertTrue(reader.existsStyle(STYLENAME)); assertTrue(reader.existsStyle(STYLENAME));
assertFalse(publisher.publishStyle(sldFile)); assertFalse(publisher.publishStyle(sldFile));
assertTrue(reader.existsStyle(STYLENAME)); assertTrue(reader.existsStyle(STYLENAME));
// insert style v110 // insert style v110
final String STYLENAMEV110 = "restteststyleV110"; final String STYLENAMEV110 = "restteststyleV110";
@ -92,288 +92,292 @@ public class GeoserverRESTStyleTest extends GeoserverRESTTest {
assertEquals(STYLENAME, style.getName()); assertEquals(STYLENAME, style.getName());
assertNull(style.getWorkspace()); assertNull(style.getWorkspace());
String sld = reader.getSLD(STYLENAME); String sld = reader.getSLD(STYLENAME);
assertNotNull(sld); assertNotNull(sld);
Element styleEl = JDOMBuilder.buildElement(sld); Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl); assertNotNull(styleEl);
Namespace SLDNS = Namespace.getNamespace("sld", Namespace SLDNS = Namespace.getNamespace("sld", "http://www.opengis.net/sld");
"http://www.opengis.net/sld");
try { try {
assertEquals(STYLENAME, styleEl.getChild("NamedLayer", SLDNS)
.getChild("Name", SLDNS).getText());
assertEquals("STYLE FOR TESTING PURPOSES",
styleEl.getChild("NamedLayer", SLDNS)
.getChild("UserStyle", SLDNS)
.getChild("Title", SLDNS).getText());
} catch (NullPointerException npe) {
fail("Error in SLD");
}
assertEquals(STYLENAME, styleEl.getChild("NamedLayer", SLDNS) // assertEquals(1475, sld.length());
.getChild("Name", SLDNS).getText()); assertEquals(2, reader.getStyles().size());
assertEquals("STYLE FOR TESTING PURPOSES", }
styleEl.getChild("NamedLayer", SLDNS)
.getChild("UserStyle", SLDNS)
.getChild("Title", SLDNS).getText());
} catch (NullPointerException npe) {
fail("Error in SLD");
}
// assertEquals(1475, sld.length()); protected void cleanupTestStyle(final String styleName)
{
// dry run delete to work in a known state
if (reader.existsStyle(styleName)) {
LOGGER.info("Clearing stale test style " + styleName);
boolean ok = publisher.removeStyle(styleName);
if (!ok) {
fail("Could not unpublish style " + styleName);
}
}
assertFalse("Cleanup failed", reader.existsStyle(styleName));
}
assertEquals(2, reader.getStyles().size()); @Test
} public void testPublishDeleteStyleFile() throws FileNotFoundException,
IOException {
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
final String styleName = "restteststyle";
protected void cleanupTestStyle(final String styleName) { File sldFile = new ClassPathResource("testdata/restteststyle.sld")
// dry run delete to work in a known state .getFile();
if (reader.existsStyle(styleName)) {
LOGGER.info("Clearing stale test style " + styleName);
boolean ok = publisher.removeStyle(styleName);
if (!ok) {
fail("Could not unpublish style " + styleName);
}
}
assertFalse("Cleanup failed", reader.existsStyle(styleName));
}
@Test final String STYLENAMEV110 = "restteststyleV110";
public void testPublishDeleteStyleFile() throws FileNotFoundException, File sldFileV110 = new ClassPathResource("testdata/" + STYLENAMEV110 + ".sld")
IOException { .getFile();
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
final String styleName = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld") // known state?
.getFile(); cleanupTestStyle(styleName);
cleanupTestStyle(STYLENAMEV110);
final String STYLENAMEV110 = "restteststyleV110"; // test insert
File sldFileV110 = new ClassPathResource("testdata/" + STYLENAMEV110 + ".sld") boolean published = publisher.publishStyle(sldFile); // Will take the
.getFile(); // name from sld
// contents
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
// known state? sldFile = new ClassPathResource("testdata/restteststyle2.sld").getFile();
cleanupTestStyle(styleName); published = publisher.updateStyle(sldFile, styleName); // update
cleanupTestStyle(STYLENAMEV110); assertTrue("update() failed", published);
// test insert // test delete
boolean published = publisher.publishStyle(sldFile); // Will take the boolean ok = publisher.removeStyle(styleName);
// name from sld assertTrue("Unpublish() failed", ok);
// contents assertFalse(reader.existsStyle(styleName));
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
sldFile = new ClassPathResource("testdata/restteststyle2.sld").getFile(); published = publisher.publishStyle(sldFileV110, STYLENAMEV110, true);
published = publisher.updateStyle(sldFile, styleName); // update
assertTrue("update() failed", published);
// test delete assertTrue("publish() failed", published);
boolean ok = publisher.removeStyle(styleName); assertTrue(reader.existsStyle(STYLENAMEV110));
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
published = publisher.publishStyle(sldFileV110, STYLENAMEV110, true); boolean updated = publisher.updateStyle(sldFileV110, STYLENAMEV110, true);
assertTrue("update() failed", updated);
assertTrue("publish() failed", published); // test delete
assertTrue(reader.existsStyle(STYLENAMEV110)); ok = publisher.removeStyle(STYLENAMEV110);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(STYLENAMEV110));
}
boolean updated = publisher.updateStyle(sldFileV110, STYLENAMEV110, true); @Test
assertTrue("update() failed", updated); public void testPublishDeleteStyleString()
throws FileNotFoundException, IOException
{
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
String styleName = "restteststyle";
// test delete File sldFile = new ClassPathResource("testdata/restteststyle.sld")
ok = publisher.removeStyle(STYLENAMEV110); .getFile();
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(STYLENAMEV110));
}
@Test // known state?
public void testPublishDeleteStyleString() throws FileNotFoundException, cleanupTestStyle(styleName);
IOException {
if (!enabled()) {
return;
}
// Assume.assumeTrue(enabled);
String styleName = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld") // test insert
.getFile(); String sldContent = IOUtils.toString(new FileInputStream(sldFile));
// known state? boolean published = publisher.publishStyle(sldContent); // Will take the
cleanupTestStyle(styleName); // name from sld
// contents
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
// test delete
boolean ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
// test insert styleName = "restteststyle_with_name";
String sldContent = IOUtils.toString(new FileInputStream(sldFile)); // test insert with name
published = publisher.publishStyle(sldContent, styleName); // Will set
// the name
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
String newSldContent = sldContent.replace(
"<sld:Title>STYLE FOR TESTING PURPOSES</sld:Title>",
"<sld:Title>MODIFIED STYLE FOR TESTING</sld:Title>");
published = publisher.updateStyle(newSldContent, styleName); // update
assertTrue("publish() failed", published);
boolean published = publisher.publishStyle(sldContent); // Will take the // test delete
// name from sld ok = publisher.removeStyle(styleName);
// contents assertTrue("Unpublish() failed", ok);
assertTrue("publish() failed", published); assertFalse(reader.existsStyle(styleName));
assertTrue(reader.existsStyle(styleName));
// test delete
boolean ok = publisher.removeStyle(styleName);
assertTrue("Unpublish() failed", ok);
assertFalse(reader.existsStyle(styleName));
styleName = "restteststyle_with_name"; }
// test insert with name
published = publisher.publishStyle(sldContent, styleName); // Will set
// the name
assertTrue("publish() failed", published);
assertTrue(reader.existsStyle(styleName));
String newSldContent = sldContent.replace(
"<sld:Title>STYLE FOR TESTING PURPOSES</sld:Title>",
"<sld:Title>MODIFIED STYLE FOR TESTING</sld:Title>");
published = publisher.updateStyle(newSldContent, styleName); // update
assertTrue("publish() failed", published);
// test delete @Test
ok = publisher.removeStyle(styleName); public void testUpdateDefaultStyle()
assertTrue("Unpublish() failed", ok); throws FileNotFoundException, IOException
assertFalse(reader.existsStyle(styleName)); {
if (!enabled()) {
return;
}
deleteAll();
} String storeName = "resttestshp";
String layerName = "cities";
@Test final String styleName = "restteststyle";
public void testUpdateDefaultStyle() throws FileNotFoundException, {
IOException { File sldFile = new ClassPathResource("testdata/restteststyle.sld")
if (!enabled()) { .getFile();
return; cleanupTestStyle(styleName);
} boolean sldpublished = publisher.publishStyle(sldFile); // Will take
deleteAll(); // the name
// from sld
// contents
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName));
}
String storeName = "resttestshp"; final String styleName2 = "restteststyle2";
String layerName = "cities"; {
File sldFile = new ClassPathResource("testdata/restteststyle2.sld")
.getFile();
cleanupTestStyle(styleName2);
boolean sldpublished = publisher.publishStyle(sldFile, styleName2);
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName2));
}
final String styleName = "restteststyle"; File zipFile = new ClassPathResource("testdata/resttestshp.zip")
{ .getFile();
File sldFile = new ClassPathResource("testdata/restteststyle.sld")
.getFile();
cleanupTestStyle(styleName);
boolean sldpublished = publisher.publishStyle(sldFile); // Will take
// the name
// from sld
// contents
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName));
}
final String styleName2 = "restteststyle2"; assertTrue(publisher.createWorkspace(DEFAULT_WS));
{
File sldFile = new ClassPathResource("testdata/restteststyle2.sld")
.getFile();
cleanupTestStyle(styleName2);
boolean sldpublished = publisher.publishStyle(sldFile, styleName2);
assertTrue("style publish() failed", sldpublished);
assertTrue(reader.existsStyle(styleName2));
}
File zipFile = new ClassPathResource("testdata/resttestshp.zip") // test insert
.getFile(); boolean published = publisher.publishShp(DEFAULT_WS, storeName,
layerName, zipFile, "EPSG:4326", styleName);
assertTrue("publish() failed", published);
assertTrue(existsLayer(layerName));
assertTrue(publisher.createWorkspace(DEFAULT_WS)); {
RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName, layer.getDefaultStyle());
}
// test insert GSLayerEncoder le = new GSLayerEncoder();
boolean published = publisher.publishShp(DEFAULT_WS, storeName, le.setDefaultStyle(styleName2);
layerName, zipFile, "EPSG:4326", styleName); publisher.configureLayer(DEFAULT_WS, layerName, le);
assertTrue("publish() failed", published);
assertTrue(existsLayer(layerName));
{ {
RESTLayer layer = reader.getLayer(layerName); RESTLayer layer = reader.getLayer(layerName);
LOGGER.info("Layer style is " + layer.getDefaultStyle()); LOGGER.info("Layer style is " + layer.getDefaultStyle());
assertEquals(styleName, layer.getDefaultStyle()); assertEquals(styleName2, layer.getDefaultStyle());
} }
GSLayerEncoder le = new GSLayerEncoder(); // remove layer and datastore
le.setDefaultStyle(styleName2); boolean dsRemoved = publisher.removeDatastore(DEFAULT_WS, storeName,
publisher.configureLayer(DEFAULT_WS, layerName, le); true);
assertTrue("removeDatastore() failed", dsRemoved);
}
{ @Test
RESTLayer layer = reader.getLayer(layerName); public void testStylesInWorkspace() throws IOException
LOGGER.info("Layer style is " + layer.getDefaultStyle()); {
assertEquals(styleName2, layer.getDefaultStyle()); if (!enabled()) {
} return;
}
// remove layer and datastore deleteAll();
boolean dsRemoved = publisher.removeDatastore(DEFAULT_WS, storeName,
true);
assertTrue("removeDatastore() failed", dsRemoved);
}
@Test
public void testStylesInWorkspace() throws IOException {
if (!enabled())
return;
deleteAll();
final String WORKSPACE = "testWorkspace"; final String WORKSPACE = "testWorkspace";
final String STYLENAME = "restteststyle"; final String STYLENAME = "restteststyle";
File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile(); File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
publisher.createWorkspace(WORKSPACE); publisher.createWorkspace(WORKSPACE);
assertEquals(0, reader.getStyles().size()); assertEquals(0, reader.getStyles().size());
assertEquals(0, reader.getStyles(WORKSPACE).size()); assertEquals(0, reader.getStyles(WORKSPACE).size());
// insert style
assertTrue("Error inserting style", publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertTrue("Style does not exist in workspace", reader.existsStyle(WORKSPACE, STYLENAME));
// insert style // this assertion is not enforced by geoserver, which is quite lenient in searching names
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile)); //assertFalse("Style should not be global", reader.existsStyle(STYLENAME));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
assertFalse(reader.existsStyle(STYLENAME));
// insert style again // insert style again
assertFalse(publisher.publishStyleInWorkspace(WORKSPACE, sldFile)); assertFalse("Dup style not trapped", publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME)); assertTrue("Style does not exist in workspace (2)", reader.existsStyle(WORKSPACE, STYLENAME));
assertFalse(reader.existsStyle(STYLENAME)); // this assertion is not enforced by geoserver, which is quite lenient in searching names
//assertFalse("Style should not be global (2)", reader.existsStyle(STYLENAME));
String sld = reader.getSLD(WORKSPACE, STYLENAME); String sld = reader.getSLD(WORKSPACE, STYLENAME);
assertNotNull(sld); assertNotNull(sld);
RESTStyle style = reader.getStyle(WORKSPACE, STYLENAME); RESTStyle style = reader.getStyle(WORKSPACE, STYLENAME);
assertEquals(STYLENAME, style.getName()); assertEquals(STYLENAME, style.getName());
assertEquals(WORKSPACE, style.getWorkspace()); assertEquals(WORKSPACE, style.getWorkspace());
Element styleEl = JDOMBuilder.buildElement(sld); Element styleEl = JDOMBuilder.buildElement(sld);
assertNotNull(styleEl); assertNotNull(styleEl);
Namespace SLDNS = Namespace.getNamespace("sld", Namespace SLDNS = Namespace.getNamespace("sld", "http://www.opengis.net/sld");
"http://www.opengis.net/sld");
try { try {
assertEquals(STYLENAME, styleEl.getChild("NamedLayer", SLDNS) assertEquals(STYLENAME, styleEl.getChild("NamedLayer", SLDNS)
.getChild("Name", SLDNS).getText()); .getChild("Name", SLDNS).getText());
assertEquals( assertEquals(
"STYLE FOR TESTING PURPOSES", "STYLE FOR TESTING PURPOSES",
styleEl.getChild("NamedLayer", SLDNS) styleEl.getChild("NamedLayer", SLDNS)
.getChild("UserStyle", SLDNS) .getChild("UserStyle", SLDNS)
.getChild("Title", SLDNS).getText()); .getChild("Title", SLDNS).getText());
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
fail("Error in SLD"); fail("Error in SLD");
} }
// assertEquals(1475, sld.length()); // assertEquals(1475, sld.length());
assertEquals(0, reader.getStyles().size());
assertEquals(1, reader.getStyles(WORKSPACE).size());
}
assertEquals(0, reader.getStyles().size()); @Test
assertEquals(1, reader.getStyles(WORKSPACE).size()); public void testRemoveStylesInWorkspace() throws IOException
} {
if (!enabled()) {
@Test return;
public void testRemoveStylesInWorkspace() throws IOException { }
if (!enabled()) deleteAll();
return;
deleteAll();
final String WORKSPACE = "testWorkspace"; final String WORKSPACE = "testWorkspace";
final String STYLENAME = "restteststyle"; final String STYLENAME = "restteststyle";
final File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile(); final File sldFile = new ClassPathResource("testdata/restteststyle.sld").getFile();
publisher.createWorkspace(WORKSPACE); publisher.createWorkspace(WORKSPACE);
assertEquals(0, reader.getStyles(WORKSPACE).size()); assertEquals(0, reader.getStyles(WORKSPACE).size());
// insert style // insert style
assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile)); assertTrue(publisher.publishStyleInWorkspace(WORKSPACE, sldFile));
assertEquals(1, reader.getStyles(WORKSPACE).size()); assertEquals(1, reader.getStyles(WORKSPACE).size());
assertTrue(reader.existsStyle(WORKSPACE, STYLENAME)); assertTrue(reader.existsStyle(WORKSPACE, STYLENAME));
// remove style // remove style
assertTrue(publisher.removeStyleInWorkspace(WORKSPACE, STYLENAME, true)); assertTrue(publisher.removeStyleInWorkspace(WORKSPACE, STYLENAME, true));
assertEquals(0, reader.getStyles(WORKSPACE).size()); assertEquals(0, reader.getStyles(WORKSPACE).size());
assertFalse(reader.existsStyle(WORKSPACE, STYLENAME)); assertFalse(reader.existsStyle(WORKSPACE, STYLENAME));
} }