Skip to content

Commit

Permalink
fix NPE in json replace filter
Browse files Browse the repository at this point in the history
  • Loading branch information
sokomishalov committed Dec 9, 2021
1 parent 01c8a81 commit cd7470a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,12 @@ public BodyFilter replace(final UnaryOperator<String> replacementFunction) {
return filter(context -> context.map(path, (node, config) -> node == null ? NullNode.getInstance() : new TextNode(replacementFunction.apply(node.toString()))));
}

public BodyFilter replace(
final Pattern pattern, final String replacement) {

public BodyFilter replace(final Pattern pattern, final String replacement) {
return filter(context -> context.map(path, (node, config) -> {
if (node == null) {
return NullNode.getInstance();
}

final Matcher matcher = pattern.matcher(node.toString());

if (matcher.find()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.zalando.logbook.json;

import com.fasterxml.jackson.databind.node.DoubleNode;
import com.google.common.io.Resources;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.Configuration.Defaults;
Expand All @@ -10,6 +9,7 @@
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
import com.jayway.jsonpath.spi.mapper.MappingProvider;

import lombok.SneakyThrows;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.zalando.logbook.BodyFilter;
Expand All @@ -28,13 +28,14 @@
import static org.zalando.logbook.json.JsonBodyFilters.accessToken;
import static org.zalando.logbook.json.JsonPathBodyFilters.jsonPath;

@SuppressWarnings("UnstableApiUsage")
class JsonPathBodyFiltersTest {

private final String type = "application/json";
private final String student;

@SuppressWarnings("UnstableApiUsage")
JsonPathBodyFiltersTest() throws IOException {
@SneakyThrows
JsonPathBodyFiltersTest() {
this.student = Resources.toString(getResource("student.json"), UTF_8);
}

Expand Down Expand Up @@ -268,4 +269,14 @@ void shouldReturnSameBodyWhenBodyIsInvalidJson() {

assertThat(actual).isEqualTo(invalidBody);
}

@Test
void shouldNotFailWhenThereAreNullNodes() {
String invalidBody = "{\"name\":null}";
final BodyFilter unit = jsonPath("$.name").replace(compile("\\s+"), "XXX");

String actual = unit.filter(type, invalidBody);

assertThat(actual).isEqualTo(invalidBody);
}
}

0 comments on commit cd7470a

Please sign in to comment.