From 956d0864fc9738286e465cee95d45dc75cfef174 Mon Sep 17 00:00:00 2001 From: Tom Roman Date: Sun, 17 Nov 2024 20:00:44 +0000 Subject: [PATCH] chore: Enforce HTTP 1.1 --- .../java/dev/tomr/hcloud/http/HetznerCloudHttpClient.java | 2 ++ .../hcloud/component/http/HttpClientComponentTest.java | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/tomr/hcloud/http/HetznerCloudHttpClient.java b/src/main/java/dev/tomr/hcloud/http/HetznerCloudHttpClient.java index 254208c..0a3874a 100644 --- a/src/main/java/dev/tomr/hcloud/http/HetznerCloudHttpClient.java +++ b/src/main/java/dev/tomr/hcloud/http/HetznerCloudHttpClient.java @@ -88,8 +88,10 @@ public T sendHttpRequest(Class clazz, String en } private HttpRequest createHttpRequest(String uri, RequestVerb requestVerb, String apiKey, String body) { + HttpClient.Version version = HttpClient.Version.HTTP_1_1; HttpRequest.Builder builder = HttpRequest.newBuilder() .uri(URI.create(uri)) + .version(version) .header("Authorization", format("Bearer %s", apiKey)) .header("Content-Type", "application/json"); builder = switch (requestVerb) { diff --git a/src/test/java/dev/tomr/hcloud/component/http/HttpClientComponentTest.java b/src/test/java/dev/tomr/hcloud/component/http/HttpClientComponentTest.java index fde7094..29d8d99 100644 --- a/src/test/java/dev/tomr/hcloud/component/http/HttpClientComponentTest.java +++ b/src/test/java/dev/tomr/hcloud/component/http/HttpClientComponentTest.java @@ -1,11 +1,13 @@ package dev.tomr.hcloud.component.http; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder; import com.github.tomakehurst.wiremock.common.Notifier; import com.github.tomakehurst.wiremock.junit5.WireMockExtension; import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; import com.github.tomakehurst.wiremock.junit5.WireMockTest; +import dev.tomr.hcloud.HetznerCloud; import dev.tomr.hcloud.http.HetznerCloudHttpClient; import dev.tomr.hcloud.http.RequestVerb; import dev.tomr.hcloud.http.exception.HetznerApiException; @@ -14,12 +16,15 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.MockedStatic; import java.io.IOException; +import java.util.List; import static com.github.tomakehurst.wiremock.client.WireMock.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; public class HttpClientComponentTest { @@ -116,7 +121,7 @@ void testHttpClientThrowsHetznerApiExceptionWhenBadJsonResponse() { @Test @DisplayName("HTTP Client handles 204 no content correctly") - void httpClientHandles204NoContent() throws IOException, InterruptedException, IllegalAccessException { + void httpClientHandles204NoContent() { // this test is needed because 204 does not support handling a body // todo refactor how we handle HTTP Status codes we **know** will never supply a body, i.e. 204 - this implementation leaves a lot to be desired wireMockExtension.stubFor(get("/test").willReturn(aResponse().withStatus(204)));