File: Logging\TestConfiguration.cs
Web Access
Project: src\test\Libraries\Microsoft.Extensions.Telemetry.Tests\Microsoft.Extensions.Telemetry.Tests.csproj (Microsoft.Extensions.Telemetry.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
 
namespace Microsoft.Extensions.Logging.Test;
 
internal class TestConfiguration : JsonConfigurationProvider
{
    private Func<string> _json;
 
    public TestConfiguration(JsonConfigurationSource source, Func<string> json)
        : base(source)
    {
        _json = json;
    }
 
    public static ConfigurationRoot Create(Func<string> getJson)
    {
        var provider = new TestConfiguration(new JsonConfigurationSource { Optional = true }, getJson);
        return new ConfigurationRoot(new List<IConfigurationProvider> { provider });
    }
 
    public override void Load()
    {
        var stream = new MemoryStream();
        using var writer = new StreamWriter(stream);
        writer.Write(_json());
        writer.Flush();
        stream.Seek(0, SeekOrigin.Begin);
        Load(stream);
    }
}