mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 07:36:14 -05:00
Add AuthorizeOrThrowAsync extension method (#4790)
This commit is contained in:
@ -0,0 +1,38 @@
|
||||
using System.Security.Claims;
|
||||
using Bit.Core.Exceptions;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Authorization.Infrastructure;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
using AuthorizationServiceExtensions = Bit.Core.Utilities.AuthorizationServiceExtensions;
|
||||
|
||||
namespace Bit.Core.Test.Utilities;
|
||||
|
||||
public class AuthorizationServiceExtensionTests
|
||||
{
|
||||
[Fact]
|
||||
async Task AuthorizeOrThrowAsync_ThrowsNotFoundException_IfResourceIsNull()
|
||||
{
|
||||
var authorizationService = Substitute.For<IAuthorizationService>();
|
||||
await Assert.ThrowsAsync<NotFoundException>(() =>
|
||||
AuthorizationServiceExtensions.AuthorizeOrThrowAsync(authorizationService, new ClaimsPrincipal(),
|
||||
null, new OperationAuthorizationRequirement()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
async Task AuthorizeOrThrowAsync_ThrowsNotFoundException_IfAuthorizationFails()
|
||||
{
|
||||
var authorizationService = Substitute.For<IAuthorizationService>();
|
||||
var claimsPrincipal = new ClaimsPrincipal();
|
||||
var requirement = new OperationAuthorizationRequirement();
|
||||
var resource = new object();
|
||||
|
||||
authorizationService
|
||||
.AuthorizeAsync(claimsPrincipal, resource, Arg.Is<IEnumerable<IAuthorizationRequirement>>(r =>
|
||||
r.First() == requirement))
|
||||
.Returns(AuthorizationResult.Failed());
|
||||
|
||||
await Assert.ThrowsAsync<NotFoundException>(() =>
|
||||
AuthorizationServiceExtensions.AuthorizeOrThrowAsync(authorizationService, claimsPrincipal, resource, requirement));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user