tests: add remaining register integration tests
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
namespace FiscalOS.Infra.Authorization;
|
||||
|
||||
internal sealed class ProblemDetailsAuthResultHandler : IAuthorizationMiddlewareResultHandler
|
||||
{
|
||||
public Task HandleAsync(
|
||||
RequestDelegate next,
|
||||
HttpContext context,
|
||||
AuthorizationPolicy policy,
|
||||
PolicyAuthorizationResult authorizeResult
|
||||
)
|
||||
{
|
||||
if (authorizeResult.Succeeded)
|
||||
{
|
||||
return next(context);
|
||||
}
|
||||
|
||||
context.Response.StatusCode = authorizeResult.Forbidden
|
||||
? StatusCodes.Status403Forbidden
|
||||
: StatusCodes.Status401Unauthorized;
|
||||
|
||||
context.Response.ContentType = "application/problem+json";
|
||||
|
||||
var problemDetails = authorizeResult.Forbidden
|
||||
? new ProblemDetails
|
||||
{
|
||||
Title = "Forbidden",
|
||||
Status = StatusCodes.Status403Forbidden,
|
||||
Detail = "You do not have permission to access this resource."
|
||||
}
|
||||
: new ProblemDetails
|
||||
{
|
||||
Title = "Unauthorized",
|
||||
Status = StatusCodes.Status401Unauthorized,
|
||||
Detail = "Authentication is required to access this resource."
|
||||
};
|
||||
|
||||
var json = JsonSerializer.Serialize(problemDetails);
|
||||
|
||||
return context.Response.WriteAsync(json);
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddInfrastructure(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<IAuthorizationMiddlewareResultHandler, ProblemDetailsAuthResultHandler>();
|
||||
|
||||
services.AddSingleton(TimeProvider.System);
|
||||
|
||||
services.ConfigureOptions<JwtOptionsSetup>();
|
||||
|
||||
@@ -2,13 +2,19 @@ global using System.IdentityModel.Tokens.Jwt;
|
||||
global using System.Security.Claims;
|
||||
global using System.Security.Cryptography;
|
||||
global using System.Text;
|
||||
global using System.Text.Json;
|
||||
|
||||
global using FiscalOS.Core.Authentication;
|
||||
global using FiscalOS.Core.Data;
|
||||
global using FiscalOS.Core.Identity;
|
||||
global using FiscalOS.Infra.Authentication;
|
||||
global using FiscalOS.Infra.Authorization;
|
||||
global using FiscalOS.Infra.Data;
|
||||
|
||||
global using Microsoft.AspNetCore.Authorization;
|
||||
global using Microsoft.AspNetCore.Authorization.Policy;
|
||||
global using Microsoft.AspNetCore.Http;
|
||||
global using Microsoft.AspNetCore.Mvc;
|
||||
global using Microsoft.EntityFrameworkCore;
|
||||
global using Microsoft.EntityFrameworkCore.Diagnostics;
|
||||
global using Microsoft.Extensions.Configuration;
|
||||
|
||||
Reference in New Issue
Block a user