Beispiel #1
0
        public void ImplicitArrayItemReplacement()
        {
            var json1 = @"{
                'ip': [
                    '1.2.3.4',
                    '7.8.9.10',
                    '11.12.13.14'
                ]
            }";

            var json2 = @"{
                'ip': [
                    '15.16.17.18'
                ]
            }";

            var jsonConfigSource1 = new NewtonsoftJsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json1)
            };
            var jsonConfigSource2 = new NewtonsoftJsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json2)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(jsonConfigSource1);
            configurationBuilder.Add(jsonConfigSource2);
            var config = configurationBuilder.Build();

            Assert.Equal(3, config.GetSection("ip").GetChildren().Count());
            Assert.Equal("15.16.17.18", config["ip:0"]);
            Assert.Equal("7.8.9.10", config["ip:1"]);
            Assert.Equal("11.12.13.14", config["ip:2"]);
        }
Beispiel #2
0
        public void ArraysAreKeptInFileOrder()
        {
            var json = @"{
                'setting': [
                    'b',
                    'a',
                    '2'
                ]
            }";

            var jsonConfigSource = new NewtonsoftJsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(jsonConfigSource);
            var config = configurationBuilder.Build();

            var configurationSection       = config.GetSection("setting");
            var indexConfigurationSections = configurationSection.GetChildren().ToArray();

            Assert.Equal(3, indexConfigurationSections.Count());
            Assert.Equal("b", indexConfigurationSections[0].Value);
            Assert.Equal("a", indexConfigurationSections[1].Value);
            Assert.Equal("2", indexConfigurationSections[2].Value);
        }
Beispiel #3
0
        public void PropertiesAreSortedByNumberOnlyFirst()
        {
            var json = @"{
                'setting': {
                    'hello': 'a',
                    'bob': 'b',
                    '42': 'c',
                    '4':'d',
                    '10': 'e',
                    '1text': 'f',
                }
            }";

            var jsonConfigSource = new NewtonsoftJsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(jsonConfigSource);
            var config = configurationBuilder.Build();

            var configurationSection       = config.GetSection("setting");
            var indexConfigurationSections = configurationSection.GetChildren().ToArray();

            Assert.Equal(6, indexConfigurationSections.Count());
            Assert.Equal("4", indexConfigurationSections[0].Key);
            Assert.Equal("10", indexConfigurationSections[1].Key);
            Assert.Equal("42", indexConfigurationSections[2].Key);
            Assert.Equal("1text", indexConfigurationSections[3].Key);
            Assert.Equal("bob", indexConfigurationSections[4].Key);
            Assert.Equal("hello", indexConfigurationSections[5].Key);
        }
        public void SequencesAreKeptInFileOrder()
        {
            var yaml = @"
            setting:
              - 'b'
              - 'a'
              - '2'
            ";

            var yamlConfigSource = new YamlConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(yaml)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(yamlConfigSource);
            var config = configurationBuilder.Build();

            var configurationSection       = config.GetSection("setting");
            var indexConfigurationSections = configurationSection.GetChildren().ToArray();

            Assert.Equal(3, indexConfigurationSections.Count());
            Assert.Equal("b", indexConfigurationSections[0].Value);
            Assert.Equal("a", indexConfigurationSections[1].Value);
            Assert.Equal("2", indexConfigurationSections[2].Value);
        }
        public void ImplicitSequenceItemReplacement()
        {
            var yaml1 = @"
                'ip': 
                - 1.2.3.4
                - '7.8.9.10'
                - '11.12.13.14'
                ";

            var yaml2 = @"
                'ip': 
                - '15.16.17.18'
            ";

            var yamlConfigSource1 = new YamlConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(yaml1)
            };
            var yamlConfigSource2 = new YamlConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(yaml2)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(yamlConfigSource1);
            configurationBuilder.Add(yamlConfigSource2);
            var config = configurationBuilder.Build();

            Assert.Equal(3, config.GetSection("ip").GetChildren().Count());
            Assert.Equal("15.16.17.18", config["ip:0"]);
            Assert.Equal("7.8.9.10", config["ip:1"]);
            Assert.Equal("11.12.13.14", config["ip:2"]);
        }
