Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ethereum/evmtool/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ dependencies {
testImplementation 'org.assertj:assertj-core'
testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation 'org.mockito:mockito-core'
testImplementation 'org.mockito:mockito-junit-jupiter'

testRuntimeOnly 'org.junit.vintage:junit-vintage-engine'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public void disposeTracer(final OperationTracer tracer) {
t.printStackTrace(ps);
ObjectNode json = objectMapper.createObjectNode();
json.put("error", t.getMessage());
json.put("stacktrace", baos.toString(StandardCharsets.UTF_8));
json.put("stacktrace", baos.toString(StandardCharsets.UTF_8).replaceAll("\\s", " "));

t.printStackTrace(System.out);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package org.hyperledger.besu.evmtool;
Comment thread
shemnon marked this conversation as resolved.

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import com.fasterxml.jackson.databind.ObjectMapper;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.http.HttpServerResponse;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
class T8nServerSubCommandTest {

@Mock HttpServerRequest httpServerRequest;

@Mock(answer = Answers.RETURNS_SELF)
HttpServerResponse httpServerResponse;

@Test
void exceptionEncodedProperlyInJSON() {
T8nServerSubCommand subject = new T8nServerSubCommand();
ObjectMapper objectMapper = new ObjectMapper();

when(httpServerRequest.response()).thenReturn(httpServerResponse);

// Should trigger a NPE within the try block.
subject.handleT8nRequest(httpServerRequest, objectMapper, null, null);

ArgumentCaptor<Integer> responseCodeCaptor = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<String> responseStringCaptor = ArgumentCaptor.forClass(String.class);

verify(httpServerResponse).setStatusCode(responseCodeCaptor.capture());
verify(httpServerResponse).end(responseStringCaptor.capture());

System.out.println(responseCodeCaptor.getValue());
System.out.println(responseStringCaptor.getValue());
Comment thread
shemnon marked this conversation as resolved.
Outdated
assertThat(responseCodeCaptor.getValue()).isEqualTo(500);
assertThat(responseStringCaptor.getValue()).doesNotContain("\\t");
}
}