public async Task WhenSettingIsNotEmptySecretInjectorIsRan()
            {
                // Arrange
                var secretInjectorMock = new Mock <ISecretInjector>();

                secretInjectorMock.Setup(x => x.InjectAsync(It.IsAny <string>()))
                .Returns <string>(s => Task.FromResult(s + "parsed"));

                var secretReaderFactory = new Mock <ISecretReaderFactory>();

                secretReaderFactory.Setup(x => x.CreateSecretReader(It.IsAny <IGalleryConfigurationService>()))
                .Returns(new EmptySecretReader());
                secretReaderFactory.Setup(x => x.CreateSecretInjector(It.IsAny <ISecretReader>()))
                .Returns(secretInjectorMock.Object);

                var configurationService = new TestableConfigurationService(secretReaderFactory.Object);

                configurationService.CloudSettingStub = "somevalue";

                // Act
                string result = await configurationService.ReadSetting("any");

                // Assert
                Assert.Equal("somevalueparsed", result);
            }
            public async Task WhenCloudSettingIsEmptyAppSettingIsReturned()
            {
                // Arrange
                var configurationService = new TestableConfigurationService();

                configurationService.CloudSettingStub     = null;
                configurationService.AppSettingStub       = string.Empty;
                configurationService.ConnectionStringStub = "abc";

                // Act
                string result = await configurationService.ReadSetting("any");

                // Assert
                Assert.Equal(configurationService.ConnectionStringStub, result);
            }
            public async Task WhenCloudSettingIsNullStringNullIsReturned()
            {
                // Arrange
                var configurationService = new TestableConfigurationService();

                configurationService.CloudSettingStub     = "null";
                configurationService.AppSettingStub       = "bla";
                configurationService.ConnectionStringStub = "abc";

                // Act
                string result = await configurationService.ReadSetting("any");

                // Assert
                Assert.Null(result);
            }
            public async Task WhenSettingIsNotEmptySecretInjectorIsRan()
            {
                // Arrange
                var secretInjectorMock = new Mock<ISecretInjector>();
                secretInjectorMock.Setup(x => x.InjectAsync(It.IsAny<string>()))
                                  .Returns<string>(s => Task.FromResult(s + "parsed"));

                var secretReaderFactory = new Mock<ISecretReaderFactory>();
                secretReaderFactory.Setup(x => x.CreateSecretReader(It.IsAny<IGalleryConfigurationService>()))
                    .Returns(new EmptySecretReader());
                secretReaderFactory.Setup(x => x.CreateSecretInjector(It.IsAny<ISecretReader>()))
                    .Returns(secretInjectorMock.Object);

                var configurationService = new TestableConfigurationService(secretReaderFactory.Object);
                configurationService.CloudSettingStub = "somevalue";

                // Act 
                string result = await configurationService.ReadSetting("any");

                // Assert
                Assert.Equal("somevalueparsed", result);
            }
            public async Task WhenCloudSettingIsEmptyAppSettingIsReturned()
            {
                // Arrange
                var configurationService = new TestableConfigurationService();
                configurationService.CloudSettingStub = null;
                configurationService.AppSettingStub = string.Empty;
                configurationService.ConnectionStringStub = "abc";

                // Act 
                string result = await configurationService.ReadSetting("any");

                // Assert
                Assert.Equal(configurationService.ConnectionStringStub, result);
            }
            public async Task WhenCloudSettingIsNullStringNullIsReturned()
            {
                // Arrange
                var configurationService = new TestableConfigurationService();
                configurationService.CloudSettingStub = "null";
                configurationService.AppSettingStub = "bla";
                configurationService.ConnectionStringStub = "abc";

                // Act 
                string result = await configurationService.ReadSetting("any");

                // Assert
                Assert. Null(result);
            }