Ejemplo n.º 1
0
        public async Task IsFeatureEnabledAsync_MultipleFeaturesOverriddenWithDifferentEnvVars_DoNotConflict()
        {
            var forcedOff  = new NuGetFeatureFlagConstants("TestExp1", "TEST_EXP_1", defaultState: false);
            var forcedOn   = new NuGetFeatureFlagConstants("TestExp2", "TEST_EXP_2", defaultState: false);
            var noOverride = new NuGetFeatureFlagConstants("TestExp3", "TEST_EXP_3", defaultState: false);
            var envVars    = new Dictionary <string, string>()
            {
                { forcedOn.EnvironmentVariable, "1" },
                { forcedOff.EnvironmentVariable, "0" },
            };
            var envVarWrapper  = new TestEnvironmentVariableReader(envVars);
            var vsFeatureFlags = Mock.Of <IVsFeatureFlags>();

            Mock.Get(vsFeatureFlags)
            .Setup(x => x.IsFeatureEnabled(
                       It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(true);

            _globalProvider.AddService(typeof(SVsFeatureFlags), vsFeatureFlags);

            var service = new NuGetFeatureFlagService(envVarWrapper, AsyncServiceProvider.GlobalProvider);

            (await service.IsFeatureEnabledAsync(forcedOff)).Should().BeFalse();
            (await service.IsFeatureEnabledAsync(forcedOn)).Should().BeTrue();
            (await service.IsFeatureEnabledAsync(noOverride)).Should().BeTrue();
        }
Ejemplo n.º 2
0
        public async Task IsFeatureEnabledAsync_WithNullEnvironmentVariableForConstant_HandlesGracefully()
        {
            var featureFlagConstant = new NuGetFeatureFlagConstants("featureFlag", null, defaultState: false);
            var vsFeatureFlags      = Mock.Of <IVsFeatureFlags>();

            _globalProvider.AddService(typeof(SVsFeatureFlags), vsFeatureFlags);
            var service = new NuGetFeatureFlagService(new EnvironmentVariableWrapper(), AsyncServiceProvider.GlobalProvider);

            (await service.IsFeatureEnabledAsync(featureFlagConstant)).Should().Be(false);
        }
Ejemplo n.º 3
0
        public async Task IsFeatureEnabledAsync_WithoutFlag_ReturnsDefaultValueFromConstant(bool featureFlagDefault)
        {
            var featureFlagConstant = new NuGetFeatureFlagConstants("featureFlag", "featureEnvVar", defaultState: featureFlagDefault);
            var vsFeatureFlags      = Mock.Of <IVsFeatureFlags>();

            Mock.Get(vsFeatureFlags)
            .Setup(x => x.IsFeatureEnabled(
                       It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(featureFlagDefault);

            _globalProvider.AddService(typeof(SVsFeatureFlags), vsFeatureFlags);
            var service = new NuGetFeatureFlagService(new EnvironmentVariableWrapper(), AsyncServiceProvider.GlobalProvider);

            (await service.IsFeatureEnabledAsync(featureFlagConstant)).Should().Be(featureFlagDefault);
        }
Ejemplo n.º 4
0
        public async Task IsFeatureEnabledAsync_WithEnvVarNotSetWithEnabledFeatureFromWithFeatureFlagService_ReturnsExpectedResult(bool isFeatureEnabled, bool expectedResult)
        {
            var featureFlagConstant = new NuGetFeatureFlagConstants("featureFlag", "featureEnvVar", defaultState: false);
            var envVarWrapper       = new TestEnvironmentVariableReader(new Dictionary <string, string>());
            var vsFeatureFlags      = Mock.Of <IVsFeatureFlags>();

            Mock.Get(vsFeatureFlags)
            .Setup(x => x.IsFeatureEnabled(
                       It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(isFeatureEnabled);

            _globalProvider.AddService(typeof(SVsFeatureFlags), vsFeatureFlags);
            var service = new NuGetFeatureFlagService(envVarWrapper, AsyncServiceProvider.GlobalProvider);

            (await service.IsFeatureEnabledAsync(featureFlagConstant)).Should().Be(expectedResult);
        }
Ejemplo n.º 5
0
        public async Task IsFeatureEnabledAsync_WithEnvVarWithIncorrectValue_WithEnvironmentVariable__ReturnsFalse(string value)
        {
            var featureFlagConstant = new NuGetFeatureFlagConstants("featureFlag", "featureEnvVar", defaultState: false);
            var envVars             = new Dictionary <string, string>()
            {
                { featureFlagConstant.EnvironmentVariable, value },
            };
            var envVarWrapper  = new TestEnvironmentVariableReader(envVars);
            var vsFeatureFlags = Mock.Of <IVsFeatureFlags>();

            Mock.Get(vsFeatureFlags)
            .Setup(x => x.IsFeatureEnabled(
                       It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(false);

            _globalProvider.AddService(typeof(SVsFeatureFlags), vsFeatureFlags);
            var service = new NuGetFeatureFlagService(envVarWrapper, AsyncServiceProvider.GlobalProvider);

            (await service.IsFeatureEnabledAsync(featureFlagConstant)).Should().Be(false);
        }
        public void GeDefaultFeatureFlag_ReturnsValueThatMatchesConstructor(bool defaultFeatureFlag)
        {
            var constant = new NuGetFeatureFlagConstants("value", null, defaultFeatureFlag);

            constant.DefaultState.Should().Be(defaultFeatureFlag);
        }
        public void Constructor_WithNullFlightExperimentalVariable_DoesNotThrow()
        {
            var constant = new NuGetFeatureFlagConstants("value", null, defaultState: true);

            constant.EnvironmentVariable.Should().BeNull();
        }