Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions providers/jikkou-provider-kafka-connect/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@
<version>1.21.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>${mockwebserver.version}</version>
<scope>test</scope>
</dependency>
<!-- END dependencies for test -->
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}
Original file line number Diff line number Diff line change
@@ -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");
}
}
Loading