public void ShouldInclude() { //Arrange var srcDoc = ConfigDocument.Load("{/*include:123*/\"foo\": \"bar\"}"); var includeDoc = ConfigDocument.Load("{\"baz\":\"quux\"}"); _output.WriteLine("Source:"); _output.WriteLine(srcDoc.Serialize(true)); _output.WriteLine(""); _output.WriteLine("Include:"); _output.WriteLine(includeDoc.Serialize(true)); _output.WriteLine(""); var includes = srcDoc.GetIncludes().ToArray(); //Act includes.First().Resolve(includeDoc); _output.WriteLine("Result:"); _output.WriteLine(srcDoc.Serialize(true)); //Assert Assert.Single(includes); Assert.Equal("{\"foo\":\"bar\",\"baz\":\"quux\"}", srcDoc.Serialize(false)); }
public async Task <ConfigInfo> LoadInclude(string id) { var str = await File.ReadAllTextAsync(Path.Combine(IncludePath, id + ".json")); var config = ConfigDocument.Load(str); return(new ConfigInfo { Secrets = _secretsAnalyzer.GetSecrets(config).ToArray(), Content = JsonPrettify(str) }); }
public void ShouldApplySecrets() { //Arrange var secretProvider = new DefaultSecretsProvider("[{ \"key\": \"some-secret\", \"value\": \"some-val\" }]"); var config = ConfigDocument.Load("{\"secret\":\"[secret:some-secret]\"}"); //Act config.ApplySecrets(secretProvider); //Assert Assert.Equal("{\"secret\":\"some-val\"}", config.Serialize(false)); }
public async Task ShouldUseBaseValueWhenConflict() { //Arrange var doc = ConfigDocument.Load(SrcConfig); var includeProvider = new TestIncludeProvider(IncludeSimple); //Act await doc.ApplyIncludes(includeProvider); var res = TestModel.Create(doc); //Assert Assert.Equal("from-base-val", res.IncludeConflict); }
public async Task ShouldResolveIncludes() { //Arrange var doc = ConfigDocument.Load(SrcConfig); var includeProvider = new TestIncludeProvider(IncludeSimple); //Act await doc.ApplyIncludes(includeProvider); var res = TestModel.Create(doc); //Assert Assert.Equal("from-include-val", res.Included); }
public void ShouldOverrideSubElements() { //Arrange var originDoc = ConfigDocument.Load(SrcConfig); var overrideDoc = ConfigDocument.Load(OverrideConfig); var overrides = overrideDoc.CreateOverrides(); //Act originDoc.ApplyOverrides(overrides); var res = TestModel.Create(originDoc); //Assert Assert.Equal("NewBarVal", res.InnerObject.Bar); }
public void ShouldOverride() { //Arrange var originDoc = ConfigDocument.Load(SrcConfig); var overrideDoc = ConfigDocument.Load(OverrideConfig); var overrides = overrideDoc.CreateOverrides(); //Act originDoc.ApplyOverrides(overrides); var res = TestModel.Create(originDoc); //Assert Assert.Equal("NewVal", res.ParamForOverride); }
public async Task <ConfigDocument> LoadConfigCore(string id) { var originStr = await File.ReadAllTextAsync(Path.Combine(ConfigsPath, id + ".json")); var originDoc = ConfigDocument.Load(originStr); await originDoc.ApplyIncludes(new DefaultIncludeProvider(IncludePath)); var overridePath = Path.Combine(OverridesPath, id + ".json"); var overridingStr = File.Exists(overridePath) ? await File.ReadAllTextAsync(overridePath) : null; if (!string.IsNullOrWhiteSpace(overridingStr)) { var overrideDoc = ConfigDocument.Load(overridingStr); originDoc.ApplyOverride(overrideDoc); } return(originDoc); }
public async Task ShouldIncludeOneItemArray() { //Arrange const string includeArray = "{" + "\"IncludedArray\":[\"foo\"]," + "\"IncludeConflict\":\"from-include-val\"" + "}"; var doc = ConfigDocument.Load(SrcConfig); var includeProvider = new TestIncludeProvider(includeArray); //Act await doc.ApplyIncludes(includeProvider); var res = TestModel.Create(doc); //Assert Assert.NotNull(res.IncludedArray); Assert.Single(res.IncludedArray); Assert.Equal("foo", res.IncludedArray[0]); }
public Task <ConfigDocument> GetInclude(string id) { return(Task.FromResult(ConfigDocument.Load(_cfg))); }