package org.basex.modules;
import static org.junit.Assert.*;
import java.net.*;
import org.basex.http.*;
import org.basex.util.*;
import org.junit.*;
/**
* This class tests the Session Module.
*
* @author BaseX Team 2005-17, BSD License
* @author Christian Gruen
*/
public final class SessionModuleTest extends HTTPTest {
/**
* Start server.
* @throws Exception exception
*/
@BeforeClass
public static void start() throws Exception {
init(REST_ROOT, true);
}
/**
* Function test.
* @throws Exception exception
*/
@Test
public void id() throws Exception {
assertEquals("1", get("?query=" + request("count(S:id())")));
}
/**
* Function test.
* @throws Exception exception
*/
@Test
public void names() throws Exception {
assertEquals("a", get("?query=" + request("S:set('a','b'), S:names()")));
}
/**
* Function test.
* @throws Exception exception
*/
@Test
public void get() throws Exception {
assertEquals("", get("?query=" + request("S:get('a')")));
}
/**
* Function test.
* @throws Exception exception
*/
@Test
public void set() throws Exception {
final String query = "S:set('a','b'), S:get('a')";
assertEquals("b", get("?query=" + request(query)));
}
/**
* Function test.
* @throws Exception exception
*/
@Test
public void close() throws Exception {
assertEquals("", get("?query=" + request("S:close()")));
}
// PRIVATE METHODS ====================================================================
/**
* Returns an encoded version of the query, including a Request module import.
* @param query query string
* @return prepared query
* @throws Exception exception
*/
private static String request(final String query) throws Exception {
return URLEncoder.encode("import module namespace " +
"S='http://basex.org/modules/session';" + query, Strings.UTF8);
}
}