Files
pas/Tests/TestSupport.cs
Marek Lesko d0b16b25a4 Change
2026-03-22 10:57:35 +00:00

70 lines
2.2 KiB
C#

using System.Security.Claims;
using Api.Models;
using Api.Services;
using Microsoft.EntityFrameworkCore;
namespace Tests;
internal static class TestSupport
{
public static AppDbContext CreateDbContext(string? databaseName = null)
{
var options = new DbContextOptionsBuilder<AppDbContext>()
.UseInMemoryDatabase(databaseName ?? Guid.NewGuid().ToString())
.Options;
return new AppDbContext(options);
}
public static ClaimsPrincipal CreatePrincipal(params Claim[] claims)
{
return new ClaimsPrincipal(new ClaimsIdentity(claims, "TestAuth"));
}
}
internal sealed class OAuthValidationServiceStub : IOAuthValidationService
{
public (bool IsValid, ClaimsPrincipal? Principal, string? ErrorMessage) ValidationResult { get; set; }
public (string Email, string? FirstName, string? LastName, string? ProfilePictureUrl, string ProviderId) UserInfo { get; set; }
public (string Email, string? FirstName, string? LastName, string? ProfilePictureUrl, string ProviderId) AsyncUserInfo { get; set; }
public Task<(bool IsValid, ClaimsPrincipal? Principal, string? ErrorMessage)> ValidateIdTokenAsync(string idToken, string provider)
{
return Task.FromResult(ValidationResult);
}
public (string Email, string? FirstName, string? LastName, string? ProfilePictureUrl, string ProviderId) ExtractUserInfo(ClaimsPrincipal principal, string provider)
{
return UserInfo;
}
public Task<(string Email, string? FirstName, string? LastName, string? ProfilePictureUrl, string ProviderId)> ExtractUserInfoAsync(ClaimsPrincipal principal, string provider, string? idToken = null, string? accessToken = null)
{
return Task.FromResult(AsyncUserInfo);
}
}
internal sealed class JwtServiceStub : IJwtService
{
public string GeneratedToken { get; set; } = "test-access-token";
public DateTime Expiration { get; set; } = DateTime.UtcNow.AddHours(1);
public string GenerateToken(User user)
{
return GeneratedToken;
}
public ClaimsPrincipal? ValidateToken(string token)
{
throw new NotSupportedException();
}
public DateTime GetTokenExpiration(string token)
{
return Expiration;
}
}