Пример #1
0
    public void OnProvidersExecuting_CollatesAttributesFromInheritedTypes()
    {
        // Arrange
        var options = Options.Create(new AuthorizationOptions());

        options.Value.AddPolicy("Base", policy => policy.RequireClaim("Basic").RequireClaim("Basic2"));
        options.Value.AddPolicy("Derived", policy => policy.RequireClaim("Derived"));

        var policyProvider        = new DefaultAuthorizationPolicyProvider(options);
        var authorizationProvider = new AuthorizationPageApplicationModelProvider(policyProvider, OptionsWithoutEndpointRouting);

        var context = GetApplicationProviderContext(typeof(TestPageWithDerivedModel).GetTypeInfo());

        // Act
        authorizationProvider.OnProvidersExecuting(context);

        // Assert
        AuthorizeFilter authorizeFilter = null;

        Assert.Collection(
            context.PageApplicationModel.Filters,
            f => Assert.IsType <PageHandlerPageFilter>(f),
            f => Assert.IsType <HandleOptionsRequestsPageFilter>(f),
            f => authorizeFilter = Assert.IsType <AuthorizeFilter>(f));

        // Basic + Basic2 + Derived authorize
        Assert.Equal(3, authorizeFilter.Policy.Requirements.Count);
    }
Пример #2
0
    public void OnProvidersExecuting_AddsAuthorizeFilter_IfModelHasAuthorizationAttributes()
    {
        // Arrange
        var policyProvider        = new DefaultAuthorizationPolicyProvider(Options.Create(new AuthorizationOptions()));
        var authorizationProvider = new AuthorizationPageApplicationModelProvider(policyProvider, OptionsWithoutEndpointRouting);
        var context = GetApplicationProviderContext(typeof(TestPage).GetTypeInfo());

        // Act
        authorizationProvider.OnProvidersExecuting(context);

        // Assert
        Assert.Collection(
            context.PageApplicationModel.Filters,
            f => Assert.IsType <PageHandlerPageFilter>(f),
            f => Assert.IsType <HandleOptionsRequestsPageFilter>(f),
            f => Assert.IsType <AuthorizeFilter>(f));
    }