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
  • anbindung_ed
  • main
  • release
  • 1.0.0
  • 1.1.0
  • 1.2.0
  • 1.3.0
  • 1.4.0
8 results

Target

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