Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • ozg-cloud/app/document-manager
1 result
Select Git revision
Show changes
Commits on Source (5)
......@@ -31,13 +31,11 @@ import org.apache.hc.client5.http.impl.auth.CredentialsProviderBuilder;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
import org.apache.hc.client5.http.impl.routing.DefaultProxyRoutePlanner;
import org.apache.hc.client5.http.io.HttpClientConnectionManager;
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
import org.apache.hc.core5.http.HttpHost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.ssl.NoSuchSslBundleException;
import org.springframework.boot.ssl.SslBundles;
......@@ -47,14 +45,15 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestClient;
import lombok.AllArgsConstructor;
@AllArgsConstructor
@Configuration
@ConditionalOnProperty("ozgcloud.bescheid.smart-documents.url")
class SmartDocumentsConfiguration {
@Autowired
private SmartDocumentsProperties properties;
@Autowired
private SslBundles sslBundles;
private final SmartDocumentsProperties properties;
private final SslBundles sslBundles;
@Bean("smartDocuments")
RestClient smartDocumentsRestClient() {
......@@ -72,17 +71,17 @@ class SmartDocumentsConfiguration {
return createNoProxyHttpClient();
}
HttpClientBuilder createDefulatHttpClientBuilder() {
private HttpClientBuilder createDefaultHttpClientBuilder() {
return HttpClients.custom()
.setConnectionManager(createConnectionManagerWithClientCertificateIfConfigured());
}
CloseableHttpClient createNoProxyHttpClient() {
return createDefulatHttpClientBuilder().build();
return createDefaultHttpClientBuilder().build();
}
CloseableHttpClient createHttpClientUsingProxy() {
return createDefulatHttpClientBuilder()
return createDefaultHttpClientBuilder()
.setRoutePlanner(createProxyRoutePlanner())
.setDefaultCredentialsProvider(createProxyCredentialsProvider())
.build();
......@@ -92,7 +91,7 @@ class SmartDocumentsConfiguration {
return new DefaultProxyRoutePlanner(new HttpHost(properties.getProxy().getHost(), properties.getProxy().getPort()));
}
CredentialsProvider createProxyCredentialsProvider() {
private CredentialsProvider createProxyCredentialsProvider() {
var host = properties.getProxy().getHost();
var port = properties.getProxy().getPort();
var username = properties.getProxy().getUsername();
......
......@@ -41,33 +41,28 @@ class SmartDocumentsConfigurationTest {
private SslBundles sslBundles;
@Nested
class TestCreateProxyCredentialsProvider {
class TestBuildHttpClient {
private final CloseableHttpClient proxyHttpClient = HttpClients.createDefault();
private final CloseableHttpClient nonProxyHttpClient = HttpClients.createDefault();
private final String user = "max";
private final String password = "max2";
private final String host = "test-proxy.local";
private final int port = 8080;
private final ProxyConfiguration proxyConfiguration = new ProxyConfiguration();
@Test
void shouldReturnProxyHttpClient() {
doReturn(proxyHttpClient).when(smartDocumentsConfiguration).createHttpClientUsingProxy();
when(properties.getProxy()).thenReturn(new ProxyConfiguration());
@BeforeEach
void setUp() {
proxyConfiguration.setHost(host);
proxyConfiguration.setPort(port);
proxyConfiguration.setUsername(user);
proxyConfiguration.setPassword(password);
when(properties.getProxy()).thenReturn(proxyConfiguration);
var httpClient = smartDocumentsConfiguration.buildHttpClient();
assertThat(httpClient).isSameAs(proxyHttpClient);
}
@Test
void shouldCreateWithUserAndPassword() {
var credentialsProvider = smartDocumentsConfiguration.createProxyCredentialsProvider();
void shouldReturnNonProxyHttpClient() {
doReturn(nonProxyHttpClient).when(smartDocumentsConfiguration).createNoProxyHttpClient();
when(properties.getProxy()).thenReturn(null);
var credentialsForProxy = (UsernamePasswordCredentials) credentialsProvider.getCredentials(new AuthScope(host, port), null);
var httpClient = smartDocumentsConfiguration.buildHttpClient();
assertThat(credentialsForProxy).extracting(
UsernamePasswordCredentials::getUserName,
UsernamePasswordCredentials::getUserPassword)
.containsExactly(user, password.toCharArray());
assertThat(httpClient).isSameAs(nonProxyHttpClient);
}
}
......@@ -99,32 +94,33 @@ class SmartDocumentsConfigurationTest {
}
@Nested
class TestBuildHttpClient {
private final CloseableHttpClient proxyHttpClient = HttpClients.createDefault();
private final CloseableHttpClient nonProxyHttpClient = HttpClients.createDefault();
class TestCreateProxyCredentialsProvider {
private final String user = "max";
private final String password = "max2";
private final String host = "test-proxy.local";
private final int port = 8080;
private final ProxyConfiguration proxyConfiguration = new ProxyConfiguration();
@BeforeEach
void setUp() {
proxyConfiguration.setHost(host);
proxyConfiguration.setPort(port);
proxyConfiguration.setUsername(user);
proxyConfiguration.setPassword(password);
when(properties.getProxy()).thenReturn(proxyConfiguration);
}
@Test
void shouldReturnProxyHttpClient() {
doReturn(proxyHttpClient).when(smartDocumentsConfiguration).createHttpClientUsingProxy();
when(properties.getProxy()).thenReturn(new ProxyConfiguration());
var httpClient = smartDocumentsConfiguration.buildHttpClient();
assertThat(httpClient).isSameAs(proxyHttpClient);
}
@Test
void shouldReturnNonProxyHttpClient() {
doReturn(nonProxyHttpClient).when(smartDocumentsConfiguration).createNoProxyHttpClient();
when(properties.getProxy()).thenReturn(null);
void shouldCreateWithUserAndPassword() {
var credentialsProvider = smartDocumentsConfiguration.createProxyCredentialsProvider();
var httpClient = smartDocumentsConfiguration.buildHttpClient();
var credentialsForProxy = (UsernamePasswordCredentials) credentialsProvider.getCredentials(new AuthScope(host, port), null);
assertThat(httpClient).isSameAs(nonProxyHttpClient);
assertThat(credentialsForProxy).extracting(
UsernamePasswordCredentials::getUserName,
UsernamePasswordCredentials::getUserPassword)
.containsExactly(user, password.toCharArray());
}
}
......