From 7c744e514add7f4a05f4d088a2f5f69e862851a6 Mon Sep 17 00:00:00 2001 From: Braden Miller Date: Wed, 9 Apr 2025 11:46:23 -0400 Subject: [PATCH 1/6] First Test --- .../org/zalando/problem/SE4560FirstTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 problem/src/test/java/org/zalando/problem/SE4560FirstTest.java diff --git a/problem/src/test/java/org/zalando/problem/SE4560FirstTest.java b/problem/src/test/java/org/zalando/problem/SE4560FirstTest.java new file mode 100644 index 0000000..0535ba5 --- /dev/null +++ b/problem/src/test/java/org/zalando/problem/SE4560FirstTest.java @@ -0,0 +1,54 @@ +package org.zalando.problem; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +import java.net.URI; +import java.net.URISyntaxException; + +public class SE4560FirstTest { + // Bottom up test with status and problem + @Test + void StatusTest() { + Status status = Status.valueOf(404); + assertEquals(404, status.getStatusCode()); + assertEquals("Not Found", status.getReasonPhrase()); + } + @Test + void ProblemTest() { + Status status = Status.valueOf(404); + Problem problem = Problem.valueOf(status); + assertEquals(status, problem.getStatus()); + } + @Test + void ProblemDetailTest() { + Status status = Status.valueOf(404); + Problem problem = Problem.valueOf(status, "detail"); + assertEquals("detail", problem.getDetail()); + } + @Test + void ProblemInstanceTest() { + Status status = Status.valueOf(404); + try { + URI uri = new URI("https://www.example.com/path?query=value#fragment"); + Problem problem = Problem.valueOf(status, uri); + assertEquals(uri, problem.getInstance()); + } + catch (URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } + @Test + void ProblemDetailInstanceTest() { + Status status = Status.valueOf(404); + try { + URI uri = new URI("https://www.example.com/path?query=value#fragment"); + Problem problem = Problem.valueOf(status, "detail", uri); + assertEquals("detail", problem.getDetail()); + assertEquals(uri, problem.getInstance()); + } + catch (URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } +} From a599bbc9ab473fb1982e5705a4573eb4052334a0 Mon Sep 17 00:00:00 2001 From: Braden Miller Date: Wed, 9 Apr 2025 11:46:53 -0400 Subject: [PATCH 2/6] Second Test --- .../org/zalando/problem/SE4560SecondTest.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 problem/src/test/java/org/zalando/problem/SE4560SecondTest.java diff --git a/problem/src/test/java/org/zalando/problem/SE4560SecondTest.java b/problem/src/test/java/org/zalando/problem/SE4560SecondTest.java new file mode 100644 index 0000000..7b52d01 --- /dev/null +++ b/problem/src/test/java/org/zalando/problem/SE4560SecondTest.java @@ -0,0 +1,49 @@ +package org.zalando.problem; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +import java.net.URI; +import java.net.URISyntaxException; + +public class SE4560SecondTest { + // Class partition test with different types of problems + @Test + void BuildTypeTest() { + try { + URI probURI = new URI("https://www.example.com/path?query=value#fragment"); + Problem prob = Problem.builder().withType(probURI).build(); + assertEquals(probURI, prob.getType()); + } + catch(URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } + @Test + void BuildTitleTest() { + Problem prob = Problem.builder().withTitle("Title").build(); + assertEquals("Title", prob.getTitle()); + } + @Test + void BuildStatusTest() { + Status status = Status.valueOf(504); + Problem prob = Problem.builder().withStatus(status).build(); + assertEquals(status, prob.getStatus()); + } + @Test + void BuildDetailTest() { + Problem prob = Problem.builder().withDetail("detail").build(); + assertEquals("detail", prob.getDetail()); + } + @Test + void BuildInstanceTest() { + try { + URI probURI = new URI("https://www.example.com/path?query=value#fragment"); + Problem prob = Problem.builder().withInstance(probURI).build(); + assertEquals(probURI, prob.getInstance()); + } + catch(URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } +} From 7107453bef22a793d7cb4b01ba9129e371c26fec Mon Sep 17 00:00:00 2001 From: Braden Miller Date: Wed, 9 Apr 2025 11:47:32 -0400 Subject: [PATCH 3/6] Third Test --- .../org/zalando/problem/SE4560ThirdTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 problem/src/test/java/org/zalando/problem/SE4560ThirdTest.java diff --git a/problem/src/test/java/org/zalando/problem/SE4560ThirdTest.java b/problem/src/test/java/org/zalando/problem/SE4560ThirdTest.java new file mode 100644 index 0000000..94cdf8c --- /dev/null +++ b/problem/src/test/java/org/zalando/problem/SE4560ThirdTest.java @@ -0,0 +1,30 @@ +package org.zalando.problem; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class SE4560ThirdTest { + // Class partition test with different status inputs + @Test + void Status504Test() { + Status status = Status.valueOf(504); + assertEquals(504, status.getStatusCode()); + assertEquals("Gateway Timeout", status.getReasonPhrase()); + } + @Test + void Status400Test() { + Status status = Status.valueOf(400); + assertEquals(400, status.getStatusCode()); + assertEquals("Bad Request", status.getReasonPhrase()); + } + @Test + void StatusStringTest() { + Status status = Status.valueOf(504); + assertEquals("504 Gateway Timeout", status.toString()); + } + + @Test + void StatusErrorTest() { + assertThrows(IllegalArgumentException.class, () -> {Status.valueOf(999);}); + } +} From d02f09e7c4e27c728922098210258a6405347d0d Mon Sep 17 00:00:00 2001 From: Braden Miller Date: Wed, 9 Apr 2025 11:47:47 -0400 Subject: [PATCH 4/6] Fourth Test --- .../org/zalando/problem/SE4560FourthTest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 problem/src/test/java/org/zalando/problem/SE4560FourthTest.java diff --git a/problem/src/test/java/org/zalando/problem/SE4560FourthTest.java b/problem/src/test/java/org/zalando/problem/SE4560FourthTest.java new file mode 100644 index 0000000..dcf2df7 --- /dev/null +++ b/problem/src/test/java/org/zalando/problem/SE4560FourthTest.java @@ -0,0 +1,28 @@ +package org.zalando.problem; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +public class SE4560FourthTest { + // Class partition test with ThrowableProblem's getMessage() method + @Test + void ThrowableEmptyTest() { + ThrowableProblem prob = Problem.builder().build(); + assertEquals("", prob.getMessage()); + } + @Test + void ThrowableTitleTest() { + ThrowableProblem prob = Problem.builder().withTitle("Title").build(); + assertEquals("Title", prob.getMessage()); + } + @Test + void ThrowableDetailTest() { + ThrowableProblem prob = Problem.builder().withDetail("Detail").build(); + assertEquals("Detail", prob.getMessage()); + } + @Test + void ThrowableMessageTest() { + ThrowableProblem prob = Problem.builder().withDetail("Detail").withTitle("Title").build(); + assertEquals("Title: Detail", prob.getMessage()); + } +} From f41429f65a07783725c92e92e626326050b6e961 Mon Sep 17 00:00:00 2001 From: Braden Miller Date: Wed, 9 Apr 2025 11:48:05 -0400 Subject: [PATCH 5/6] Fifth Test --- .../org/zalando/problem/SE4560FifthTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 problem/src/test/java/org/zalando/problem/SE4560FifthTest.java diff --git a/problem/src/test/java/org/zalando/problem/SE4560FifthTest.java b/problem/src/test/java/org/zalando/problem/SE4560FifthTest.java new file mode 100644 index 0000000..c93a0d0 --- /dev/null +++ b/problem/src/test/java/org/zalando/problem/SE4560FifthTest.java @@ -0,0 +1,56 @@ +package org.zalando.problem; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +import java.net.URI; +import java.net.URISyntaxException; + +public class SE4560FifthTest { + // Bottom up test with status, uri, and Problem's toString() method + @Test + void StatusStringTest() { + Status status = Status.valueOf(404); + assertEquals("404 Not Found", status.toString()); + } + @Test + void ProblemURITest() { + try { + URI uri = new URI("https://www.example.com/path?query=value#fragment"); + Problem prob = Problem.builder().withType(uri).build(); + assertEquals(uri, prob.getType()); + } + catch (URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } + @Test + void ProblemStringStatusTest() { + Status status = Status.valueOf(404); + Problem prob = Problem.builder().withStatus(status).withTitle(status.getReasonPhrase()).build(); + assertEquals("about:blank{404, Not Found}", Problem.toString(prob)); + } + @Test + void ProblemTypeStringTest() { + try { + URI uri = new URI("https://www.example.com/path?query=value#fragment"); + Problem prob = Problem.builder().withType(uri).build(); + assertEquals("https://www.example.com/path?query=value#fragment{}", Problem.toString(prob)); + } + catch (URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } + @Test + void ProblemTypeStatusStringTest() { + try { + URI uri = new URI("https://www.example.com/path?query=value#fragment"); + Status status = Status.valueOf(404); + Problem prob = Problem.builder().withType(uri).withStatus(status).withTitle(status.getReasonPhrase()).build(); + assertEquals("https://www.example.com/path?query=value#fragment{404, Not Found}", Problem.toString(prob)); + } + catch (URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + } + } +} From e5157a7fae18a76368de4bd3dbdcecc9b95a982a Mon Sep 17 00:00:00 2001 From: Braden Miller Date: Wed, 9 Apr 2025 11:48:20 -0400 Subject: [PATCH 6/6] Sixth Test --- .../org/zalando/problem/SE4560SixthTest.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 problem/src/test/java/org/zalando/problem/SE4560SixthTest.java diff --git a/problem/src/test/java/org/zalando/problem/SE4560SixthTest.java b/problem/src/test/java/org/zalando/problem/SE4560SixthTest.java new file mode 100644 index 0000000..83b295a --- /dev/null +++ b/problem/src/test/java/org/zalando/problem/SE4560SixthTest.java @@ -0,0 +1,81 @@ +package org.zalando.problem; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +import java.net.URI; +import java.net.URISyntaxException; + + +public class SE4560SixthTest { + // Class partition test using ThrowableProblem for Problem's toString() method + @Test + void ThrowableEmptyStringTest() { + ThrowableProblem prob = Problem.builder().build(); + assertEquals("about:blank{}", prob.toString()); + } + @Test + void ThrowableStatusStringTest() { + Status status = Status.valueOf(404); + ThrowableProblem prob = Problem.builder().withStatus(status).build(); + assertEquals("about:blank{404}", prob.toString()); + } + @Test + void ThrowableTitleStringTest() { + Status status = Status.valueOf(404); + ThrowableProblem prob = Problem.builder().withTitle(status.getReasonPhrase()).build(); + assertEquals("about:blank{Not Found}", prob.toString()); + } + @Test + void ThrowableDetailStringTest() { + ThrowableProblem prob = Problem.builder().withDetail("Detail").build(); + assertEquals("about:blank{Detail}", prob.toString()); + } + @Test + void ThrowableInstanceStringTest() { + try { + URI instance = new URI("https://www.example.com/path?query=value#fragment"); + ThrowableProblem prob = Problem.builder().withInstance(instance).build(); + assertEquals("about:blank{instance=https://www.example.com/path?query=value#fragment}", prob.toString()); + } + catch(URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + + } + } + @Test + void ThrowableParameterStringTest() { + ThrowableProblem prob = Problem.builder().with("key", "value").build(); + assertEquals("about:blank{key=value}", prob.toString()); + } + @Test + void ThrowableTypeStringTest() { + try { + URI type = new URI("https://www.example.com/path?query=value#fragment"); + ThrowableProblem prob = Problem.builder().withType(type).build(); + assertEquals("https://www.example.com/path?query=value#fragment{}", prob.toString()); + } + catch(URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + + } + } + @Test + void ThrowableAllStringTest() { + try { + URI type = new URI("https://www.example.com/path?query=value#fragment"); + URI instance = new URI("https://www.example.com/path?query=value#fragment"); + Status status = Status.valueOf(404); + ThrowableProblem prob = Problem.builder() + .withStatus(status).withTitle(status.getReasonPhrase()).withDetail("Detail").withInstance(instance).with("key", "value").withType(type) + .build(); + assertEquals( + "https://www.example.com/path?query=value#fragment{404, Not Found, Detail, instance=https://www.example.com/path?query=value#fragment, key=value}", + prob.toString()); + } + catch(URISyntaxException error) { + System.err.println("Invalid URI syntax: " + error.getMessage()); + + } + } +}