diff --git a/src/main/java/org/juv25d/http/HttpResponse.java b/src/main/java/org/juv25d/http/HttpResponse.java index adf9c76e..004b3c1a 100644 --- a/src/main/java/org/juv25d/http/HttpResponse.java +++ b/src/main/java/org/juv25d/http/HttpResponse.java @@ -11,10 +11,10 @@ public class HttpResponse { private int statusCode; private String statusText; - private Map headers; + private final Map headers; private byte[] body; - public HttpResponse(){ + public HttpResponse() { this.statusCode = 200; this.statusText = "OK"; this.headers = new LinkedHashMap<>(); @@ -23,8 +23,8 @@ public HttpResponse(){ public HttpResponse(int statusCode, String statusText, Map headers, byte[] body) { this.statusCode = statusCode; - this.statusText = statusText; - this.headers = headers != null ? new LinkedHashMap<>(headers) : new LinkedHashMap<>(); + this.statusText = Objects.requireNonNull(statusText, "statusText must not be null"); + this.headers = new LinkedHashMap<>(headers != null ? headers : Map.of()); this.body = body != null ? body.clone() : new byte[0]; } diff --git a/src/test/java/org/juv25d/http/HttpResponseTest.java b/src/test/java/org/juv25d/http/HttpResponseTest.java new file mode 100644 index 00000000..3ca2e7d6 --- /dev/null +++ b/src/test/java/org/juv25d/http/HttpResponseTest.java @@ -0,0 +1,25 @@ +package org.juv25d.http; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; + +class HttpResponseTest { + + @Test + void defaultConstructor_hasSafeDefaults_andSetHeaderDoesNotThrow() { + HttpResponse response = new HttpResponse(); + + assertThat(response.statusCode()).isEqualTo(200); + assertThat(response.statusText()).isEqualTo("OK"); + assertThat(response.headers()).isNotNull(); + assertThat(response.body()).isNotNull(); + assertThat(response.body()).isEmpty(); + + assertThatCode(() -> response.setHeader("Content-Type", "text/plain")) + .doesNotThrowAnyException(); + + assertThat(response.headers()).containsEntry("Content-Type", "text/plain"); + } +}