public void CreateControllerModel_DisableCorsAttributeAddsDisableCorsAuthorizationFilter()
        {
            // Arrange
            var corsProvider = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new TestOptionsManager<MvcOptions>());

            var context = new ApplicationModelProviderContext(new[] { typeof(DisableCorsController).GetTypeInfo() });
            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var model = Assert.Single(context.Result.Controllers);
            Assert.Single(model.Filters, f => f is DisableCorsAuthorizationFilter);
        }
        public void CreateControllerModel_EnableCorsAttributeAddsCorsAuthorizationFilterFactory()
        {
            // Arrange
            var corsProvider = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new MockMvcOptionsAccessor());

            var context = new ApplicationModelProviderContext(new [] { typeof(CorsController).GetTypeInfo() });
            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var model = Assert.Single(context.Result.Controllers);
            Assert.Single(model.Filters, f => f is CorsAuthorizationFilterFactory);
        }
    public void OnProvidersExecuting_WithoutGlobalAuthorizationFilter_CustomCorsFilter_EnablesCorsPreflight()
    {
        // Arrange
        var corsProvider = new CorsApplicationModelProvider(OptionsWithoutEndpointRouting);
        var context      = GetProviderContext(typeof(CustomCorsFilterController));

        // Act
        corsProvider.OnProvidersExecuting(context);

        // Assert
        var controller = Assert.Single(context.Result.Controllers);
        var action     = Assert.Single(controller.Actions);
        var selector   = Assert.Single(action.Selectors);
        var constraint = Assert.Single(selector.ActionConstraints, c => c is HttpMethodActionConstraint);

        Assert.IsType <CorsHttpMethodActionConstraint>(constraint);
    }
    public void OnProvidersExecuting_WithoutGlobalAuthorizationFilter_CorsNotInUseDoesNotOverrideHttpConstraints()
    {
        // Arrange
        var corsProvider = new CorsApplicationModelProvider(OptionsWithoutEndpointRouting);
        var context      = GetProviderContext(typeof(RegularController));

        // Act
        corsProvider.OnProvidersExecuting(context);

        // Assert
        var model      = Assert.Single(context.Result.Controllers);
        var action     = Assert.Single(model.Actions);
        var selector   = Assert.Single(action.Selectors);
        var constraint = Assert.Single(selector.ActionConstraints, c => c is HttpMethodActionConstraint);

        Assert.IsNotType <CorsHttpMethodActionConstraint>(constraint);
    }
        public void BuildActionModel_EnableCorsAttributeAddsCorsAuthorizationFilterFactory()
        {
            // Arrange
            var corsProvider = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new TestOptionsManager<MvcOptions>());

            var context = new ApplicationModelProviderContext(new[] { typeof(EnableCorsController).GetTypeInfo() });
            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var controller = Assert.Single(context.Result.Controllers);
            var action = Assert.Single(controller.Actions);
            Assert.Single(action.Filters, f => f is CorsAuthorizationFilterFactory);
        }
        public void BuildActionModel_DisableCorsAttributeAddsDisableCorsAuthorizationFilter()
        {
            // Arrange
            var corsProvider = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new MockMvcOptionsAccessor());

            var context = new ApplicationModelProviderContext(new[] { typeof(DisableCorsActionController).GetTypeInfo() });
            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var controller = Assert.Single(context.Result.Controllers);
            var action = Assert.Single(controller.Actions);
            Assert.True(action.Filters.Any(f => f is DisableCorsAuthorizationFilter));
        }
Beispiel #7
0
        public void CreateControllerModel_DisableCorsAttributeAddsDisableCorsAuthorizationFilter()
        {
            // Arrange
            var corsProvider    = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new TestOptionsManager <MvcOptions>());

            var context = new ApplicationModelProviderContext(new[] { typeof(DisableCorsController).GetTypeInfo() });

            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var model = Assert.Single(context.Result.Controllers);

            Assert.Single(model.Filters, f => f is DisableCorsAuthorizationFilter);
        }
        public void CreateControllerModel_EnableCorsAttributeAddsCorsAuthorizationFilterFactory()
        {
            // Arrange
            var corsProvider    = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new MockMvcOptionsAccessor());

            var context = new ApplicationModelProviderContext(new [] { typeof(CorsController).GetTypeInfo() });

            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var model = Assert.Single(context.Result.Controllers);

            Assert.Single(model.Filters, f => f is CorsAuthorizationFilterFactory);
        }
