Skip to content

Azurite

Install

1
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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);