IdentityShroud/IdentityShroud.TestUtils/Asserts/ResultAssert.cs
eelke 07393f57fc 5-improve-encrypted-storage (#6)
Added the use of DEK's for encryption of secrets. Both the KEK's and DEK's are stored in a way that you can have multiple key of which one is active. But the others are still available for decrypting. This allows for implementing key rotation.

Co-authored-by: eelke <eelke@eelkeklein.nl>
Co-authored-by: Eelke76 <31384324+Eelke76@users.noreply.github.com>
Reviewed-on: #6
2026-02-27 17:57:42 +00:00

65 lines
1.8 KiB
C#

using FluentResults;
namespace IdentityShroud.Core.Tests;
public static class ResultAssert
{
public static void Success(Result result)
{
if (!result.IsSuccess)
{
var errors = string.Join("\n", result.Errors.Select(e => "\t" + e.Message));
Assert.True(result.IsSuccess, $"ResultAssert.Success: failed, got errors:\n{errors}");
}
}
public static T Success<T>(Result<T> result)
{
Success(result.ToResult());
return result.Value;
}
public static void Failed(Result result, Predicate<IError>? filter = null)
{
if (!result.IsFailed)
{
Assert.Fail("ResultAssert.Failed: failed, unexpected success result");
}
if (filter is not null)
Assert.Contains(result.Errors, filter);
}
public static void Failed<T>(Result<T> result, Predicate<IError>? filter = null)
{
Failed(result.ToResult(), filter);
}
public static void FailedWith<TError>(Result result) where TError : IError
{
if (!result.IsFailed)
{
Assert.Fail("ResultAssert.Failed: failed, unexpected success result");
}
if (!result.Errors.Any(e => e is TError))
{
string typeName = typeof(TError).Name;
Assert.Fail($"ResultAssert.Failed: failed, no error of the type {typeName} found");
}
}
public static void FailedWith<T, TError>(Result<T> result) where TError : IError
{
if (!result.IsFailed)
{
Assert.Fail("ResultAssert.Failed: failed, unexpected success result");
}
if (!result.Errors.Any(e => e is TError))
{
string typeName = typeof(TError).Name;
Assert.Fail($"ResultAssert.Failed: failed, no error of the type {typeName} found");
}
}
}