Azurite
Install
| npm install @testcontainers/azurite --save-dev
|
Examples
These examples use the following libraries:
Choose an image from the container registry and substitute IMAGE
.
Upload/download a blob
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | await using container = await new AzuriteContainer(IMAGE).start();
const connectionString = container.getConnectionString();
const serviceClient = BlobServiceClient.fromConnectionString(connectionString);
const containerClient = serviceClient.getContainerClient("test");
await containerClient.createIfNotExists();
const blobName = "hello.txt";
const content = "Hello world!";
await containerClient.uploadBlockBlob(blobName, content, Buffer.byteLength(content));
const blobClient = containerClient.getBlockBlobClient(blobName);
const downloadBuffer = await blobClient.downloadToBuffer();
expect(downloadBuffer.toString()).toBe(content);
|
Send/receive queue messages
1
2
3
4
5
6
7
8
9
10
11
12
13 | await using container = await new AzuriteContainer(IMAGE).start();
const connectionString = container.getConnectionString();
const serviceClient = QueueServiceClient.fromConnectionString(connectionString);
const queueName = "test-queue";
await serviceClient.createQueue(queueName);
const messageText = "Hello world!";
const queueClient = serviceClient.getQueueClient(queueName);
await queueClient.sendMessage(messageText);
const messages = await queueClient.receiveMessages();
expect(messages.receivedMessageItems).toMatchObject([{ messageText }]);
|
Create/insert/fetch on a table
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | await using container = await new AzuriteContainer(IMAGE).start();
const connectionString = container.getConnectionString();
const tableName = "person";
const tableClient = TableClient.fromConnectionString(connectionString, tableName, {
allowInsecureConnection: true,
});
await tableClient.createTable();
const entity: TableEntity<{ name: string }> = {
partitionKey: "p1",
rowKey: "r1",
name: "John Doe",
};
await tableClient.createEntity(entity);
const nextEntity = await tableClient.listEntities().next();
expect(nextEntity.value).toEqual(expect.objectContaining(entity));
|
In memory persistence
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 | await using container = await new AzuriteContainer(IMAGE).withInMemoryPersistence().start();
const blobName = "hello.txt";
{
const connectionString = container.getConnectionString();
const serviceClient = BlobServiceClient.fromConnectionString(connectionString);
const containerClient = serviceClient.getContainerClient("test");
await containerClient.createIfNotExists();
const content = "Hello world!";
await containerClient.uploadBlockBlob(blobName, content, Buffer.byteLength(content));
const blobClient = containerClient.getBlockBlobClient(blobName);
const blobExists = await blobClient.exists();
expect(blobExists).toBeTruthy();
}
await container.restart();
{
const connectionString = container.getConnectionString();
const serviceClient = BlobServiceClient.fromConnectionString(connectionString);
const containerClient = serviceClient.getContainerClient("test");
const blobClient = containerClient.getBlockBlobClient(blobName);
const blobExistsAfterRestart = await blobClient.exists();
expect(blobExistsAfterRestart).toBeFalsy();
}
|
With credentials
| const accountName = "test-account";
const accountKey = Buffer.from("test-key").toString("base64");
await using container = await new AzuriteContainer(IMAGE)
.withAccountName(accountName)
.withAccountKey(accountKey)
.start();
const credentials = new StorageSharedKeyCredential(accountName, accountKey);
const serviceClient = new BlobServiceClient(container.getBlobEndpoint(), credentials);
|
With ports
1
2
3
4
5
6
7
8
9
10
11
12
13 | const blobPort = 13000;
const queuePort = 14000;
const tablePort = 15000;
await using container = await new AzuriteContainer(IMAGE)
.withBlobPort({ container: 10001, host: blobPort })
.withQueuePort({ container: 10002, host: queuePort })
.withTablePort({ container: 10003, host: tablePort })
.start();
expect(container.getBlobPort()).toBe(blobPort);
expect(container.getQueuePort()).toBe(queuePort);
expect(container.getTablePort()).toBe(tablePort);
|