Search code examples
c#asp.net-core.net-corensubstitute

How to mock IAuthorizationService in .net core 2.0


I'm using this resource authorization in my controller:

var result = await _authorizationService.AuthorizeAsync(User, document, operation);

I need to test my controller, and I need the authorization to pass in the test.

I tried:

_substituteAuthorizationService.AuthorizeAsync(Arg.Any<ClaimsPrincipal>(), null, Arg.Any<IEnumerable<IAuthorizationRequirement>>())
            .ReturnsForAnyArgs(new AuthorizationResult(......));

but I can't new an AuthorizationResult because it doesn't have a public constructor.

Any ideas? Thanks!


Solution

  • Not much detail here https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.authorization.authorizationresult?view=aspnetcore-2.0

    But you can return from the static method(s)

    AuthorizationResult.Success()
    AuthorizationResult.Failed()