|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Linq;
using Microsoft.Extensions.Logging;
using Xunit;
namespace Microsoft.AspNetCore.Identity.Test;
/// <summary>
/// Helper for tests to validate identity results.
/// </summary>
public static class IdentityResultAssert
{
/// <summary>
/// Asserts that the result has Succeeded.
/// </summary>
/// <param name="result"></param>
public static void IsSuccess(IdentityResult result)
{
Assert.NotNull(result);
Assert.True(result.Succeeded);
}
/// <summary>
/// Asserts that the result has not Succeeded.
/// </summary>
public static void IsFailure(IdentityResult result)
{
Assert.NotNull(result);
Assert.False(result.Succeeded);
}
/// <summary>
/// Asserts that the result has not Succeeded and that error is the first Error's Description.
/// </summary>
public static void IsFailure(IdentityResult result, string error)
{
Assert.NotNull(result);
Assert.False(result.Succeeded);
Assert.Equal(error, result.Errors.First().Description);
}
/// <summary>
/// Asserts that the result has not Succeeded and that first error matches error's code and Description.
/// </summary>
public static void IsFailure(IdentityResult result, IdentityError error = null)
{
Assert.NotNull(result);
Assert.False(result.Succeeded);
if (error != null)
{
Assert.Equal(error.Description, result.Errors.FirstOrDefault()?.Description);
Assert.Equal(error.Code, result.Errors.FirstOrDefault()?.Code);
}
}
/// <summary>
/// Asserts that the logger contains the expectedLog.
/// </summary>
/// <param name="logger">The logger to inspect.</param>
/// <param name="expectedLog">The expected log message.</param>
public static void VerifyLogMessage(ILogger logger, string expectedLog)
{
var testlogger = logger as ITestLogger;
if (testlogger != null)
{
Assert.Contains(expectedLog, testlogger.LogMessages);
}
else
{
Assert.Fail("No logger registered");
}
}
}
|