diff --git a/api/github/github-api.gradle b/api/github/github-api.gradle index fb48ff5..c7c66b8 100644 --- a/api/github/github-api.gradle +++ b/api/github/github-api.gradle @@ -12,6 +12,7 @@ dependencies { testImplementation "org.assertj:assertj-core" testImplementation "org.mockito:mockito-core" + testImplementation "com.jayway.jsonpath:json-path-assert" testImplementation "com.squareup.okhttp3:mockwebserver" } diff --git a/api/github/src/test/java/com/github/api/GitHubApiTests.java b/api/github/src/test/java/com/github/api/GitHubApiTests.java index 1f184ae..d879182 100644 --- a/api/github/src/test/java/com/github/api/GitHubApiTests.java +++ b/api/github/src/test/java/com/github/api/GitHubApiTests.java @@ -24,6 +24,7 @@ import java.util.Objects; import java.util.concurrent.TimeUnit; +import com.jayway.jsonassert.JsonAssert; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import org.junit.jupiter.api.AfterEach; @@ -32,6 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.hamcrest.CoreMatchers.is; public class GitHubApiTests { @@ -102,8 +104,12 @@ public void createReleaseWhenValidParametersThenSuccess() throws Exception { assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/json"); assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json"); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Bearer %s".formatted(AUTH_TOKEN)); - assertThat(recordedRequest.getBody().readString(Charset.defaultCharset())) - .isEqualTo(string("CreateReleaseRequest.json")); + + var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset())); + json.assertThat("$.tag_name", is("1.0.0")); + json.assertThat("$.draft", is(false)); + json.assertThat("$.prerelease", is(false)); + json.assertThat("$.generate_release_notes", is(false)); } @Test @@ -120,8 +126,10 @@ public void createMilestoneWhenValidParametersThenSuccess() throws Exception { assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/json"); assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json"); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Bearer %s".formatted(AUTH_TOKEN)); - assertThat(recordedRequest.getBody().readString(Charset.defaultCharset())) - .isEqualTo(string("CreateMilestoneRequest.json")); + + var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset())); + json.assertThat("$.title", is("1.0.0")); + json.assertThat("$.due_on", is("2022-05-04T12:00:00Z")); } @Test @@ -212,8 +220,9 @@ public void closeMilestoneWhenValidParametersThenSuccess() throws Exception { assertThat(recordedRequest.getPath()).isEqualTo("/repos/spring-projects/spring-security/milestones/191"); assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/json"); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Bearer %s".formatted(AUTH_TOKEN)); - assertThat(recordedRequest.getBody().readString(Charset.defaultCharset())) - .isEqualTo(string("UpdateMilestoneRequest.json")); + + var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset())); + json.assertThat("$.state", is("closed")); } private static MockResponse json(String path) throws IOException { diff --git a/api/github/src/test/resources/CreateMilestoneRequest.json b/api/github/src/test/resources/CreateMilestoneRequest.json deleted file mode 100644 index c52a640..0000000 --- a/api/github/src/test/resources/CreateMilestoneRequest.json +++ /dev/null @@ -1 +0,0 @@ -{"due_on":"2022-05-04T12:00:00Z","title":"1.0.0"} \ No newline at end of file diff --git a/api/github/src/test/resources/CreateReleaseRequest.json b/api/github/src/test/resources/CreateReleaseRequest.json deleted file mode 100644 index 36cf8d2..0000000 --- a/api/github/src/test/resources/CreateReleaseRequest.json +++ /dev/null @@ -1 +0,0 @@ -{"tag_name":"1.0.0","draft":false,"prerelease":false,"generate_release_notes":false} \ No newline at end of file diff --git a/api/github/src/test/resources/UpdateMilestoneRequest.json b/api/github/src/test/resources/UpdateMilestoneRequest.json deleted file mode 100644 index 5308a2b..0000000 --- a/api/github/src/test/resources/UpdateMilestoneRequest.json +++ /dev/null @@ -1 +0,0 @@ -{"state":"closed"} \ No newline at end of file diff --git a/api/sagan/sagan-api.gradle b/api/sagan/sagan-api.gradle index 3e51f49..09ea671 100644 --- a/api/sagan/sagan-api.gradle +++ b/api/sagan/sagan-api.gradle @@ -12,6 +12,7 @@ dependencies { testImplementation "org.assertj:assertj-core" testImplementation "org.mockito:mockito-core" + testImplementation "com.jayway.jsonpath:json-path-assert" testImplementation "com.squareup.okhttp3:mockwebserver" } diff --git a/api/sagan/src/test/java/io/spring/api/SaganApiTests.java b/api/sagan/src/test/java/io/spring/api/SaganApiTests.java index 84e4e33..6a2fbcb 100644 --- a/api/sagan/src/test/java/io/spring/api/SaganApiTests.java +++ b/api/sagan/src/test/java/io/spring/api/SaganApiTests.java @@ -25,6 +25,7 @@ import java.util.Comparator; import java.util.Objects; +import com.jayway.jsonassert.JsonAssert; import io.spring.api.Release.ReleaseStatus; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; @@ -33,6 +34,7 @@ import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.CoreMatchers.is; /** * @author Steve Riesenberg @@ -154,8 +156,13 @@ public void createReleaseWhenValidParametersThenSuccess() throws Exception { assertThat(recordedRequest.getHeader("Accept")).isNull(); assertThat(recordedRequest.getHeader("Content-Type")).isEqualTo("application/json"); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo("Basic %s".formatted(AUTH_TOKEN)); - assertThat(recordedRequest.getBody().readString(Charset.defaultCharset())) - .isEqualTo(string("CreateReleaseRequest.json")); + + var json = JsonAssert.with(recordedRequest.getBody().readString(Charset.defaultCharset())); + json.assertThat("$.version", is("6.1.0")); + json.assertThat("$.referenceDocUrl", is("https://docs.spring.io/spring-security/reference/{version}/index.html")); + json.assertThat("$.apiDocUrl", is("https://docs.spring.io/spring-security/site/docs/{version}/api/")); + json.assertThat("$.status", is("GENERAL_AVAILABILITY")); + json.assertThat("$.current", is(true)); } @Test diff --git a/api/sagan/src/test/resources/CreateReleaseRequest.json b/api/sagan/src/test/resources/CreateReleaseRequest.json deleted file mode 100644 index 740b9ff..0000000 --- a/api/sagan/src/test/resources/CreateReleaseRequest.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"6.1.0","referenceDocUrl":"https://docs.spring.io/spring-security/reference/{version}/index.html","apiDocUrl":"https://docs.spring.io/spring-security/site/docs/{version}/api/","status":"GENERAL_AVAILABILITY","current":true} \ No newline at end of file diff --git a/dependencies/dependencies.gradle b/dependencies/dependencies.gradle index 1e5fedf..0f76f51 100644 --- a/dependencies/dependencies.gradle +++ b/dependencies/dependencies.gradle @@ -14,5 +14,6 @@ dependencies { api "org.assertj:assertj-core:3.25.3" api "org.mockito:mockito-core:5.11.0" api "com.squareup.okhttp3:mockwebserver:4.12.0" + api "com.jayway.jsonpath:json-path-assert:2.9.0" } }