@Test public void use_proxy_authentication_wrong_crendentials() throws Exception { try (MockWebServer proxy = new MockWebServer()) { proxy.start(); underTest = HttpConnector.newBuilder() .url(serverUrl) .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy.getHostName(), proxy.getPort()))) .proxyCredentials("theProxyLogin", "wrongPassword") .build(); GetRequest request = new GetRequest("api/issues/search"); proxy.enqueue(new MockResponse().setResponseCode(407)); proxy.enqueue(new MockResponse().setResponseCode(407)); proxy.enqueue(new MockResponse().setResponseCode(407)); underTest.call(request); RecordedRequest recordedRequest = proxy.takeRequest(); assertThat(recordedRequest.getHeader("Proxy-Authorization")).isNull(); recordedRequest = proxy.takeRequest(); assertThat(recordedRequest.getHeader("Proxy-Authorization")).isEqualTo(basic("theProxyLogin", "wrongPassword")); assertThat(proxy.getRequestCount()).isEqualTo(2); } }
@Test public void use_proxy_authentication() throws Exception { try (MockWebServer proxy = new MockWebServer()) { proxy.start(); underTest = HttpConnector.newBuilder() .url(serverUrl) .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy.getHostName(), proxy.getPort()))) .proxyCredentials("theProxyLogin", "theProxyPassword") .build(); GetRequest request = new GetRequest("api/issues/search"); proxy.enqueue(new MockResponse().setResponseCode(407)); proxy.enqueue(new MockResponse().setBody("OK!")); underTest.call(request); RecordedRequest recordedRequest = proxy.takeRequest(); assertThat(recordedRequest.getHeader("Proxy-Authorization")).isNull(); recordedRequest = proxy.takeRequest(); assertThat(recordedRequest.getHeader("Proxy-Authorization")).isEqualTo(basic("theProxyLogin", "theProxyPassword")); } }
private WsClient createSonarClient() { String hostUrl = removeEnd(mySonarServerConfig.getHostUrl(), "/"); CertificateManager certificateManager = CertificateManager.getInstance(); HttpConnector.Builder connectorBuilder = HttpConnector.newBuilder() .readTimeoutMilliseconds(READ_TIMEOUT_IN_MILLISECONDS) .connectTimeoutMilliseconds(CONNECT_TIMEOUT_IN_MILLISECONDS) .url(hostUrl) .setTrustManager(ConfirmingTrustManager.createForStorage(certificateManager.getCacertsPath(), certificateManager.getPassword())); if (!mySonarServerConfig.isAnonymous()) { if (StringUtils.isNotBlank(mySonarServerConfig.loadToken())) { // https://sonarqube.com/api/user_tokens/search connectorBuilder.token(mySonarServerConfig.getToken()); mySonarServerConfig.clearToken(); } else { mySonarServerConfig.loadPassword(); connectorBuilder.credentials(mySonarServerConfig.getUser(), mySonarServerConfig.getPassword()); mySonarServerConfig.clearPassword(); } } Optional<Proxy> proxy = getIntelliJProxyFor(hostUrl); if (proxy.isPresent()) { HttpConfigurable proxySettings = HttpConfigurable.getInstance(); connectorBuilder.proxy(proxy.get()); if (proxySettings.PROXY_AUTHENTICATION) { connectorBuilder.proxyCredentials(proxySettings.getProxyLogin(), proxySettings.getPlainProxyPassword()); } } return WsClientFactories.getDefault().newClient(connectorBuilder.build()); }