/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2014 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.rest.web; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.apache.wicket.util.tester.FormTester; import org.geoserver.catalog.NamespaceInfo; import org.geoserver.catalog.WorkspaceInfo; import org.geoserver.config.GeoServer; import org.geoserver.config.SettingsInfo; import org.geoserver.data.test.MockData; import org.geoserver.rest.ecql.RESTUploadECQLPathMapper; import org.geoserver.web.GeoServerWicketTestSupport; import org.geoserver.web.admin.GlobalSettingsPage; import org.geoserver.web.data.workspace.WorkspaceEditPage; import org.junit.Before; import org.junit.Test; /** * Unit test for evaluating the ECQL TextField for the RESTUploadPathMapper. */ public class RESTECQLPanelTest extends GeoServerWicketTestSupport { /** Workspace info object called "cite" */ private WorkspaceInfo citeWorkspace; @Before public void init() { // Login login(); // Selection of the workspace citeWorkspace = getCatalog().getWorkspaceByName(MockData.CITE_PREFIX); // Removing the settings associated to the workspace GeoServer gs = getGeoServer(); SettingsInfo s = gs.getSettings(citeWorkspace); if (s != null) { gs.remove(s); } NamespaceInfo citeNS = getCatalog().getNamespaceByPrefix(MockData.CITE_PREFIX); citeNS.setURI(MockData.CITE_URI); getCatalog().save(citeNS); } @Test public void testExpressionSettingOnWorkSpace() { // Opening the selected page tester.startPage(new WorkspaceEditPage(citeWorkspace)); tester.assertRenderedPage(WorkspaceEditPage.class); tester.assertNoErrorMessage(); // Setting of the "settings" parameter to true FormTester form = tester.newFormTester("form"); form.setValue("settings:enabled", true); form.submit(); // Check if no error has been found tester.assertNoErrorMessage(); // Get GeoServer object for retrieving the settings associated to the workspace GeoServer gs = getGeoServer(); assertNotNull(gs.getSettings(citeWorkspace)); // Reload the page tester.startPage(new WorkspaceEditPage(citeWorkspace)); tester.assertRenderedPage(WorkspaceEditPage.class); // CQL expression String expression = "stringTemplate(path, '(\\w{4})_(\\w{7})_(\\d{3})_(\\d{4})(\\d{2})(\\d{2})T(\\d{7})_(\\d{2})\\.(\\w{4})', " + "'/${1}/${4}/${5}/${6}/${0}')"; // Set the root directory FormTester form2 = tester.newFormTester("form"); form2.setValue("settings:settingsContainer:otherSettings:extensions:0:content:ecqlexp", expression); form2.submit(); // Check if no error has been found tester.assertNoErrorMessage(); // Control if the defined root has been correctly set assertEquals( gs.getSettings(citeWorkspace).getMetadata() .get(RESTUploadECQLPathMapper.EXPRESSION_KEY, String.class), expression); } @Test public void testExpressionSettingOnGlobal() { // Opening the selected page tester.startPage(new GlobalSettingsPage()); tester.assertRenderedPage(GlobalSettingsPage.class); tester.assertNoErrorMessage(); // Get GeoServer object for searching the global settings GeoServer gs = getGeoServer(); // CQL expression String expression = "stringTemplate(path, '(\\w{4})_(\\w{7})_(\\d{3})_(\\d{4})(\\d{2})(\\d{2})T(\\d{7})_(\\d{2})\\.(\\w{4})', " + "'/${1}/${4}/${5}/${6}/${0}')"; // Set the root directory FormTester form = tester.newFormTester("form"); form.setValue("extensions:0:content:ecqlexp", expression); form.submit("submit"); // Check if no error has been found tester.assertNoErrorMessage(); // Control if the defined root has been correctly set assertEquals( gs.getGlobal().getSettings().getMetadata() .get(RESTUploadECQLPathMapper.EXPRESSION_KEY, String.class), expression); } }