diff --git a/backend/api.test/TestAzuriteStorage.cs b/backend/api.test/TestAzuriteStorage.cs new file mode 100644 index 000000000..17c580a5f --- /dev/null +++ b/backend/api.test/TestAzuriteStorage.cs @@ -0,0 +1,41 @@ +using System; +using System.Threading.Tasks; +using Azure.Storage.Blobs; +using Testcontainers.Azurite; +using Xunit; + +namespace Api.Test; + +public class TestAzuriteStorage : IAsyncLifetime +{ + private AzuriteContainer _container = null!; + private string _connectionString = null!; + + public async ValueTask InitializeAsync() + { + (_container, _connectionString) = await TestSetupHelpers.ConfigureAzuriteStorage(); + } + + public async ValueTask DisposeAsync() + { + await _container.DisposeAsync(); + GC.SuppressFinalize(this); + } + + [Fact] + public async Task CheckThatJsonFileCanBeStored() + { + var clientOptions = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_11_05); + var serviceClient = new BlobServiceClient(_connectionString, clientOptions); + var containerClient = serviceClient.GetBlobContainerClient("test-container"); + await containerClient.CreateAsync(cancellationToken: TestContext.Current.CancellationToken); + + var blobClient = containerClient.GetBlobClient("test.json"); + await blobClient.UploadAsync( + BinaryData.FromString("{\"message\":\"hello\"}"), + TestContext.Current.CancellationToken + ); + + Assert.True(await blobClient.ExistsAsync(TestContext.Current.CancellationToken)); + } +} diff --git a/backend/api.test/TestSetupHelpers.cs b/backend/api.test/TestSetupHelpers.cs index ffb810d06..ad5f127c9 100644 --- a/backend/api.test/TestSetupHelpers.cs +++ b/backend/api.test/TestSetupHelpers.cs @@ -15,6 +15,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Moq; +using Testcontainers.Azurite; using Testcontainers.PostgreSql; using Xunit.Sdk; @@ -22,8 +23,17 @@ namespace Api.Test; public static class TestSetupHelpers { + private const string AzuriteVersion = "mcr.microsoft.com/azure-storage/azurite:3.36.0"; private const string PostgresVersion = "postgres:17.10"; + public static async Task<(AzuriteContainer, string)> ConfigureAzuriteStorage() + { + var container = new AzuriteBuilder(AzuriteVersion).Build(); + await container.StartAsync(); + + return (container, container.GetConnectionString()); + } + public static async Task<( PostgreSqlContainer, string, diff --git a/backend/api.test/api.test.csproj b/backend/api.test/api.test.csproj index 8f5fce2fe..5166a84f7 100644 --- a/backend/api.test/api.test.csproj +++ b/backend/api.test/api.test.csproj @@ -12,7 +12,9 @@ + +