Δημιουργία χωρίς έλεγχο ταυτότητας αίτημα δοκιμές ολοκλήρωσης σε .NET πυρήνα 3.0

ψήφοι
0

Υπήρχε μια ωραία λύση για .NET πυρήνα 2.2 δημοσιεύτηκε εδώ https://stackoverflow.com/a/50247041

protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureTestServices(services =>
            {
                services
                    .AddMvc(opts => opts.Filters.Add(new AllowAnonymousFilter()));
            });
        }

Προφανώς αυτό σταμάτησε να λειτουργεί το .NET πυρήνα 3.0

Error Message:
   Expected response.StatusCode to be OK, but found Unauthorized.
  Stack Trace:
     at FluentAssertions.Execution.LateBoundTestFramework.Throw(String message)
   at FluentAssertions.Execution.TestFrameworkProvider.Throw(String message)
   at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
   at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
   at FluentAssertions.Execution.AssertionScope.FailWith(Func`1 failReasonFunc)
   at FluentAssertions.Execution.AssertionScope.FailWith(String message, Object[] args)
   at FluentAssertions.Primitives.ObjectAssertions.Be(Object expected, String because, Object[] becauseArgs)

Ξέρει κανείς αν υπάρχει μια παρόμοια λύση για το νέο .NET πυρήνα;

Δημοσιεύθηκε 24/10/2019 στις 11:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Ήμουν χρησιμοποιώντας την ίδια μέθοδο σύμφωνα με .NET πυρήνα 2.2. Αυτό που τελικά διαπίστωσε ότι εργάστηκε για .NET πυρήνα 3.0 βασίζεται σε δοκιμές Ένταξη - Mock ταυτότητας . Πρόσθεσα ένα Mock Test Auth Handler ως εκ τούτου:

public class TestAuthHandler : AuthenticationHandler<AuthenticationSchemeOptions>
{
    public TestAuthHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock)
        : base(options, logger, encoder, clock)
    {
    }

    protected override Task<AuthenticateResult> HandleAuthenticateAsync()
    {
        var claims = new[] { new Claim(ClaimTypes.Name, "Test user") };
        var identity = new ClaimsIdentity(claims, "Test");
        var principal = new ClaimsPrincipal(identity);
        var ticket = new AuthenticationTicket(principal, "Test");

        AuthenticateResult result = AuthenticateResult.Success(ticket);

        return Task.FromResult(result);
    }
}

Στη συνέχεια, το ConfigureTestServicesάλλαξα τη λογική από

services.AddControllers(options =>
    {
        options.Filters.Add(new AllowAnonymousFilter());
    });

για να προσθέσετε ένα ταυτότητας και να παρακάμψετε την πολιτική της άδειας όπως αυτή:

services
    .AddAuthentication("Test")
    .AddScheme<AuthenticationSchemeOptions, TestAuthHandler>("Test", options => { });
services.AddAuthorization(options =>
{
    options.AddPolicy("<Existing Policy Name>", builder =>
    {
        builder.AuthenticationSchemes.Add("Test");
        builder.RequireAuthenticatedUser();
    });
    options.DefaultPolicy = options.GetPolicy("<Existing Policy Name>");
});

Αυτό επέτρεψε τώρα δοκιμές μου στη δουλειά κάτω .NET πυρήνα 3.0.

Απαντήθηκε 07/11/2019 στις 21:39
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more