package com.deepoove.swagger.test; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.beust.jcommander.JCommander; import com.beust.jcommander.ParameterException; import com.deepoove.swagger.diff.cli.CLI; public class CLITest { private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); @Before public void setUpStreams() { System.setOut(new PrintStream(outContent)); } @After public void restoreStreams() { System.setOut(System.out); } @Test public void testCLI() { CLI cli = new CLI(); String[] argv = { "-v", "2.0", "-old", "http://petstore.swagger.io/v2/swagger.json", "--help" }; JCommander commander = JCommander.newBuilder().addObject(cli).build(); commander.setProgramName("java swagger-diff.jar"); commander.usage(); commander.parse(argv); Assert.assertEquals(cli.getVersion(), "2.0"); Assert.assertEquals(cli.getOldSpec(), "http://petstore.swagger.io/v2/swagger.json"); } @Test public void testRegex() { CLI cli = new CLI(); String[] argv = { "--help", "-v", "2.0", "-output-mode", "markdown" }; JCommander.newBuilder().addObject(cli).build().parse(argv); argv = new String[] { "--help", "-v", "1.0", "-output-mode", "html" }; JCommander.newBuilder().addObject(cli).build().parse(argv); argv = new String[] { "--help", "-v", "1.1.0" }; try { JCommander.newBuilder().addObject(cli).build().parse(argv); } catch (Exception e) { System.out.println(e.getMessage()); Assert.assertTrue(e instanceof ParameterException); } argv = new String[] { "--help", "-output-mode", "html5" }; try { JCommander.newBuilder().addObject(cli).build().parse(argv); } catch (Exception e) { System.out.println(e.getMessage()); Assert.assertTrue(e instanceof ParameterException); } } @Test public void testHelp() { CLI cli = new CLI(); String[] argv = { "--help" }; JCommander jCommander = JCommander.newBuilder().addObject(cli).build(); jCommander.parse(argv); cli.run(jCommander); Assert.assertTrue(outContent.toString().startsWith("Usage: java -jar swagger-diff.jar ")); } @Test public void testVersion() { CLI cli = new CLI(); String[] argv = { "--version" }; JCommander jCommander = JCommander.newBuilder().addObject(cli).build(); jCommander.parse(argv); cli.run(jCommander); Assert.assertEquals(outContent.toString().trim(), "1.2.2"); } @Test public void testMain() { CLI cli = new CLI(); String[] argv = { "-old", "petstore_v2_1.json", "-new", "petstore_v2_2.json" }; JCommander jCommander = JCommander.newBuilder().addObject(cli).build(); jCommander.parse(argv); cli.run(jCommander); Assert.assertTrue(outContent.toString().startsWith("## Version 1.0.0 to 1.0.2")); } }