public void IsEnabled_MultipleExperimentsOverriddenWithDifferentEnvVars_DoNotConflict() { var forcedOffExperiment = new ExperimentationConstants("TestExp1", "TEST_EXP_1"); var forcedOnExperiment = new ExperimentationConstants("TestExp2", "TEST_EXP_2"); var noOverrideExperiment = new ExperimentationConstants("TestExp3", "TEST_EXP_3"); var flightsEnabled = new Dictionary <string, bool>() { { forcedOffExperiment.FlightFlag, true }, { forcedOnExperiment.FlightFlag, true }, { noOverrideExperiment.FlightFlag, true }, }; var envVars = new Dictionary <string, string>() { { forcedOnExperiment.FlightEnvironmentVariable, "1" }, { forcedOffExperiment.FlightEnvironmentVariable, "0" }, }; var envVarWrapper = new TestEnvironmentVariableReader(envVars); var service = new NuGetExperimentationService(envVarWrapper, new TestVisualStudioExperimentalService(flightsEnabled), _outputConsoleProvider); service.IsExperimentEnabled(forcedOffExperiment).Should().BeFalse(); service.IsExperimentEnabled(forcedOnExperiment).Should().BeTrue(); service.IsExperimentEnabled(noOverrideExperiment).Should().BeTrue(); OutputMessages.Should().ContainMatch($"*{forcedOffExperiment.FlightFlag}*{forcedOffExperiment.FlightEnvironmentVariable}*0*"); OutputMessages.Should().ContainMatch($"*{forcedOnExperiment.FlightFlag}*{forcedOnExperiment.FlightEnvironmentVariable}*1*"); OutputMessages.Should().NotContainMatch($"*{noOverrideExperiment.FlightFlag}*{noOverrideExperiment.FlightEnvironmentVariable}*"); }
public NuGetPackageSearchServiceTests(GlobalServiceProvider globalServiceProvider) : base(globalServiceProvider) { _installedPackages = new List <IPackageReferenceContextInfo>(); _transitivePackages = new List <ITransitivePackageReferenceContextInfo>(); _projects = new List <IProjectContextInfo> { new ProjectContextInfo( Guid.NewGuid().ToString(), ProjectModel.ProjectStyle.PackageReference, NuGetProjectKind.PackageReference) }; var testFeedUrl = "https://testsource.test/v3/index.json"; var query = "https://api-v2v3search-0.nuget.org/query"; var responses = new Dictionary <string, string> { { testFeedUrl, ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.index.json", GetType()) }, { query + "?q=nuget&skip=0&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetSearchPage1.json", GetType()) }, { query + "?q=nuget&skip=25&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetSearchPage2.json", GetType()) }, { query + "?q=&skip=0&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.blankSearchPage.json", GetType()) }, { "https://api.nuget.org/v3/registration3-gz-semver2/nuget.core/index.json", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetCoreIndex.json", GetType()) }, { "https://api.nuget.org/v3/registration3-gz-semver2/microsoft.extensions.logging.abstractions/index.json", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.loggingAbstractions.json", GetType()) } }; _componentModel = new Mock <IComponentModel>(); var expService = new NuGetExperimentationService(new TestEnvironmentVariableReader(new Dictionary <string, string>()), new TestVisualStudioExperimentalService(_experimentationFlags)); _componentModel.Setup(x => x.GetService <INuGetExperimentationService>()).Returns(expService); globalServiceProvider.AddService(typeof(SComponentModel), _componentModel.Object); _sourceRepository = StaticHttpHandler.CreateSource(testFeedUrl, Repository.Provider.GetCoreV3(), responses); }
public void IsEnabled_WithoutEnabledFlight_ReturnsFalse() { var service = new NuGetExperimentationService(new EnvironmentVariableWrapper(), new TestVisualStudioExperimentalService(), _outputConsoleProvider); var constant = ExperimentationConstants.PackageManagerBackgroundColor; service.IsExperimentEnabled(constant).Should().BeFalse(); OutputMessages.Should().NotContainMatch($"*{constant.FlightFlag}*{constant.FlightEnvironmentVariable}*"); }
public void IsEnabled_WithNullEnvironmentVariableForConstant_HandlesGracefully() { var service = new NuGetExperimentationService(new EnvironmentVariableWrapper(), new TestVisualStudioExperimentalService(), _outputConsoleProvider); var constant = new ExperimentationConstants("flag", null); service.IsExperimentEnabled(constant).Should().BeFalse(); OutputMessages.Should().NotContainMatch($"*{constant.FlightFlag}*{constant.FlightEnvironmentVariable}*"); }
public void IsEnabled_WithEnvVarWithIncorrectValue_WithExperimentalService_ReturnsFalse() { var constant = ExperimentationConstants.PackageManagerBackgroundColor; var flightsEnabled = new Dictionary <string, bool>() { { constant.FlightFlag, false }, }; var service = new NuGetExperimentationService(new TestEnvironmentVariableReader(new Dictionary <string, string>()), new TestVisualStudioExperimentalService(flightsEnabled)); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().BeFalse(); }
public void IsEnabled_WithEnvVarNotSetAndExperimentalService_ReturnsExpectedResult(bool isFlightEnabled, bool expectedResult) { var constant = ExperimentationConstants.PackageManagerBackgroundColor; var flightsEnabled = new Dictionary <string, bool>() { { constant.FlightFlag, isFlightEnabled }, }; var service = new NuGetExperimentationService(new TestEnvironmentVariableReader(new Dictionary <string, string>()), new TestVisualStudioExperimentalService(flightsEnabled)); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().Be(expectedResult); }
public void IsEnabled_WithEnvVarWithIncorrectValue_WithEnvironmentVariable__ReturnsFalse(string value) { var constant = ExperimentationConstants.PackageManagerBackgroundColor; var envVars = new Dictionary <string, string>() { { constant.FlightEnvironmentVariable, value }, }; var envVarWrapper = new TestEnvironmentVariableReader(envVars); var service = new NuGetExperimentationService(envVarWrapper, new TestVisualStudioExperimentalService()); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().BeFalse(); }
public void IsEnabled_WithEnabledFlight_WithExperimentalService_ReturnsTrue() { var constant = ExperimentationConstants.PackageManagerBackgroundColor; var flightsEnabled = new Dictionary <string, bool>() { { constant.FlightFlag, true }, }; var service = new NuGetExperimentationService(new TestEnvironmentVariableReader(new Dictionary <string, string>()), new TestVisualStudioExperimentalService(flightsEnabled), _outputConsoleProvider); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().BeTrue(); OutputMessages.Should().NotContainMatch($"*{constant.FlightFlag}*{constant.FlightEnvironmentVariable}*"); }
public void IsEnabled_WithEnabledFlightAndForcedEnabledEnvVar_ReturnsTrue() { var constant = ExperimentationConstants.PackageManagerBackgroundColor; var envVars = new Dictionary <string, string>() { { constant.FlightEnvironmentVariable, "1" }, }; var envVarWrapper = new TestEnvironmentVariableReader(envVars); var service = new NuGetExperimentationService(envVarWrapper, new TestVisualStudioExperimentalService()); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().BeTrue(); }
public void IsEnabled_WithEnvVarDisabled_WithExperimentalServiceEnabled_ReturnsFalse() { var constant = ExperimentationConstants.PackageManagerBackgroundColor; var flightsEnabled = new Dictionary <string, bool>() { { constant.FlightFlag, true }, }; var envVars = new Dictionary <string, string>() { { constant.FlightEnvironmentVariable, "0" }, }; var envVarWrapper = new TestEnvironmentVariableReader(envVars); var service = new NuGetExperimentationService(envVarWrapper, new TestVisualStudioExperimentalService(flightsEnabled)); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().BeFalse(); }
public void IsEnabled_WithoutEnabledFlight_ReturnsFalse() { var service = new NuGetExperimentationService(new EnvironmentVariableWrapper(), new TestVisualStudioExperimentalService()); service.IsExperimentEnabled(ExperimentationConstants.PackageManagerBackgroundColor).Should().BeFalse(); }
public void IsEnabled_WithNullEnvironmentVariableForConstant_HandlesGracefully() { var service = new NuGetExperimentationService(new EnvironmentVariableWrapper(), new TestVisualStudioExperimentalService()); service.IsExperimentEnabled(new ExperimentationConstants("flag", null)).Should().BeFalse(); }