diff --git a/providers/jikkou-provider-kafka-connect/pom.xml b/providers/jikkou-provider-kafka-connect/pom.xml
index 4975fb29f..687a8f58e 100644
--- a/providers/jikkou-provider-kafka-connect/pom.xml
+++ b/providers/jikkou-provider-kafka-connect/pom.xml
@@ -65,6 +65,12 @@
1.21.4
test
+
+ com.squareup.okhttp3
+ mockwebserver
+ ${mockwebserver.version}
+ test
+
diff --git a/providers/jikkou-provider-kafka-connect/src/main/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactory.java b/providers/jikkou-provider-kafka-connect/src/main/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactory.java
index dbe83ced8..c6e940b38 100644
--- a/providers/jikkou-provider-kafka-connect/src/main/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactory.java
+++ b/providers/jikkou-provider-kafka-connect/src/main/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactory.java
@@ -73,7 +73,7 @@ public static KafkaConnectApi create(@NotNull KafkaConnectClientConfig config,
@NotNull
private static String getAuthorizationHeader(KafkaConnectClientConfig config) {
- String basicAuthInfo = config.basicAuthUser() + ":" + config.basicAuthPassword();
+ String basicAuthInfo = config.basicAuthUser().get() + ":" + config.basicAuthPassword().get();
return "Basic " + Encoding.BASE64.encode(basicAuthInfo.getBytes(StandardCharsets.UTF_8));
}
}
diff --git a/providers/jikkou-provider-kafka-connect/src/test/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactoryTest.java b/providers/jikkou-provider-kafka-connect/src/test/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactoryTest.java
new file mode 100644
index 000000000..e6f082390
--- /dev/null
+++ b/providers/jikkou-provider-kafka-connect/src/test/java/io/jikkou/kafka/connect/api/KafkaConnectApiFactoryTest.java
@@ -0,0 +1,69 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ * Copyright (c) The original authors
+ *
+ * Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
+ */
+package io.jikkou.kafka.connect.api;
+
+import io.jikkou.core.config.Configuration;
+import io.jikkou.http.client.ssl.SSLConfig;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+import mockwebserver3.MockResponse;
+import mockwebserver3.MockWebServer;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+class KafkaConnectApiFactoryTest {
+
+ private static MockWebServer mockServer = new MockWebServer();
+
+ @BeforeAll
+ static void beforeAll() throws IOException {
+ mockServer = new MockWebServer();
+ mockServer.start();
+ }
+
+ @AfterAll
+ static void afterAll() throws IOException {
+ mockServer.close();
+ }
+
+ @Test
+ @DisplayName("Should build Authorization header from actual basicAuth credentials")
+ void shouldBuildBasicAuthHeaderFromActualCredentials() throws InterruptedException {
+ // Given
+ mockServer.enqueue(new MockResponse.Builder()
+ .code(200)
+ .addHeader("Content-Type", "application/json")
+ .body("[]")
+ .build());
+ KafkaConnectClientConfig config = new KafkaConnectClientConfig(
+ "test-cluster",
+ String.format("http://%s:%s", mockServer.getHostName(), mockServer.getPort()),
+ AuthMethod.BASICAUTH,
+ () -> "alice",
+ () -> "secret",
+ () -> SSLConfig.from(Configuration.empty()),
+ false
+ );
+
+ // When
+ try (KafkaConnectApi api = KafkaConnectApiFactory.create(config)) {
+ api.listConnectors();
+ }
+
+ // Then
+ String authorization = mockServer.takeRequest().getHeaders().get("Authorization");
+ String expectedCredentials = Base64.getEncoder()
+ .encodeToString("alice:secret".getBytes(StandardCharsets.UTF_8));
+ // result should correspond to base64 encoded string "alice:secret" prefixed with "Basic"
+ Assertions.assertEquals("Basic " + expectedCredentials, authorization,
+ "Authorization header must contain the base64-encoded credentials");
+ }
+}