-
Notifications
You must be signed in to change notification settings - Fork 255
Expand file tree
/
Copy pathEmbeddedAzuriteHttpsTest.java
More file actions
82 lines (68 loc) · 3.32 KB
/
EmbeddedAzuriteHttpsTest.java
File metadata and controls
82 lines (68 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.playtika.testcontainer.azurite;
import com.azure.core.http.netty.NettyAsyncHttpClientBuilder;
import com.azure.storage.blob.BlobContainerClient;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.testcontainers.azure.AzuriteContainer;
import reactor.netty.http.client.HttpClient;
import javax.net.ssl.SSLException;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest(
classes = EmbeddedAzuriteHttpsTest.AzuriteHttpsTestConfiguration.class,
properties = {"embedded.azurite.https-enabled=true"})
@Disabled("Create private and public key to check https")
class EmbeddedAzuriteHttpsTest {
@Autowired
AzuriteContainer azuriteContainer;
@Autowired
BlobServiceClient blobServiceClient;
@Value("${embedded.azurite.blob-endpoint}")
String blobEndpoint;
@Test
void blobEndpointUsesHttps() {
assertThat(blobEndpoint).startsWith("https://");
}
@Test
void connectionStringUsesHttps() {
assertThat(azuriteContainer.getConnectionString()).contains("DefaultEndpointsProtocol=https");
}
@Test
@DisplayName("basic blob operations work over HTTPS with the embedded self-signed certificate")
void createAndDeleteContainerBlobOverHttps() {
long containersBefore = blobServiceClient.listBlobContainers().stream().count();
BlobContainerClient container = blobServiceClient.createBlobContainer(UUID.randomUUID().toString());
assertThat(container.listBlobs().stream()).isEmpty();
assertThat(blobServiceClient.listBlobContainers().stream().count()).isEqualTo(containersBefore + 1);
container.delete();
assertThat(blobServiceClient.listBlobContainers().stream().count()).isEqualTo(containersBefore);
}
@EnableAutoConfiguration
@Configuration
static class AzuriteHttpsTestConfiguration {
@Bean
BlobServiceClient blobServiceClient(AzuriteContainer azuriteContainer) throws SSLException {
// Trust all certs so the embedded self-signed certificate is accepted in tests.
io.netty.handler.ssl.SslContext insecureSslContext = SslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.build();
HttpClient reactor = HttpClient.create().secure(spec -> spec.sslContext(insecureSslContext));
com.azure.core.http.HttpClient azureHttpClient = new NettyAsyncHttpClientBuilder(reactor).build();
return new BlobServiceClientBuilder()
.connectionString(azuriteContainer.getConnectionString())
.httpClient(azureHttpClient)
.buildClient();
}
}
}