Skip to content

Commit

Permalink
Fix t8n encoding issue
Browse files Browse the repository at this point in the history
When sending a stack in json fields strip out the newlines and tabs.

Signed-off-by: Danno Ferrin <[email protected]>
  • Loading branch information
shemnon committed Sep 25, 2023
1 parent 9d7ee2b commit 9a98755
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
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;

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());
assertThat(responseCodeCaptor.getValue()).isEqualTo(500);
assertThat(responseStringCaptor.getValue()).doesNotContain("\\t");
}
}

0 comments on commit 9a98755

Please sign in to comment.