package org.basex; import static org.junit.Assert.*; import java.io.*; import org.basex.core.*; import org.basex.core.users.*; import org.basex.io.out.*; import org.basex.util.list.*; import org.junit.*; /** * Tests the command-line arguments of the client starter class. * * @author BaseX Team 2005-17, BSD License * @author Christian Gruen */ public final class BaseXClientTest extends BaseXTest { @Override protected String run(final String... args) throws IOException { return run(args, new String[0]); } /** * Test client with different port. * @throws IOException I/O exception */ @Test public void port() throws IOException { equals("1", new String[] { "-p9898", "-q1" }, new String[] { "-p9898" }); } /** * Test client with invalid port argument. * @throws IOException I/O exception */ @Test(expected = BaseXException.class) public void portErr() throws IOException { run("-px"); } /** * Test client with invalid port number. * @throws IOException I/O exception */ @Test(expected = BaseXException.class) public void portErr2() throws IOException { run("-px0"); } /** * Test client with different user. * @throws IOException I/O exception */ @Test public void user() throws IOException { run("-cexit", "-cdrop user " + NAME); equals("5", new String[] { "-U" + NAME, "-P" + NAME, "-q5" }, new String[] { "-ccreate user " + NAME + ' ' + NAME }); run("-cexit", "-cdrop user " + NAME); } /** * Runs a request and compares the result with the expected result. * @param exp expected result * @param args command-line arguments * @param sargs server arguments * @throws IOException I/O exception */ private static void equals(final String exp, final String[] args, final String[] sargs) throws IOException { assertEquals(exp, run(args, sargs)); } /** * Runs a request with the specified arguments and server arguments. * @param args command-line arguments * @param sargs server arguments * @return result * @throws IOException I/O exception */ private static String run(final String[] args, final String[] sargs) throws IOException { final BaseXServer server = createServer(sargs); final StringList sl = new StringList( "-p" + DB_PORT, "-U" + UserText.ADMIN, "-P" + UserText.ADMIN).add(args); try(ArrayOutput ao = new ArrayOutput()) { System.setOut(new PrintStream(ao)); new BaseXClient(sl.finish()); return ao.toString(); } finally { stopServer(server); } } }