Skip to content

Commit b9f407a

Browse files
committed
Use JsonAssert for request assertions
Closes gh-41
1 parent 1d24061 commit b9f407a

File tree

9 files changed

+27
-12
lines changed

9 files changed

+27
-12
lines changed

api/github/github-api.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies {
1212

1313
testImplementation "org.assertj:assertj-core"
1414
testImplementation "org.mockito:mockito-core"
15+
testImplementation "com.jayway.jsonpath:json-path-assert"
1516
testImplementation "com.squareup.okhttp3:mockwebserver"
1617
}
1718

api/github/src/test/java/com/github/api/GitHubApiTests.java

+15-6
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.Objects;
2525
import java.util.concurrent.TimeUnit;
2626

27+
import com.jayway.jsonassert.JsonAssert;
2728
import okhttp3.mockwebserver.MockResponse;
2829
import okhttp3.mockwebserver.MockWebServer;
2930
import org.junit.jupiter.api.AfterEach;
@@ -32,6 +33,7 @@
3233

3334
import static org.assertj.core.api.Assertions.assertThat;
3435
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
36+
import static org.hamcrest.CoreMatchers.is;
3537

3638
public class GitHubApiTests {
3739

@@ -102,8 +104,12 @@ public void createReleaseWhenValidParametersThenSuccess() throws Exception {
102104
assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/json");
103105
assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json");
104106
assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Bearer %s".formatted(AUTH_TOKEN));
105-
assertThat(recordedRequest.getBody().readString(Charset.defaultCharset()))
106-
.isEqualTo(string("CreateReleaseRequest.json"));
107+
108+
var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset()));
109+
json.assertThat("$.tag_name", is("1.0.0"));
110+
json.assertThat("$.draft", is(false));
111+
json.assertThat("$.prerelease", is(false));
112+
json.assertThat("$.generate_release_notes", is(false));
107113
}
108114

109115
@Test
@@ -120,8 +126,10 @@ public void createMilestoneWhenValidParametersThenSuccess() throws Exception {
120126
assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/json");
121127
assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json");
122128
assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Bearer %s".formatted(AUTH_TOKEN));
123-
assertThat(recordedRequest.getBody().readString(Charset.defaultCharset()))
124-
.isEqualTo(string("CreateMilestoneRequest.json"));
129+
130+
var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset()));
131+
json.assertThat("$.title", is("1.0.0"));
132+
json.assertThat("$.due_on", is("2022-05-04T12:00:00Z"));
125133
}
126134

127135
@Test
@@ -212,8 +220,9 @@ public void closeMilestoneWhenValidParametersThenSuccess() throws Exception {
212220
assertThat(recordedRequest.getPath()).isEqualTo("/repos/spring-projects/spring-security/milestones/191");
213221
assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/json");
214222
assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Bearer %s".formatted(AUTH_TOKEN));
215-
assertThat(recordedRequest.getBody().readString(Charset.defaultCharset()))
216-
.isEqualTo(string("UpdateMilestoneRequest.json"));
223+
224+
var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset()));
225+
json.assertThat("$.state", is("closed"));
217226
}
218227

219228
private static MockResponse json(String path) throws IOException {

api/github/src/test/resources/CreateMilestoneRequest.json

-1
This file was deleted.

api/github/src/test/resources/CreateReleaseRequest.json

-1
This file was deleted.

api/github/src/test/resources/UpdateMilestoneRequest.json

-1
This file was deleted.

api/sagan/sagan-api.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies {
1212

1313
testImplementation "org.assertj:assertj-core"
1414
testImplementation "org.mockito:mockito-core"
15+
testImplementation "com.jayway.jsonpath:json-path-assert"
1516
testImplementation "com.squareup.okhttp3:mockwebserver"
1617
}
1718

api/sagan/src/test/java/io/spring/api/SaganApiTests.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.Comparator;
2626
import java.util.Objects;
2727

28+
import com.jayway.jsonassert.JsonAssert;
2829
import io.spring.api.Release.ReleaseStatus;
2930
import okhttp3.mockwebserver.MockResponse;
3031
import okhttp3.mockwebserver.MockWebServer;
@@ -33,6 +34,7 @@
3334
import org.junit.jupiter.api.Test;
3435

3536
import static org.assertj.core.api.Assertions.assertThat;
37+
import static org.hamcrest.CoreMatchers.is;
3638

3739
/**
3840
* @author Steve Riesenberg
@@ -154,8 +156,13 @@ public void createReleaseWhenValidParametersThenSuccess() throws Exception {
154156
assertThat(recordedRequest.getHeader("Accept")).isNull();
155157
assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json");
156158
assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Basic %s".formatted(AUTH_TOKEN));
157-
assertThat(recordedRequest.getBody().readString(Charset.defaultCharset()))
158-
.isEqualTo(string("CreateReleaseRequest.json"));
159+
160+
var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset()));
161+
json.assertThat("$.version", is("6.1.0"));
162+
json.assertThat("$.referenceDocUrl", is("https://docs.spring.io/spring-security/reference/{version}/index.html"));
163+
json.assertThat("$.apiDocUrl", is("https://docs.spring.io/spring-security/site/docs/{version}/api/"));
164+
json.assertThat("$.status", is("GENERAL_AVAILABILITY"));
165+
json.assertThat("$.current", is(true));
159166
}
160167

161168
@Test

api/sagan/src/test/resources/CreateReleaseRequest.json

-1
This file was deleted.

dependencies/dependencies.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ dependencies {
1414
api "org.assertj:assertj-core:3.25.3"
1515
api "org.mockito:mockito-core:5.11.0"
1616
api "com.squareup.okhttp3:mockwebserver:4.12.0"
17+
api "com.jayway.jsonpath:json-path-assert:2.9.0"
1718
}
1819
}

0 commit comments

Comments
 (0)