mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
Do not expose internal exception messages
This commit is contained in:
@@ -115,10 +115,10 @@ class DefaultHookHandler implements HookHandler {
|
|||||||
return error("repository not found");
|
return error("repository not found");
|
||||||
} catch (ExceptionWithContext ex) {
|
} catch (ExceptionWithContext ex) {
|
||||||
LOG.debug("scm exception on hook occurred", ex);
|
LOG.debug("scm exception on hook occurred", ex);
|
||||||
return error(context, ex);
|
return error(context, ex.getMessage());
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LOG.warn("unknown error on hook occurred", ex);
|
LOG.warn("unknown error on hook occurred", ex);
|
||||||
return error(context, ex);
|
return error(context, "unknown error");
|
||||||
} finally {
|
} finally {
|
||||||
environment.clearPendingState();
|
environment.clearPendingState();
|
||||||
TransactionId.clear();
|
TransactionId.clear();
|
||||||
@@ -133,9 +133,9 @@ class DefaultHookHandler implements HookHandler {
|
|||||||
subject.login(bearer);
|
subject.login(bearer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Response error(HgHookContextProvider context, Exception ex) {
|
private Response error(HgHookContextProvider context, String message) {
|
||||||
List<HgHookMessage> messages = new ArrayList<>(context.getHgMessageProvider().getMessages());
|
List<HgHookMessage> messages = new ArrayList<>(context.getHgMessageProvider().getMessages());
|
||||||
messages.add(createErrorMessage(ex.getMessage()));
|
messages.add(createErrorMessage(message));
|
||||||
return new Response(messages, true);
|
return new Response(messages, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ class DefaultHookHandlerTest {
|
|||||||
DefaultHookHandler.Request request = createRequest(RepositoryHookType.POST_RECEIVE);
|
DefaultHookHandler.Request request = createRequest(RepositoryHookType.POST_RECEIVE);
|
||||||
DefaultHookHandler.Response response = send(request);
|
DefaultHookHandler.Response response = send(request);
|
||||||
|
|
||||||
assertError(response, "Something went wrong");
|
assertError(response, "unknown error");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -168,11 +168,8 @@ class DefaultHookHandlerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldSendMessagesOnException() throws IOException {
|
void shouldSendMessagesOnUnknownException() throws IOException {
|
||||||
HgHookMessageProvider messageProvider = new HgHookMessageProvider();
|
mockMessageProviderWithMessages();
|
||||||
messageProvider.sendMessage("Some note");
|
|
||||||
messageProvider.sendMessage("Some error");
|
|
||||||
mockMessageProvider(messageProvider);
|
|
||||||
|
|
||||||
doThrow(new IllegalStateException("Abort it"))
|
doThrow(new IllegalStateException("Abort it"))
|
||||||
.when(hookEventFacade)
|
.when(hookEventFacade)
|
||||||
@@ -181,12 +178,37 @@ class DefaultHookHandlerTest {
|
|||||||
DefaultHookHandler.Request request = createRequest(RepositoryHookType.POST_RECEIVE);
|
DefaultHookHandler.Request request = createRequest(RepositoryHookType.POST_RECEIVE);
|
||||||
DefaultHookHandler.Response response = send(request);
|
DefaultHookHandler.Response response = send(request);
|
||||||
|
|
||||||
|
assertMessages(response, "unknown error");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldSendMessagesOnExceptionWithContext() throws IOException {
|
||||||
|
mockMessageProviderWithMessages();
|
||||||
|
|
||||||
|
doThrow(new TestingException("Exception with Context"))
|
||||||
|
.when(hookEventFacade)
|
||||||
|
.handle("42");
|
||||||
|
|
||||||
|
DefaultHookHandler.Request request = createRequest(RepositoryHookType.POST_RECEIVE);
|
||||||
|
DefaultHookHandler.Response response = send(request);
|
||||||
|
|
||||||
|
assertMessages(response, "Exception with Context");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertMessages(DefaultHookHandler.Response response, String errorMessage) {
|
||||||
List<String> received = response.getMessages()
|
List<String> received = response.getMessages()
|
||||||
.stream()
|
.stream()
|
||||||
.map(HgHookMessage::getMessage)
|
.map(HgHookMessage::getMessage)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
assertThat(received).containsExactly("Some note", "Some error", "Abort it");
|
assertThat(received).containsExactly("Some note", "Some error", errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mockMessageProviderWithMessages() {
|
||||||
|
HgHookMessageProvider messageProvider = new HgHookMessageProvider();
|
||||||
|
messageProvider.sendMessage("Some note");
|
||||||
|
messageProvider.sendMessage("Some error");
|
||||||
|
mockMessageProvider(messageProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user