Rig.TUnit.Storage.MinIO
0.1.0-beta.2
dotnet add package Rig.TUnit.Storage.MinIO --version 0.1.0-beta.2
NuGet\Install-Package Rig.TUnit.Storage.MinIO -Version 0.1.0-beta.2
<PackageReference Include="Rig.TUnit.Storage.MinIO" Version="0.1.0-beta.2" />
<PackageVersion Include="Rig.TUnit.Storage.MinIO" Version="0.1.0-beta.2" />
<PackageReference Include="Rig.TUnit.Storage.MinIO" />
paket add Rig.TUnit.Storage.MinIO --version 0.1.0-beta.2
#r "nuget: Rig.TUnit.Storage.MinIO, 0.1.0-beta.2"
#:package Rig.TUnit.Storage.MinIO@0.1.0-beta.2
#addin nuget:?package=Rig.TUnit.Storage.MinIO&version=0.1.0-beta.2&prerelease
#tool nuget:?package=Rig.TUnit.Storage.MinIO&version=0.1.0-beta.2&prerelease
Rig.TUnit.Storage.MinIO
Testcontainers-backed MinIO fixture (
minio/minio) withIMinioClientand pure-functionMinIOSasBuilderfor presigned-URL construction.
What this package is
The Rig.TUnit MinIO provider. MinIOFixture spins the minio/minio
container via Testcontainers and exposes a ready IMinioClient.
MinIOSasBuilder is a pure function that builds presign-request
parameters (bucket + object + verb + TTL) — unit-testable without
hitting the server.
MinIO is wire-compatible with S3, so this is also the fast path for testing S3 behaviour without LocalStack overhead.
When to use it
- Integration tests for object storage with S3-compatible semantics.
- Presigned-URL construction + download/upload verification.
- Not for: S3 features not implemented by MinIO (S3 Select, Glacier tiers, Intelligent Tiering).
Prerequisites
- .NET 10 SDK
- Docker Desktop / Colima (MinIO image ~150 MB)
MinioSDK 6.x (transitive, Apache-2.0).
Quick start
using Minio.DataModel.Args;
using Rig.TUnit.Storage.MinIO.Fixtures;
await using var fx = new MinIOFixture();
await fx.InitializeAsync();
await fx.Client.MakeBucketAsync(new MakeBucketArgs().WithBucket("demo"));
Options
| Property | Type | Default | Description |
|---|---|---|---|
Image |
string |
"minio/minio:latest" |
MinIO image |
StartupTimeoutSeconds |
int |
60 |
MinIO boot |
RootUser |
string |
"rigtunit" |
Default admin user |
RootPassword |
string |
"rigtunit-minio" |
Default admin password (8+ chars required) |
Fixture + helper APIs
Rig.TUnit.Storage.MinIO.Fixtures.MinIOFixtureRig.TUnit.Storage.MinIO.Options.MinIOFixtureOptionsRig.TUnit.Storage.MinIO.Builder.MinIORigBuilderRig.TUnit.Storage.MinIO.Helpers.MinIOSasBuilder
Per-test isolation
Per-test bucket: test-{IsolationKey:short}. Teardown removes the
bucket recursively (RemoveBucketAsync requires the bucket be empty —
the fixture clears it first).
Parallelism + performance
- First-run pull: ~20 s.
- Warm startup: ~3 s.
- Per-test bucket create + delete: ~60 ms.
- Parallelism: 8+ concurrent tests.
Troubleshooting
AccessDeniedon presign — clock skew between the fixture and signature builder; MinIO enforces ±15 min. Ensure both use UTC.BucketNotEmptyon teardown — test wrote an object after the fixture's cleanup pass. Ensureusing/await usingscopes are tight.
See docs/troubleshooting.md#minio.
Provider quirks + edge cases
- MinIO is S3-wire-compatible but not byte-identical — S3-specific error codes can differ, and some advanced features (S3 Select, Intelligent Tiering) are absent. Use LocalStack for those.
- Default region is
us-east-1; presigned URLs without explicit region use that. - Root password must be at least 8 characters (MinIO enforced).
Benchmarks
See MinIOBenchmarks.cs;
baseline in benchmarks/baseline-005.json.
Related docs
- Architecture diagram
- Glossary
- Family base:
Rig.TUnit.Storage - Sibling:
Rig.TUnit.Storage.S3
License
MIT. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Bogus (>= 35.6.1)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Minio (>= 6.0.3)
- Rig.TUnit.Storage (>= 0.1.0-beta.2)
- Testcontainers (>= 4.11.0)
- Testcontainers.Minio (>= 4.11.0)
- TUnit.Core (>= 1.34.5)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Rig.TUnit.Storage.MinIO:
| Package | Downloads |
|---|---|
|
Rig.TUnit.All
Meta-package containing every Rig.TUnit.* package. DISCOURAGED — prefer per-feature or per-stack meta-packages (Rig.TUnit, Rig.TUnit.Microservices). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-beta.2 | 50 | 4/27/2026 |
| 0.0.0-alpha.0.14 | 46 | 4/26/2026 |