示例#1
0
        public void PermissionsPolicy_Build_WhenNoValues_Returns()
        {
            var builder = new PermissionsPolicyBuilder();

            var result = builder.Build();

            result.Should().BeNullOrEmpty();
        }
示例#2
0
        /// <summary>
        /// Configure a permission policy.
        /// </summary>
        /// <param name="configure">Configure the Permissions-Policy header</param>
        /// <returns>The complete Permissions-Policy header</returns>
        public static PermissionsPolicyHeader Build(Action <PermissionsPolicyBuilder> configure)
        {
            var builder = new PermissionsPolicyBuilder();

            configure(builder);

            return(new PermissionsPolicyHeader(builder.Build()));
        }
示例#3
0
        public void PermissionsPolicy_Build_AddAccelerometer_WhenIncludesAllAndNone_ThrowsInvalidOperationException()
        {
            var builder = new PermissionsPolicyBuilder();

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

            Assert.Throws <InvalidOperationException>(() => builder.Build());
        }
示例#4
0
        public void PermissionsPolicy_Build_AddFLoC_Calculation_WhenIncludesNone_OnlyWritesNone()
        {
            var builder = new PermissionsPolicyBuilder();

            builder.AddFederatedLearningOfCohortsCalculation()
            .None();

            var result = builder.Build();

            result.Should().Be("interest-cohort=()");
        }
示例#5
0
        public void PermissionsPolicy_Build_AddSelfOnly_ReturnsOnlySelf()
        {
            var builder = new PermissionsPolicyBuilder();

            builder.AddAccelerometer()
            .Self();

            var result = builder.Build();

            result.Should().Be("accelerometer=self");
        }
示例#6
0
        public void PermissionsPolicy_Build_AddingTheSameDirectiveTwice_OverwritesThePreviousCopy()
        {
            var builder = new PermissionsPolicyBuilder();

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

            var result = builder.Build();

            result.Should().Be("accelerometer=()");
        }
示例#7
0
        public void PermissionsPolicy_Build_CustomPermissionsPolicyBuilder_AddsValues()
        {
            var builder = new PermissionsPolicyBuilder();

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

            var result = builder.Build();

            result.Should().Be("push=(), vibrate=*");
        }
示例#8
0
        public void PermissionsPolicy_Build_AddAccelerometer_WhenAddsMultipleValue_ReturnsAllValues()
        {
            var builder = new PermissionsPolicyBuilder();

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

            var result = builder.Build();

            result.Should().Be("accelerometer=(self \"http://testUrl.com\" \"https://testUrl2.se\")");
        }
示例#9
0
        public void PermissionsPolicy_Build_CustomPermissionsPolicyDirective_AddsValues()
        {
            var builder = new PermissionsPolicyBuilder();

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

            var result = builder.Build();

            result.Should().Be("push=(), vibrate=*, something-else=()");
        }
示例#10
0
        public void PermissionsBuild_AddAccelerometer_WhenIncludesAll_OnlyWritesAll()
        {
            var builder = new PermissionsPolicyBuilder();

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

            var result = builder.Build();

            result.Should().Be("accelerometer=*");
        }
示例#11
0
    /// <summary>
    /// Configures a restricted permissions policy for web apps that don't need any
    /// </summary>
    /// <param name="builder"></param>
    /// <returns></returns>
    public static PermissionsPolicyBuilder AddDefaultPermissionsPolicy(this PermissionsPolicyBuilder builder)
    {
        builder.AddAccelerometer().None();
        builder.AddAutoplay().None();
        builder.AddCamera().None();
        builder.AddEncryptedMedia().None();
        builder.AddFullscreen().None();
        builder.AddGeolocation().None();
        builder.AddGyroscope().None();
        builder.AddMagnetometer().None();
        builder.AddMicrophone().None();
        builder.AddMidi().None();
        builder.AddPayment().None();
        builder.AddPictureInPicture().None();
        builder.AddSyncXHR().None();
        builder.AddUsb().None();
        builder.AddXR().None();

        return(builder);
    }
示例#12
0
 /// <summary>
 /// This replaces the deprecated VR Feature
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static CustomPermissionsPolicyDirectiveBuilder AddXR(this PermissionsPolicyBuilder builder) => builder.AddCustomFeature("xr-spatial-tracking");