Example #1
0
        public void Build_WhenNoValues_ReturnsNull()
        {
            var builder = new FeaturePolicyBuilder();

            var result = builder.Build();

            result.Should().BeNullOrEmpty();
        }
Example #2
0
        /// <summary>
        /// Configure a feature policy.
        /// </summary>
        /// <param name="configure">Configure the Feature-Policy header</param>
        /// <returns>The complete Feature-Policy header</returns>
        public static FeaturePolicyHeader Build(Action <FeaturePolicyBuilder> configure)
        {
            var builder = new FeaturePolicyBuilder();

            configure(builder);

            return(new FeaturePolicyHeader(builder.Build()));
        }
Example #3
0
        /// <summary>
        /// Adds a Feature Policy headerto the response.
        /// See https://github.com/WICG/feature-policy/blob/master/features.md for more information
        /// </summary>
        /// <param name="app">The <see cref="IApplicationBuilder"/></param>
        /// <param name="builderAction">Configuration action for the header.</param>
        /// <returns>The <see cref="IApplicationBuilder"/></returns>
        public static IApplicationBuilder UseFeaturePolicy(this IApplicationBuilder app, Action <FeaturePolicyBuilder> builderAction)
        {
            var builder = new FeaturePolicyBuilder();

            builderAction(builder);

            var options = builder.BuildFeaturePolicyOptions();

            return(app.UseMiddleware <FeaturePolicyMiddleware>(new OptionsWrapper <FeaturePolicyOptions>(options)));
        }
Example #4
0
        public void Build_AddAccelerometer_WhenIncludesAllAndNone_ThrowsInvalidOperationException()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddAccelerometer()
            .None()
            .All();

            Assert.Throws <InvalidOperationException>(() => builder.Build());
        }
Example #5
0
        public void Build_AddSyncXHR_WhenIncludesSelf_WritesSelf()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddSyncXHR().Self();

            var result = builder.Build();

            result.Should().Be("sync-xhr 'self'");
        }
        public void PaymentFromNowhere_SetsValue()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AllowPayment.FromNowhere();
            var    options     = builder.BuildFeaturePolicyOptions();
            string headerValue = options.ToString();

            Assert.Equal("payment 'none'", headerValue);
        }
        public void OtherNewFeatureFromSelf_SetsValue()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AllowOtherFeature("new-feature").FromSelf();
            var    options     = builder.BuildFeaturePolicyOptions();
            string headerValue = options.ToString();

            Assert.Equal("new-feature 'self'", headerValue);
        }
        public void PaymentFromSelfAndGoogle_SetsValue()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AllowPayment.FromSelf().From("https://www.google.com");
            var    options     = builder.BuildFeaturePolicyOptions();
            string headerValue = options.ToString();

            Assert.Equal("payment 'self' https://www.google.com", headerValue);
        }
Example #9
0
        public void Build_CustomFeatureDirectiveBuilder_AddsValues()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddCustomFeature("push").None();
            builder.AddCustomFeature("vibrate").All();

            var result = builder.Build();

            result.Should().Be("push 'none'; vibrate *");
        }
Example #10
0
        public void Build_AddingTheSameDirectiveTwice_OverwritesThePreviousCopy()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddAccelerometer().Self();
            builder.AddAccelerometer().None();

            var result = builder.Build();

            result.Should().Be("accelerometer 'none'");
        }
        public void PaymentFromNowhereAndFullScreenFromSelf_SetsValue()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AllowPayment.FromNowhere();
            builder.AllowFullscreen.FromSelf();
            var    options     = builder.BuildFeaturePolicyOptions();
            string headerValue = options.ToString();

            Assert.Equal("fullscreen 'self'; payment 'none'", headerValue);
        }
Example #12
0
        public void Build_CustomFeatureDirective_AddsValues()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddCustomFeature("push", "'none'");
            builder.AddCustomFeature("vibrate", "*");
            builder.AddCustomFeature("something-else", string.Empty);

            var result = builder.Build();

            result.Should().Be("push 'none'; vibrate *; something-else");
        }
Example #13
0
        public void Build_AddAccelerometer_WhenAddsMultipleValue_ReturnsAllValues()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddAccelerometer()
            .Self()
            .For("http://testUrl.com");

            var result = builder.Build();

            result.Should().Be("accelerometer 'self' http://testUrl.com");
        }
Example #14
0
        public void Build_AddAccelerometer_WhenIncludesAll_OnlyWritesAll()
        {
            var builder = new FeaturePolicyBuilder();

            builder.AddAccelerometer()
            .Self()
            .For("http://testUrl.com")
            .All();

            var result = builder.Build();

            result.Should().Be("accelerometer *");
        }