/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.script.web;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.HiddenField;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.platform.GeoServerExtensions;
import org.geoserver.script.ScriptManager;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geoserver.web.wicket.CodeMirrorEditor;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Lists;
public class ScriptEditPageTest extends GeoServerWicketTestSupport {
@Before
public void init() throws IOException {
// Add a few scripts
ScriptManager scriptManager = GeoServerExtensions.bean(ScriptManager.class);
File wpsDir = scriptManager.script("wps").dir();
File wpsScript = new File(wpsDir, "buffer.groovy");
FileUtils.writeStringToFile(wpsScript, "buffer");
Script script = new Script(wpsScript);
// Login and load the page
login();
tester.startPage(new ScriptEditPage(script));
}
@Test
public void testLoad() {
tester.assertRenderedPage(ScriptEditPage.class);
tester.assertNoErrorMessage();
tester.assertComponent("form:name", HiddenField.class);
tester.assertComponent("form:type", HiddenField.class);
tester.assertComponent("form:extension", HiddenField.class);
tester.assertComponent("form:contents", CodeMirrorEditor.class);
}
@Test
public void testValid() throws IOException {
FormTester form = tester.newFormTester("form");
form.setValue("contents:editorContainer:editorParent:editor", "geom.buffer(-1);");
form.submit();
tester.assertRenderedPage(ScriptPage.class);
tester.assertNoErrorMessage();
ScriptManager scriptManager = GeoServerExtensions.bean(ScriptManager.class);
File file = new File(scriptManager.wps().dir(), "buffer.groovy");
assertTrue(file.exists());
assertEquals("geom.buffer(-1);", FileUtils.readFileToString(file));
}
@Test
public void testContentsRequired() {
FormTester form = tester.newFormTester("form");
form.setValue("contents:editorContainer:editorParent:editor", "");
form.submit();
tester.assertRenderedPage(ScriptEditPage.class);
tester.assertErrorMessages(new String[] { "Field 'contents' is required." });
}
}