Beispiel #6
0
        public void PropertiesAreSortedByNumberOnlyFirst()
        {
            var json = @"{
                ""setting"": {
                    ""hello"": ""a"",
                    ""bob"": ""b"",
                    ""42"": ""c"",
                    ""4"":""d"",
                    ""10"": ""e"",
                    ""1text"": ""f""
                }
            }";

            var jsonConfigSource = new JsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(jsonConfigSource);
            var config = configurationBuilder.Build();

            var configurationSection       = config.GetSection("setting");
            var indexConfigurationSections = configurationSection.GetChildren().ToArray();

            Assert.Equal(6, indexConfigurationSections.Count());
            Assert.Equal("4", indexConfigurationSections[0].Key);
            Assert.Equal("10", indexConfigurationSections[1].Key);
            Assert.Equal("42", indexConfigurationSections[2].Key);
            Assert.Equal("1text", indexConfigurationSections[3].Key);
            Assert.Equal("bob", indexConfigurationSections[4].Key);
            Assert.Equal("hello", indexConfigurationSections[5].Key);
        }
Beispiel #7
0
        public void ArrayMerge()
        {
            var json1 = @"{
                ""ip"": [
                    ""1.2.3.4"",
                    ""7.8.9.10"",
                    ""11.12.13.14""
                ]
            }";

            var json2 = @"{
                ""ip"": {
                    ""3"": ""15.16.17.18""
                }
            }";

            var jsonConfigSource1 = new JsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json1)
            };
            var jsonConfigSource2 = new JsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json2)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(jsonConfigSource1);
            configurationBuilder.Add(jsonConfigSource2);
            var config = configurationBuilder.Build();

            Assert.Equal(4, config.GetSection("ip").GetChildren().Count());
            Assert.Equal("1.2.3.4", config["ip:0"]);
            Assert.Equal("7.8.9.10", config["ip:1"]);
            Assert.Equal("11.12.13.14", config["ip:2"]);
            Assert.Equal("15.16.17.18", config["ip:3"]);
        }
Beispiel #8
0
        public void OverrideWithNullValue()
        {
            var yaml1 = @"
                firstname: test
                ";

            var yaml2 = @"
                firstname: null
                ";

            var yamlConfigSource1 = new YamlConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(yaml1)
            };
            var yamlConfigSource2 = new YamlConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(yaml2)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(yamlConfigSource1);
            configurationBuilder.Add(yamlConfigSource2);
            var config = configurationBuilder.Build();

            Assert.Null(config["firstname"]);
        }
Beispiel #9
0
        public void EmptyArrayNotIgnored()
        {
            var json = @"{
                ""ip"": {
                    ""array"": [
                    ],
                    ""object"":{
                    }
                }
            }";

            var jsonConfigSource = new JsonConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(json)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(jsonConfigSource);
            var config = configurationBuilder.Build();

            var configurationSection = config.GetSection("ip");

            var ipSectionChildren = configurationSection.GetChildren().ToArray();

            Assert.Equal(1, config.GetChildren().Count());
            Assert.Equal(2, ipSectionChildren.Count());
            Assert.Equal("array", ipSectionChildren[0].Key);
            Assert.Null(ipSectionChildren[0].Value);
            Assert.Equal("object", ipSectionChildren[1].Key);
            Assert.Null(ipSectionChildren[1].Value);
            Assert.Equal(0, ipSectionChildren[0].GetChildren().Count());
            Assert.Equal(0, ipSectionChildren[1].GetChildren().Count());
        }
Beispiel #10
0
        public void ReturnEmptyConfigWhenFileIsEmpty()
        {
            var yaml = @"";

            var yamlConfigSrc = new YamlConfigurationSource {
                FileProvider = TestStreamHelpers.StringToFileProvider(yaml)
            };

            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.Add(yamlConfigSrc);
            var config = configurationBuilder.Build();

            Assert.Empty(config.AsEnumerable());
        }