package org.basex.http.rest;
import static org.junit.Assert.*;
import java.io.*;
import org.basex.core.*;
import org.basex.util.http.*;
import org.junit.*;
/**
* This class tests the embedded REST API and the POST method.
*
* @author BaseX Team 2005-17, BSD License
* @author Christian Gruen
*/
public final class RESTPostTest extends RESTTest {
/**
* POST Test: execute a query.
* @throws IOException I/O exception
*/
@Test
public void post1() throws IOException {
assertEquals("123",
post("", "<query xmlns=\"" + URI + "\"><text>123</text></query>", MediaType.APPLICATION_XML));
}
/**
* POST Test: execute a query.
* @throws IOException I/O exception
*/
@Test
public void post2() throws IOException {
assertEquals("",
post("", "<query xmlns=\"" + URI + "\"><text>()</text></query>", MediaType.APPLICATION_XML));
}
/**
* POST Test: execute a query.
* @throws IOException I/O exception
*/
@Test
public void post3() throws IOException {
assertEquals(
"1",
post("", "<query xmlns=\"" + URI + "\">" +
"<text><![CDATA[<a>1</a>]]></text><parameter name='method' value='text'/></query>",
MediaType.APPLICATION_XML));
}
/**
* POST Test: execute a query and ignore/overwrite duplicates declarations.
* @throws IOException I/O exception
*/
@Test
public void post4() throws IOException {
assertEquals("<html></html>",
post("", "<query xmlns=\"" + URI + "\">" +
"<text><![CDATA[<html/>]]></text>" +
"<parameter name='omit-xml-declaration' value='no'/>" +
"<parameter name='omit-xml-declaration' value='yes'/>" +
"<parameter name='method' value='xhtml'/>" + "</query>", MediaType.APPLICATION_XML));
}
/**
* POST Test: execute a query.
* @throws IOException I/O exception
*/
@Test
public void post5() throws IOException {
assertEquals("123", post("",
"<query xmlns=\"" + URI + "\">" +
"<text>123</text>" +
"<parameter name='omit-xml-declaration' value='no'/>" +
"<parameter name='omit-xml-declaration' value='yes'/>" +
"</query>", MediaType.APPLICATION_XML));
}
/**
* POST Test: execute a query with an initial context.
* @throws IOException I/O exception
*/
@Test
public void post6() throws IOException {
assertEquals("<a/>", post("",
"<query xmlns=\"" + URI + "\">" +
"<text>.</text>" +
"<context><a/></context>" +
"</query>", MediaType.APPLICATION_XML));
}
/**
* POST Test: specify an option.
* @throws IOException I/O exception
*/
@Test
public void postOption() throws IOException {
assertEquals("2", post("", "<query xmlns=\"" + URI + "\">" +
"<text>2, delete node <a/></text>" +
"<option name='" + MainOptions.MIXUPDATES.name() + "' value='true'/></query>",
MediaType.APPLICATION_XML));
try {
post("", "<query xmlns=\"" + URI + "\">" +
"<text>1, delete node <a/></text>" +
"<option name='" + MainOptions.MIXUPDATES.name() + "' value='false'/></query>",
MediaType.APPLICATION_XML);
fail("Error expected.");
} catch(final IOException ex) {
assertContains(ex.getMessage(), "[XUST0001]");
}
}
/** POST Test: execute buggy query. */
@Test
public void postErr() {
try {
assertEquals("", post("", "<query xmlns=\"" + URI + "\"><text>(</text></query>",
MediaType.APPLICATION_XML));
} catch(final IOException ex) {
assertContains(ex.getMessage(), "[XPST0003]");
}
}
}