/* (c) 2014 - 2016 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.rest;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.geoserver.script.ScriptIntTestSupport;
import org.geoserver.test.GeoServerTestSupport;
import org.springframework.mock.web.MockHttpServletResponse;
public class SessionTest extends ScriptIntTestSupport {
public void testPost() throws Exception {
MockHttpServletResponse response = postAsServletResponse("/script/sessions/js", "");
assertEquals(201, response.getStatus());
assertNotNull(response.getHeader("Location"));
long sessionId = Long.valueOf(response.getContentAsString());
assertTrue(response.getHeader("Location").endsWith("sessions/js/" + sessionId));
}
public void testPut() throws Exception {
MockHttpServletResponse response = postAsServletResponse("/script/sessions/js", "");
assertEquals(201, response.getStatus());
long sid = Long.valueOf(response.getContentAsString());
response =
putAsServletResponse("/script/sessions/js/" + sid, "print('Hello World!');", "text/plain");
assertEquals("Hello World!", response.getContentAsString().trim()); // print is a Rhino-specific function
putAsServletResponse("/script/sessions/js/" + sid, "var x = 3;", "text/plain");
response =
putAsServletResponse("/script/sessions/js/" + sid, "print(x);", "text/plain");
assertEquals("3", response.getContentAsString().trim());
}
public void testGet() throws Exception {
testPost();
testPost();
JSONObject result = (JSONObject) getAsJSON("/script/sessions");
assertTrue(result.has("sessions"));
JSONArray sessions = result.getJSONArray("sessions");
assertEquals(2, sessions.size());
JSONObject session = sessions.getJSONObject(0);
assertTrue(session.has("id"));
assertTrue(session.has("engine"));
assertTrue(session.has("self"));
int sid = session.getInt("id");
assertTrue(session.getString("self").endsWith("/sessions/js/" + sid));
session = (JSONObject) getAsJSON("/script/sessions/js/" + sid);
assertTrue(session.has("id"));
assertTrue(session.has("engine"));
assertTrue(session.has("self"));
assertEquals(sid, session.getInt("id"));
}
}