public void RequireAuthorization_PolicyCallbackWithAuthorize()
    {
        // Arrange
        var builder     = new TestEndpointConventionBuilder();
        var authorize   = new AuthorizeAttribute();
        var requirement = new TestRequirement();

        // Act
        builder.RequireAuthorization(policyBuilder => policyBuilder.Requirements.Add(requirement));

        // Assert
        var convention = Assert.Single(builder.Conventions);

        var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);

        endpointModel.Metadata.Add(authorize);
        convention(endpointModel);

        // Confirm that we don't add another authorize if one already exists
        Assert.Equal(2, endpointModel.Metadata.Count);
        Assert.Equal(authorize, endpointModel.Metadata[0]);
        var policy = Assert.IsAssignableFrom <AuthorizationPolicy>(endpointModel.Metadata[1]);

        Assert.Equal(1, policy.Requirements.Count);
        Assert.Equal(requirement, policy.Requirements[0]);
    }
    public void RequireAuthorization_PolicyCallback()
    {
        // Arrange
        var builder     = new TestEndpointConventionBuilder();
        var requirement = new TestRequirement();

        // Act
        builder.RequireAuthorization(policyBuilder => policyBuilder.Requirements.Add(requirement));

        // Assert
        var convention = Assert.Single(builder.Conventions);

        var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);

        convention(endpointModel);

        Assert.Equal(2, endpointModel.Metadata.Count);
        var authMetadata = Assert.IsAssignableFrom <IAuthorizeData>(endpointModel.Metadata[0]);

        Assert.Null(authMetadata.Policy);

        var policy = Assert.IsAssignableFrom <AuthorizationPolicy>(endpointModel.Metadata[1]);

        Assert.Equal(1, policy.Requirements.Count);
        Assert.Equal(requirement, policy.Requirements[0]);
    }
        protected override Task HandleRequirementAsync(LinksHandlerContext context, TestRequirement <TResource> requirement)
        {
            var route = context.RouteMap.GetRoute("TestRoute");

            context.Links.Add(new LinkSpec("testLink", route));
            context.Handled(requirement);
            return(Task.CompletedTask);
        }
Exemplo n.º 4
0
    public void MapHubFindsMetadataPolicyOnHub()
    {
        var authCount = 0;
        var policy1   = new AuthorizationPolicyBuilder().RequireAssertion(_ => true).Build();
        var req       = new TestRequirement();

        using (var host = BuildWebHost(routes => routes.MapHub <AuthHub>("/path", options =>
        {
            authCount += options.AuthorizationData.Count;
        })
                                       .RequireAuthorization(policy1)
                                       .RequireAuthorization(policy => policy.AddRequirements(req))))
        {
            host.Start();

            var dataSource = host.Services.GetRequiredService <EndpointDataSource>();
            // We register 2 endpoints (/negotiate and /)
            Assert.Collection(dataSource.Endpoints,
                              endpoint =>
            {
                Assert.Equal("/path/negotiate", endpoint.DisplayName);
                Assert.Equal(1, endpoint.Metadata.GetOrderedMetadata <IAuthorizeData>().Count);
                var policies = endpoint.Metadata.GetOrderedMetadata <AuthorizationPolicy>();
                Assert.Equal(2, policies.Count);
                Assert.Equal(policy1, policies[0]);
                Assert.Equal(1, policies[1].Requirements.Count);
                Assert.Equal(req, policies[1].Requirements.First());
            },
                              endpoint =>
            {
                Assert.Equal("/path", endpoint.DisplayName);
                Assert.Equal(1, endpoint.Metadata.GetOrderedMetadata <IAuthorizeData>().Count);
                var policies = endpoint.Metadata.GetOrderedMetadata <AuthorizationPolicy>();
                Assert.Equal(2, policies.Count);
                Assert.Equal(policy1, policies[0]);
                Assert.Equal(1, policies[1].Requirements.Count);
                Assert.Equal(req, policies[1].Requirements.First());
            });
        }

        Assert.Equal(0, authCount);
    }
 protected override Task HandleRequirementAsync(LinksHandlerContext context, TestRequirement <TResource> requirement)
 {
     throw new Exception("Test Exception");
 }
Exemplo n.º 6
0
 public ModelTestRequirement(TestRequirement requirement)
 {
     this.Title           = ToolsEnum.EnumToString(requirement);
     this.TestRequirement = requirement;
 }