91 lines
3.9 KiB
Java
91 lines
3.9 KiB
Java
package org.baeldung.client;
|
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
import static org.junit.Assert.assertThat;
|
|
|
|
import java.io.IOException;
|
|
import java.security.GeneralSecurityException;
|
|
import java.security.cert.X509Certificate;
|
|
import java.util.Timer;
|
|
import java.util.TimerTask;
|
|
|
|
import javax.net.ssl.SSLPeerUnverifiedException;
|
|
|
|
import org.apache.http.HttpResponse;
|
|
import org.apache.http.client.ClientProtocolException;
|
|
import org.apache.http.client.config.RequestConfig;
|
|
import org.apache.http.client.methods.HttpGet;
|
|
import org.apache.http.conn.ClientConnectionManager;
|
|
import org.apache.http.conn.scheme.Scheme;
|
|
import org.apache.http.conn.scheme.SchemeRegistry;
|
|
import org.apache.http.conn.ssl.SSLSocketFactory;
|
|
import org.apache.http.conn.ssl.TrustStrategy;
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
import org.apache.http.impl.client.DefaultHttpClient;
|
|
import org.apache.http.impl.client.HttpClientBuilder;
|
|
import org.apache.http.impl.conn.PoolingClientConnectionManager;
|
|
import org.junit.Ignore;
|
|
import org.junit.Test;
|
|
|
|
public class RawClientLiveTest {
|
|
|
|
// tests
|
|
|
|
@Test
|
|
public final void whenSecuredRestApiIsConsumed_then200OK() throws ClientProtocolException, IOException {
|
|
final CloseableHttpClient httpClient = HttpClientBuilder.create().build();
|
|
|
|
final int timeout = 30; // seconds
|
|
final RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(timeout).setConnectTimeout(timeout).setSocketTimeout(timeout).build();
|
|
final HttpGet getMethod = new HttpGet("http://localhost:8080/spring-security-rest-basic-auth/api/bars/1");
|
|
getMethod.setConfig(requestConfig);
|
|
|
|
final int hardTimeout = 10; // seconds
|
|
final TimerTask task = new TimerTask() {
|
|
@Override
|
|
public void run() {
|
|
if (getMethod != null) {
|
|
getMethod.abort();
|
|
}
|
|
}
|
|
};
|
|
new Timer(true).schedule(task, hardTimeout * 1000);
|
|
|
|
final HttpResponse response = httpClient.execute(getMethod);
|
|
System.out.println("HTTP Status of response: " + response.getStatusLine().getStatusCode());
|
|
}
|
|
|
|
@Test(expected = SSLPeerUnverifiedException.class)
|
|
@Ignore("Only for a server that has HTTPS enabled (on 8443)")
|
|
public final void whenHttpsUrlIsConsumed_thenException() throws ClientProtocolException, IOException {
|
|
final CloseableHttpClient httpClient = HttpClientBuilder.create().build();
|
|
|
|
final String urlOverHttps = "https://localhost:8443/spring-security-rest-basic-auth/api/bars/1";
|
|
final HttpGet getMethod = new HttpGet(urlOverHttps);
|
|
final HttpResponse response = httpClient.execute(getMethod);
|
|
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
|
|
}
|
|
|
|
@Test
|
|
public final void givenAcceptingAllCertificates_whenHttpsUrlIsConsumed_thenException() throws IOException, GeneralSecurityException {
|
|
final TrustStrategy acceptingTrustStrategy = new TrustStrategy() {
|
|
@Override
|
|
public final boolean isTrusted(final X509Certificate[] certificate, final String authType) {
|
|
return true;
|
|
}
|
|
};
|
|
final SSLSocketFactory sf = new SSLSocketFactory(acceptingTrustStrategy, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
|
final SchemeRegistry registry = new SchemeRegistry();
|
|
registry.register(new Scheme("https", 8443, sf));
|
|
final ClientConnectionManager ccm = new PoolingClientConnectionManager(registry);
|
|
|
|
final CloseableHttpClient httpClient = new DefaultHttpClient(ccm);
|
|
|
|
final String urlOverHttps = "https://localhost:8443/spring-security-rest-basic-auth/api/bars/1";
|
|
final HttpGet getMethod = new HttpGet(urlOverHttps);
|
|
final HttpResponse response = httpClient.execute(getMethod);
|
|
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
|
|
}
|
|
|
|
}
|