Beispiel #9
0
        public void BuildActionModel_EnableCorsAttributeAddsCorsAuthorizationFilterFactory()
        {
            // Arrange
            var corsProvider    = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new TestOptionsManager <MvcOptions>());

            var context = new ApplicationModelProviderContext(new[] { typeof(EnableCorsController).GetTypeInfo() });

            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var controller = Assert.Single(context.Result.Controllers);
            var action     = Assert.Single(controller.Actions);

            Assert.Single(action.Filters, f => f is CorsAuthorizationFilterFactory);
        }
        public void BuildActionModel_DisableCorsAttributeAddsDisableCorsAuthorizationFilter()
        {
            // Arrange
            var corsProvider    = new CorsApplicationModelProvider();
            var defaultProvider = new DefaultApplicationModelProvider(new MockMvcOptionsAccessor());

            var context = new ApplicationModelProviderContext(new[] { typeof(DisableCorsActionController).GetTypeInfo() });

            defaultProvider.OnProvidersExecuting(context);

            // Act
            corsProvider.OnProvidersExecuting(context);

            // Assert
            var controller = Assert.Single(context.Result.Controllers);
            var action     = Assert.Single(controller.Actions);

            Assert.True(action.Filters.Any(f => f is DisableCorsAuthorizationFilter));
        }
    public void BuildActionModel_EnableCorsAttributeAddsCorsAuthorizationFilterFactory()
    {
        // Arrange
        var corsProvider = new CorsApplicationModelProvider(OptionsWithoutEndpointRouting);
        var context      = GetProviderContext(typeof(EnableCorsController));

        // Act
        corsProvider.OnProvidersExecuting(context);

        // Assert
        var controller = Assert.Single(context.Result.Controllers);
        var action     = Assert.Single(controller.Actions);

        Assert.Single(action.Filters, f => f is CorsAuthorizationFilterFactory);
        var selector   = Assert.Single(action.Selectors);
        var constraint = Assert.Single(selector.ActionConstraints, c => c is HttpMethodActionConstraint);

        Assert.IsType <CorsHttpMethodActionConstraint>(constraint);
    }
    public void OnProvidersExecuting_WithoutGlobalAuthorizationFilter_EnableCorsGloballyEnablesCorsPreflight()
    {
        // Arrange
        var corsProvider = new CorsApplicationModelProvider(OptionsWithoutEndpointRouting);
        var context      = GetProviderContext(typeof(RegularController));

        context.Result.Filters.Add(
            new CorsAuthorizationFilter(Mock.Of <ICorsService>(), Mock.Of <ICorsPolicyProvider>(), Mock.Of <ILoggerFactory>()));

        // Act
        corsProvider.OnProvidersExecuting(context);

        // Assert
        var model      = Assert.Single(context.Result.Controllers);
        var action     = Assert.Single(model.Actions);
        var selector   = Assert.Single(action.Selectors);
        var constraint = Assert.Single(selector.ActionConstraints, c => c is HttpMethodActionConstraint);

        Assert.IsType <CorsHttpMethodActionConstraint>(constraint);
    }
Beispiel #13
0
    public void OnProvidersExecuting_SetsEndpointMetadata_IfCorsAttributeIsPresentOnAction()
    {
        // Arrange
        var corsProvider = new CorsApplicationModelProvider(Options.Create(new MvcOptions()));
        var context      = GetProviderContext(typeof(DisableCorsActionController));

        // Act
        corsProvider.OnProvidersExecuting(context);

        // Assert
        var model = Assert.Single(context.Result.Controllers);

        Assert.Empty(model.Filters);

        var action     = Assert.Single(model.Actions);
        var selector   = Assert.Single(action.Selectors);
        var constraint = Assert.Single(selector.ActionConstraints, c => c is HttpMethodActionConstraint);

        Assert.IsNotType <CorsHttpMethodActionConstraint>(constraint);

        var httpMethodMetadata = Assert.Single(selector.EndpointMetadata.OfType <HttpMethodMetadata>());

        Assert.True(httpMethodMetadata.AcceptCorsPreflight);
    }