package org.basex.http.rest; import static org.junit.Assert.*; import java.io.*; import java.net.*; import org.basex.http.*; import org.basex.io.*; import org.basex.util.*; import org.basex.util.http.*; import org.junit.*; /** * This class tests the embedded REST API. * * @author BaseX Team 2005-17, BSD License * @author Christian Gruen */ public abstract class RESTTest extends HTTPTest { /** REST URI. */ static final String URI = Token.string(RESTText.REST_URI); /** Input file. */ static final String FILE = "src/test/resources/input.xml"; // INITIALIZERS ============================================================= /** * Start server. * @throws Exception exception */ @BeforeClass public static void start() throws Exception { init(REST_ROOT, true); } /** * Checks if a string starts with another. * @param string full string * @param prefix prefix */ protected static void assertStartsWith(final String string, final String prefix) { assertTrue('\'' + string + "' does not start with '" + prefix + '\'', string.startsWith(prefix)); } /** * Compares media types. * @param ret returned media type * @param exp expected media type */ protected static void assertMediaType(final MediaType ret, final MediaType exp) { if(!ret.is(exp)) fail("Wrong media type: " + ret + " returned, " + exp + " expected."); } /** * Checks if a string is contained in another string. * @param str string * @param sub sub string */ protected static void assertContains(final String str, final String sub) { if(!str.contains(sub)) fail('\'' + sub + "' not contained in '" + str + "'."); } /** * Executes the specified GET request and returns the media type. * @param query request * @return string result, or {@code null} for a failure. * @throws IOException I/O exception */ protected static MediaType mediaType(final String query) throws IOException { final IOUrl url = new IOUrl(REST_ROOT + query); final HttpURLConnection conn = (HttpURLConnection) url.connection(); try { read(conn.getInputStream()); return new MediaType(conn.getContentType()); } catch(final IOException ex) { throw error(conn, ex); } finally { conn.disconnect(); } } }