66import com .azure .spring .cloud .autoconfigure .implementation .context .AzureGlobalPropertiesAutoConfiguration ;
77import com .azure .spring .cloud .autoconfigure .implementation .cosmos .AzureCosmosAutoConfiguration ;
88import org .junit .jupiter .api .BeforeAll ;
9- import org .junit .jupiter .api .Disabled ;
109import org .junit .jupiter .api .Test ;
10+ import org .junit .jupiter .api .condition .EnabledOnOs ;
11+ import org .junit .jupiter .api .condition .OS ;
1112import org .junit .jupiter .api .extension .ExtendWith ;
1213import org .junit .jupiter .api .io .TempDir ;
1314import org .springframework .beans .factory .annotation .Autowired ;
1617import org .springframework .boot .testcontainers .service .connection .ServiceConnection ;
1718import org .springframework .test .context .junit .jupiter .SpringExtension ;
1819import org .testcontainers .containers .CosmosDBEmulatorContainer ;
20+ import org .testcontainers .containers .wait .strategy .Wait ;
1921import org .testcontainers .junit .jupiter .Container ;
2022import org .testcontainers .junit .jupiter .Testcontainers ;
2123import org .testcontainers .utility .DockerImageName ;
2224
2325import java .io .File ;
26+ import java .io .IOException ;
2427import java .nio .file .Files ;
2528import java .nio .file .Path ;
2629import java .security .KeyStore ;
30+ import java .security .KeyStoreException ;
31+ import java .security .NoSuchAlgorithmException ;
32+ import java .security .cert .CertificateException ;
33+ import java .time .Duration ;
2734
2835import static org .assertj .core .api .Assertions .assertThat ;
2936
3037@ SpringBootTest (classes = CosmosTestcontainersTest .class )
3138@ Testcontainers
3239@ ExtendWith (SpringExtension .class )
3340@ ImportAutoConfiguration (classes = { AzureGlobalPropertiesAutoConfiguration .class , AzureCosmosAutoConfiguration .class })
34- @ Disabled ( "Cosmos DB emulator has SSL certificate issues in CI environments. See https://github.com/Azure/azure-cosmos-db-emulator-docker/issues/229" )
41+ @ EnabledOnOs ( OS . LINUX )
3542public class CosmosTestcontainersTest {
3643
3744 @ TempDir
@@ -43,18 +50,15 @@ public class CosmosTestcontainersTest {
4350 @ Container
4451 @ ServiceConnection
4552 static CosmosDBEmulatorContainer cosmos = new CosmosDBEmulatorContainer (
46- DockerImageName .parse ("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest" ));
53+ DockerImageName .parse ("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest" ))
54+ .waitingFor (Wait .forHttps ("/_explorer/emulator.pem" ).forStatusCode (200 ).allowInsecure ())
55+ .withStartupTimeout (Duration .ofMinutes (3 ));
4756
4857 @ BeforeAll
49- public static void setup () {
50- cosmos .start ();
58+ public static void setup () throws IOException , CertificateException , KeyStoreException , NoSuchAlgorithmException {
5159 Path keyStoreFile = new File (tempFolder , "azure-cosmos-emulator.keystore" ).toPath ();
5260 KeyStore keyStore = cosmos .buildNewKeyStore ();
53- try {
54- keyStore .store (Files .newOutputStream (keyStoreFile .toFile ().toPath ()), cosmos .getEmulatorKey ().toCharArray ());
55- } catch (Exception e ) {
56- throw new RuntimeException (e );
57- }
61+ keyStore .store (Files .newOutputStream (keyStoreFile .toFile ().toPath ()), cosmos .getEmulatorKey ().toCharArray ());
5862
5963 System .setProperty ("javax.net.ssl.trustStore" , keyStoreFile .toString ());
6064 System .setProperty ("javax.net.ssl.trustStorePassword" , cosmos .getEmulatorKey ());
0 commit comments