|
1 | 1 | package org.testcontainers.azure; |
2 | 2 |
|
| 3 | +import com.azure.core.util.BinaryData; |
3 | 4 | import com.azure.data.tables.TableClient; |
4 | 5 | import com.azure.data.tables.TableServiceClient; |
5 | 6 | import com.azure.data.tables.TableServiceClientBuilder; |
| 7 | +import com.azure.storage.blob.BlobClient; |
6 | 8 | import com.azure.storage.blob.BlobContainerClient; |
7 | 9 | import com.azure.storage.blob.BlobServiceClient; |
8 | 10 | import com.azure.storage.blob.BlobServiceClientBuilder; |
@@ -166,6 +168,87 @@ public void testWithTableServiceClientWithSslUsingPem() { |
166 | 168 | } |
167 | 169 | } |
168 | 170 |
|
| 171 | + @Test |
| 172 | + public void testTwoAccountKeysWithBlobServiceClient() { |
| 173 | + try ( |
| 174 | + // emulatorContainerWithTwoAccountKeys { |
| 175 | + AzuriteContainer emulator = new AzuriteContainer( |
| 176 | + DockerImageName.parse("mcr.microsoft.com/azure-storage/azurite:3.33.0") |
| 177 | + ) |
| 178 | + .withEnv("AZURITE_ACCOUNTS", "account1:key1:key2") |
| 179 | + // } |
| 180 | + ) { |
| 181 | + emulator.start(); |
| 182 | + |
| 183 | + String connectionString1 = emulator.getConnectionString("account1", "key1"); |
| 184 | + // the second accuont will have access to the same container using a different key |
| 185 | + String connectionString2 = emulator.getConnectionString("account1", "key2"); |
| 186 | + |
| 187 | + BlobServiceClient blobServiceClient1 = new BlobServiceClientBuilder() |
| 188 | + .connectionString(connectionString1) |
| 189 | + .buildClient(); |
| 190 | + |
| 191 | + BlobContainerClient containerClient1 = blobServiceClient1.createBlobContainer("test-container"); |
| 192 | + BlobClient blobClient1 = containerClient1.getBlobClient("test-blob.txt"); |
| 193 | + blobClient1.upload(BinaryData.fromString("content")); |
| 194 | + boolean existsWithAccount1 = blobClient1.exists(); |
| 195 | + String contentWithAccount1 = blobClient1.downloadContent().toString(); |
| 196 | + |
| 197 | + BlobServiceClient blobServiceClient2 = new BlobServiceClientBuilder() |
| 198 | + .connectionString(connectionString2) |
| 199 | + .buildClient(); |
| 200 | + BlobContainerClient containerClient2 = blobServiceClient2.getBlobContainerClient("test-container"); |
| 201 | + BlobClient blobClient2 = containerClient2.getBlobClient("test-blob.txt"); |
| 202 | + boolean existsWithAccount2 = blobClient2.exists(); |
| 203 | + String contentWithAccount2 = blobClient2.downloadContent().toString(); |
| 204 | + |
| 205 | + assertThat(existsWithAccount1).isTrue(); |
| 206 | + assertThat(contentWithAccount1).isEqualTo("content"); |
| 207 | + assertThat(existsWithAccount2).isTrue(); |
| 208 | + assertThat(contentWithAccount2).isEqualTo("content"); |
| 209 | + } |
| 210 | + } |
| 211 | + |
| 212 | + @Test |
| 213 | + public void testMultipleAccountsWithBlobServiceClient() { |
| 214 | + try ( |
| 215 | + // emulatorContainerWithMoreAccounts { |
| 216 | + AzuriteContainer emulator = new AzuriteContainer( |
| 217 | + DockerImageName.parse("mcr.microsoft.com/azure-storage/azurite:3.33.0") |
| 218 | + ) |
| 219 | + .withEnv("AZURITE_ACCOUNTS", "account1:key1;account2:key2") |
| 220 | + // } |
| 221 | + ) { |
| 222 | + emulator.start(); |
| 223 | + |
| 224 | + // useNonDefaultCredentials { |
| 225 | + String connectionString1 = emulator.getConnectionString("account1", "key1"); |
| 226 | + // the second accuont will not have access to the same container |
| 227 | + String connectionString2 = emulator.getConnectionString("account2", "key2"); |
| 228 | + // } |
| 229 | + BlobServiceClient blobServiceClient1 = new BlobServiceClientBuilder() |
| 230 | + .connectionString(connectionString1) |
| 231 | + .buildClient(); |
| 232 | + |
| 233 | + BlobContainerClient containerClient1 = blobServiceClient1.createBlobContainer("test-container"); |
| 234 | + BlobClient blobClient1 = containerClient1.getBlobClient("test-blob.txt"); |
| 235 | + blobClient1.upload(BinaryData.fromString("content")); |
| 236 | + boolean existsWithAccount1 = blobClient1.exists(); |
| 237 | + String contentWithAccount1 = blobClient1.downloadContent().toString(); |
| 238 | + |
| 239 | + BlobServiceClient blobServiceClient2 = new BlobServiceClientBuilder() |
| 240 | + .connectionString(connectionString2) |
| 241 | + .buildClient(); |
| 242 | + BlobContainerClient containerClient2 = blobServiceClient2.createBlobContainer("test-container"); |
| 243 | + BlobClient blobClient2 = containerClient2.getBlobClient("test-blob.txt"); |
| 244 | + boolean existsWithAccount2 = blobClient2.exists(); |
| 245 | + |
| 246 | + assertThat(existsWithAccount1).isTrue(); |
| 247 | + assertThat(contentWithAccount1).isEqualTo("content"); |
| 248 | + assertThat(existsWithAccount2).isFalse(); |
| 249 | + } |
| 250 | + } |
| 251 | + |
169 | 252 | private void testBlob(AzuriteContainer container) { |
170 | 253 | // createBlobClient { |
171 | 254 | BlobServiceClient blobServiceClient = new BlobServiceClientBuilder() |
|
0 commit comments