OutWit.Shared.Secrets.Conformance 1.0.0

dotnet add package OutWit.Shared.Secrets.Conformance --version 1.0.0
                    
NuGet\Install-Package OutWit.Shared.Secrets.Conformance -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OutWit.Shared.Secrets.Conformance" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OutWit.Shared.Secrets.Conformance" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="OutWit.Shared.Secrets.Conformance" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OutWit.Shared.Secrets.Conformance --version 1.0.0
                    
#r "nuget: OutWit.Shared.Secrets.Conformance, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OutWit.Shared.Secrets.Conformance@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OutWit.Shared.Secrets.Conformance&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=OutWit.Shared.Secrets.Conformance&version=1.0.0
                    
Install as a Cake Tool

OutWit.Shared.Secrets.Conformance

The conformance suite for OutWit.Shared.Secrets.Providers implementations: NUnit fixtures a provider's test project inherits and points at its own store. The abstraction's promises — the status model, atomic replace, the size and key limits, case injectivity of the platform mapping — are tested against every implementation by that implementation's own author, rather than restated in each one's tests.

Use

[TestFixture]
public class MyStoreConformanceTests : SecretStoreConformanceTests
{
    protected override ISecretStore CreateStore() => new MyStore(...);
}

That is the whole integration: every promise runs against your store. A provider whose Description.CanWrite is false runs the read-side tests only; the mutation tests are skipped, not failed.

What the suite covers, and why each row is there:

Property Why
Store→read round-trips the same bytes The floor
Store over an existing key replaces Rotation depends on it
Read of an absent key is NotFound, not Failed, not an exception The status-model conflation this subsystem exists to prevent
Delete of an absent key succeeds Uninstall must be idempotent
Delete→read is NotFound Untested deletes outlive uninstallers
The documented maximum round-trips; one byte over fails naming the limit The figure is established here rather than trusted
Non-text bytes round-trip unchanged A random 32-byte key is not a string
An empty secret is refused, distinctly from a missing one "" and absent must never be confused
Concurrent writes leave one whole value Atomic replace
Key rules: invalid throws, at-limit does not Boundaries
Two keys differing only in case are two secrets The platform mapping must be injective
Description populated, Protection never Unknown A host that cannot see what it got cannot refuse it

Write the provider-specific tests beside it: for Windows, that a different account cannot read the entry (needs a second account — arrange for it on a self-hosted agent rather than dropping it); for a file store, that permissions read back correctly and a crash between write and rename leaves the previous value; for libsecret, that no session bus yields Unavailable.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 99 8/31/2026