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 .OS ;
1111import org .junit .jupiter .api .extension .ExtendWith ;
1212import org .junit .jupiter .api .io .TempDir ;
1313import org .springframework .beans .factory .annotation .Autowired ;
1616import org .springframework .boot .testcontainers .service .connection .ServiceConnection ;
1717import org .springframework .test .context .junit .jupiter .SpringExtension ;
1818import org .testcontainers .containers .CosmosDBEmulatorContainer ;
19+ import org .testcontainers .containers .wait .strategy .Wait ;
1920import org .testcontainers .junit .jupiter .Container ;
2021import org .testcontainers .junit .jupiter .Testcontainers ;
2122import org .testcontainers .utility .DockerImageName ;
2223
2324import java .io .File ;
25+ import java .io .IOException ;
2426import java .nio .file .Files ;
2527import java .nio .file .Path ;
2628import java .security .KeyStore ;
29+ import java .security .KeyStoreException ;
30+ import java .security .NoSuchAlgorithmException ;
31+ import java .security .cert .CertificateException ;
32+ import java .time .Duration ;
2733
2834import static org .assertj .core .api .Assertions .assertThat ;
2935
3036@ SpringBootTest (classes = CosmosTestcontainersTest .class )
3137@ Testcontainers
3238@ ExtendWith (SpringExtension .class )
3339@ 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" )
3540public class CosmosTestcontainersTest {
3641
3742 @ TempDir
@@ -43,17 +48,16 @@ public class CosmosTestcontainersTest {
4348 @ Container
4449 @ ServiceConnection
4550 static CosmosDBEmulatorContainer cosmos = new CosmosDBEmulatorContainer (
46- DockerImageName .parse ("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest" ));
51+ DockerImageName .parse ("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest" ))
52+ .waitingFor (Wait .forHttps ("/_explorer/emulator.pem" ).forStatusCode (200 ).allowInsecure ())
53+ .withStartupTimeout (Duration .ofMinutes (3 ));
4754
4855 @ BeforeAll
49- public static void setup () {
50- cosmos .start ();
56+ public static void setup () throws IOException , CertificateException , KeyStoreException , NoSuchAlgorithmException {
5157 Path keyStoreFile = new File (tempFolder , "azure-cosmos-emulator.keystore" ).toPath ();
5258 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 );
59+ try (var out = Files .newOutputStream (keyStoreFile .toFile ().toPath ())) {
60+ keyStore .store (out , cosmos .getEmulatorKey ().toCharArray ());
5761 }
5862
5963 System .setProperty ("javax.net.ssl.trustStore" , keyStoreFile .toString ());
0 commit comments