diff --git a/tools/dotcms-cli/cli/src/main/java/com/dotcms/cli/common/OutputOptionMixin.java b/tools/dotcms-cli/cli/src/main/java/com/dotcms/cli/common/OutputOptionMixin.java index d977e9d3778e..7f2a9640f008 100644 --- a/tools/dotcms-cli/cli/src/main/java/com/dotcms/cli/common/OutputOptionMixin.java +++ b/tools/dotcms-cli/cli/src/main/java/com/dotcms/cli/common/OutputOptionMixin.java @@ -16,6 +16,9 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Response; +import org.jboss.resteasy.specimpl.BuiltResponse; import picocli.CommandLine; import picocli.CommandLine.Help.ColorScheme; import picocli.CommandLine.Model.CommandSpec; @@ -279,8 +282,12 @@ public int handleCommandException(final Exception ex, final String message, */ private String getMessage(final Exception originalException, final Exception handledEx) { - var message = abbreviate(handledEx.getMessage(), "...", 200); - + var message = abbreviate(handledEx.getMessage(), "...", 200); + + if(handledEx instanceof WebApplicationException){ + message = getWebApplicationExceptionMessage((WebApplicationException) handledEx); + } + if (originalException instanceof PushException || originalException instanceof PullException || originalException instanceof TraversalTaskException) { @@ -300,6 +307,18 @@ private String getMessage(final Exception originalException, final Exception han + " Occurred With no error message provided."; } + + String getWebApplicationExceptionMessage(final WebApplicationException ex) { + final Response response = ex.getResponse(); + if (response instanceof BuiltResponse) { + final String reasonPhrase = ((BuiltResponse) response).getReasonPhrase(); + if (null != reasonPhrase) { + return reasonPhrase; + } + } + return ex.getMessage(); + } + @Override public String toString() { return "OutputOptions [testMode=" + cliTestMode diff --git a/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/command/LoginCommandIT.java b/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/command/LoginCommandIT.java index acd146265992..dcc4643f40f8 100644 --- a/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/command/LoginCommandIT.java +++ b/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/command/LoginCommandIT.java @@ -142,7 +142,7 @@ void Test_Command_Login_With_Params_Expect_Login_Reject() { final String output = writer.toString(); Assertions.assertTrue(output.contains("[ERROR]")); Assertions.assertTrue(output.contains( - "HTTP 401 Forbidden: You don't have permission to access this resource.")); + "Forbidden: You don't have permission to access this resource.")); } } @@ -165,7 +165,7 @@ void Test_Command_Login_With_Invalid_Token() { final String output = writer.toString(); Assertions.assertTrue(output.contains("[ERROR]")); Assertions.assertTrue(output.contains( - "HTTP 401 Forbidden: You don't have permission to access this resource.")); + "Forbidden: You don't have permission to access this resource.")); } } diff --git a/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/common/ExceptionHandlerTest.java b/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/common/ExceptionHandlerTest.java index 9484a5473cc0..fc6bf60b5a50 100644 --- a/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/common/ExceptionHandlerTest.java +++ b/tools/dotcms-cli/cli/src/test/java/com/dotcms/cli/common/ExceptionHandlerTest.java @@ -11,6 +11,8 @@ import javax.ws.rs.NotAllowedException; import javax.ws.rs.NotFoundException; import javax.ws.rs.WebApplicationException; +import org.jboss.resteasy.specimpl.BuiltResponse; +import org.junit.Ignore; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -44,32 +46,44 @@ void Test_Handle_WebApplication_Exception() { NotFoundException noise = new NotFoundException("No pineapple Flavor today"); Exception handled = exceptionHandler.handle(noise); Assertions.assertTrue(handled instanceof WebApplicationException); - Assertions.assertTrue(handled.getMessage().contains(config.messages().get(404))); + BuiltResponse response = (BuiltResponse) ((WebApplicationException) handled).getResponse(); + Assertions.assertTrue(response.getReasonPhrase().contains(config.messages().get(404))); + //Assertions.assertTrue(handled.getMessage().contains(config.messages().get(404))); BadRequestException badRequestException = new BadRequestException("LOL"); handled = exceptionHandler.handle(badRequestException); Assertions.assertTrue(handled instanceof WebApplicationException); - Assertions.assertTrue(handled.getMessage().contains(config.messages().get(400))); + response = (BuiltResponse) ((WebApplicationException) handled).getResponse(); + Assertions.assertTrue(response.getReasonPhrase().contains(config.messages().get(400))); + //Assertions.assertTrue(handled.getMessage().contains(config.messages().get(400))); ForbiddenException forbiddenException = new ForbiddenException("LOL"); handled = exceptionHandler.handle(forbiddenException); Assertions.assertTrue(handled instanceof WebApplicationException); - Assertions.assertTrue(handled.getMessage().contains(config.messages().get(403))); + response = (BuiltResponse) ((WebApplicationException) handled).getResponse(); + Assertions.assertTrue(response.getReasonPhrase().contains(config.messages().get(403))); + //Assertions.assertTrue(handled.getMessage().contains(config.messages().get(403))); WebApplicationException unauthorized = new WebApplicationException(401); handled = exceptionHandler.handle(unauthorized); Assertions.assertTrue(handled instanceof WebApplicationException); - Assertions.assertTrue(handled.getMessage().contains(config.messages().get(401))); + response = (BuiltResponse) ((WebApplicationException) handled).getResponse(); + Assertions.assertTrue(response.getReasonPhrase().contains(config.messages().get(401))); + //Assertions.assertTrue(handled.getMessage().contains(config.messages().get(401))); WebApplicationException internalServerError = new WebApplicationException(500); handled = exceptionHandler.handle(internalServerError); Assertions.assertTrue(handled instanceof WebApplicationException); - Assertions.assertTrue(handled.getMessage().contains(config.messages().get(500))); + response = (BuiltResponse) ((WebApplicationException) handled).getResponse(); + Assertions.assertTrue(response.getReasonPhrase().contains(config.messages().get(500))); + //Assertions.assertTrue(handled.getMessage().contains(config.messages().get(500))); NotAllowedException moreNoise = new NotAllowedException("Not Allowed"); handled = exceptionHandler.handle(moreNoise); Assertions.assertTrue(handled instanceof WebApplicationException); - Assertions.assertTrue(handled.getMessage().contains(config.fallback())); + response = (BuiltResponse) ((WebApplicationException) handled).getResponse(); + Assertions.assertTrue(response.getReasonPhrase().contains(config.fallback())); + //Assertions.assertTrue(handled.getMessage().contains(config.fallback())); }