@Test public void test_default_settings() throws Exception { answerHelloWorld(); underTest = HttpConnector.newBuilder().url(serverUrl).build(); assertThat(underTest.baseUrl()).isEqualTo(serverUrl); GetRequest request = new GetRequest("api/issues/search").setMediaType(MediaTypes.PROTOBUF); WsResponse response = underTest.call(request); // verify default timeouts on client assertThat(underTest.okHttpClient().connectTimeoutMillis()).isEqualTo(HttpConnector.DEFAULT_CONNECT_TIMEOUT_MILLISECONDS); assertThat(underTest.okHttpClient().readTimeoutMillis()).isEqualTo(HttpConnector.DEFAULT_READ_TIMEOUT_MILLISECONDS); // verify response assertThat(response.hasContent()).isTrue(); assertThat(response.content()).isEqualTo("hello, world!"); // verify the request received by server RecordedRequest recordedRequest = server.takeRequest(); assertThat(recordedRequest.getMethod()).isEqualTo("GET"); assertThat(recordedRequest.getPath()).isEqualTo("/api/issues/search"); assertThat(recordedRequest.getHeader("Accept")).isEqualTo(MediaTypes.PROTOBUF); assertThat(recordedRequest.getHeader("Accept-Charset")).isEqualTo("UTF-8"); assertThat(recordedRequest.getHeader("User-Agent")).startsWith("okhttp/"); // compression is handled by OkHttp assertThat(recordedRequest.getHeader("Accept-Encoding")).isEqualTo("gzip"); }
@Test public void use_basic_authentication_with_utf8_login_and_password() throws Exception { answerHelloWorld(); String login = "ζθ½"; String password = "εδΈ"; underTest = HttpConnector.newBuilder() .url(serverUrl) .credentials(login, password) .build(); GetRequest request = new GetRequest("api/issues/search"); underTest.call(request); RecordedRequest recordedRequest = server.takeRequest(); // do not use OkHttp Credentials.basic() in order to not use the same code as the code under test String expectedHeader = "Basic " + Base64.getEncoder().encodeToString((login + ":" + password).getBytes(UTF_8)); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo(expectedHeader); }
@Test public void override_timeouts() { underTest = HttpConnector.newBuilder() .url(serverUrl) .readTimeoutMilliseconds(42) .connectTimeoutMilliseconds(74) .build(); assertThat(underTest.okHttpClient().readTimeoutMillis()).isEqualTo(42); assertThat(underTest.okHttpClient().connectTimeoutMillis()).isEqualTo(74); }
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()); }
@Override public void executeOn(Project project, SensorContext context) { Properties reportTaskProps = loadReportTaskProps(); HttpConnector httpConnector = new HttpConnector.Builder() .url(getServerUrl(reportTaskProps)) .credentials( settings.getString(CoreProperties.LOGIN), settings.getString(CoreProperties.PASSWORD)) .build(); WsClient wsClient = new HttpWsClient(httpConnector); String analysisId = getAnalysisId(wsClient, reportTaskProps.getProperty("ceTaskId")); checkQualityGate(wsClient, analysisId); }
public String getHttp(String url, @Nullable String token) { String baseUrl = StringUtils.substringBeforeLast(url, "/"); String path = StringUtils.substringAfterLast(url, "/"); HttpConnector httpConnector = HttpConnector.newBuilder() .userAgent("Scanner for Jenkins") .url(baseUrl) .credentials(token, null) .build(); WsResponse response = httpConnector.call(new GetRequest(path)); response.failIfNotSuccessful(); return response.content(); } }
/** * @since 5.5 */ public static Builder newBuilder() { return new Builder(); }
public SonarFacade(Configuration settings, GitLabPluginConfiguration gitLabPluginConfiguration) { this.gitLabPluginConfiguration = gitLabPluginConfiguration; HttpConnector httpConnector = HttpConnector.newBuilder().url(gitLabPluginConfiguration.baseUrl()) .credentials(settings.get(CoreProperties.LOGIN).orElse(null), settings.get(CoreProperties.PASSWORD).orElse(null)).build(); wsClient = WsClientFactories.getDefault().newClient(httpConnector); }
@Test public void upload_file() throws Exception { answerHelloWorld(); File reportFile = temp.newFile(); FileUtils.write(reportFile, "the report content"); PostRequest request = new PostRequest("api/report/upload") .setParam("project", "theKey") .setPart("report", new PostRequest.Part(MediaTypes.TXT, reportFile)) .setMediaType(MediaTypes.PROTOBUF); underTest = HttpConnector.newBuilder().url(serverUrl).build(); WsResponse response = underTest.call(request); assertThat(response.hasContent()).isTrue(); RecordedRequest recordedRequest = server.takeRequest(); assertThat(recordedRequest.getMethod()).isEqualTo("POST"); assertThat(recordedRequest.getPath()).isEqualTo("/api/report/upload?project=theKey"); String body = IOUtils.toString(recordedRequest.getBody().inputStream()); assertThat(body) .contains("Content-Disposition: form-data; name=\"report\"") .contains("Content-Type: text/plain") .contains("the report content"); }
@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 follow_redirects_post() throws IOException, InterruptedException { MockWebServer server2 = new MockWebServer(); server2.start(); server2.url("").url().toString(); server.enqueue(new MockResponse() .setResponseCode(302) .setHeader("Location", server2.url("").url().toString())); server2.enqueue(new MockResponse() .setResponseCode(200)); underTest = HttpConnector.newBuilder().url(serverUrl).build(); PostRequest request = new PostRequest("api/ce/submit").setParam("projectKey", "project"); WsResponse response = underTest.call(request); RecordedRequest recordedRequest = server2.takeRequest(); assertThat(recordedRequest.getMethod()).isEqualTo("POST"); assertThat(recordedRequest.getBody().readUtf8()).isEqualTo("projectKey=project"); assertThat(response.requestUrl()).isEqualTo(server2.url("").url().toString()); assertThat(response.code()).isEqualTo(200); }
@Test public void send_post_request() throws Exception { answerHelloWorld(); PostRequest request = new PostRequest("api/issues/search") .setParam("severity", "MAJOR") .setMediaType(MediaTypes.PROTOBUF); underTest = HttpConnector.newBuilder().url(serverUrl).build(); WsResponse response = underTest.call(request); // verify response assertThat(response.hasContent()).isTrue(); assertThat(response.content()).isEqualTo("hello, world!"); // verify the request received by server RecordedRequest recordedRequest = server.takeRequest(); assertThat(recordedRequest.getMethod()).isEqualTo("POST"); assertThat(recordedRequest.getPath()).isEqualTo("/api/issues/search"); assertThat(recordedRequest.getBody().readUtf8()).isEqualTo("severity=MAJOR"); assertThat(recordedRequest.getHeader("Accept")).isEqualTo("application/x-protobuf"); }
@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")); } }
/** * Access token replaces the couple {login,password} and is sent through * the login field */ @Test public void use_access_token() throws Exception { answerHelloWorld(); underTest = HttpConnector.newBuilder() .url(serverUrl) .token("theToken") .build(); GetRequest request = new GetRequest("api/issues/search"); underTest.call(request); RecordedRequest recordedRequest = server.takeRequest(); assertThat(recordedRequest.getHeader("Authorization")).isEqualTo(basic("theToken", "")); }