Skip to content

Commit ffa0c07

Browse files
committed
added simple invalid configuration test
1 parent abd2589 commit ffa0c07

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

client-v2/src/main/java/com/clickhouse/client/api/Client.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,11 @@ public Client build() {
871871
throw new IllegalArgumentException("Username and password (or access token, or SSL authentication) are required");
872872
}
873873

874+
if (this.configuration.containsKey("ssl_authentication") &&
875+
(this.configuration.containsKey("password") || this.configuration.containsKey("access_token"))) {
876+
throw new IllegalArgumentException("Only one of password, access token or SSL authentication can be used per client.");
877+
}
878+
874879
if (this.configuration.containsKey("ssl_authentication") &&
875880
!this.configuration.containsKey(ClickHouseClientOption.SSL_CERTIFICATE.getKey())) {
876881
throw new IllegalArgumentException("SSL authentication requires a client certificate");

client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -384,13 +384,11 @@ public ClassicHttpResponse executeRequest(ClickHouseNode server, Map<String, Obj
384384

385385
private void addHeaders(HttpPost req, Map<String, String> chConfig, Map<String, Object> requestConfig) {
386386
req.addHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE.getMimeType());
387-
if (requestConfig != null) {
388-
if (requestConfig.containsKey(ClickHouseClientOption.FORMAT.getKey())) {
389-
req.addHeader(ClickHouseHttpProto.HEADER_FORMAT, requestConfig.get(ClickHouseClientOption.FORMAT.getKey()));
390-
}
391-
if (requestConfig.containsKey(ClickHouseClientOption.QUERY_ID.getKey())) {
392-
req.addHeader(ClickHouseHttpProto.HEADER_QUERY_ID, requestConfig.get(ClickHouseClientOption.QUERY_ID.getKey()).toString());
393-
}
387+
if (requestConfig.containsKey(ClickHouseClientOption.FORMAT.getKey())) {
388+
req.addHeader(ClickHouseHttpProto.HEADER_FORMAT, requestConfig.get(ClickHouseClientOption.FORMAT.getKey()));
389+
}
390+
if (requestConfig.containsKey(ClickHouseClientOption.QUERY_ID.getKey())) {
391+
req.addHeader(ClickHouseHttpProto.HEADER_QUERY_ID, requestConfig.get(ClickHouseClientOption.QUERY_ID.getKey()).toString());
394392
}
395393
req.addHeader(ClickHouseHttpProto.HEADER_DATABASE, chConfig.get(ClickHouseClientOption.DATABASE.getKey()));
396394
req.addHeader(ClickHouseHttpProto.HEADER_DB_USER, chConfig.get(ClickHouseDefaults.USER.getKey()));

client-v2/src/test/java/com/clickhouse/client/HttpTransportTests.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.util.concurrent.atomic.AtomicInteger;
4444

4545
import static com.github.tomakehurst.wiremock.stubbing.Scenario.STARTED;
46+
import static org.junit.Assert.fail;
4647

4748
public class HttpTransportTests extends BaseIntegrationTest {
4849

@@ -422,6 +423,9 @@ public void testServerSettings() {
422423
}
423424
@Test(groups = { "integration" })
424425
public void testSSLAuthentication() throws Exception {
426+
if (isCloud()) {
427+
return; // Current test is working only with local server because of self-signed certificates.
428+
}
425429
ClickHouseNode server = getSecureServer(ClickHouseProtocol.HTTP);
426430
try (Client client = new Client.Builder().addEndpoint(Protocol.HTTP, "localhost",server.getPort(), true)
427431
.setUsername("default")
@@ -449,4 +453,26 @@ public void testSSLAuthentication() throws Exception {
449453
}
450454
}
451455
}
456+
457+
@Test(groups = { "integration" })
458+
public void testSSLAuthentication_invalidConfig() throws Exception {
459+
if (isCloud()) {
460+
return; // Current test is working only with local server because of self-signed certificates.
461+
}
462+
ClickHouseNode server = getSecureServer(ClickHouseProtocol.HTTP);
463+
try (Client client = new Client.Builder().addEndpoint(Protocol.HTTP, "localhost",server.getPort(), true)
464+
.useSSLAuthentication(true)
465+
.setUsername("some_user")
466+
.setPassword("s3cret")
467+
.setRootCertificate("containers/clickhouse-server/certs/localhost.crt")
468+
.setClientCertificate("some_user.crt")
469+
.setClientKey("some_user.key")
470+
.compressServerResponse(false)
471+
.build()) {
472+
fail("Expected exception");
473+
} catch (IllegalArgumentException e) {
474+
e.printStackTrace();
475+
Assert.assertTrue(e.getMessage().startsWith("Only one of password, access token or SSL authentication"));
476+
}
477+
}
452478
}

0 commit comments

Comments
 (0)