using System;
using System.IO;
using System.Text.Json;

namespace SKIT.FlurlHttpClient.Wechat.TenpayBusiness.UnitTests
{
    internal class TestConfigs
    {
        static TestConfigs()
        {
            // NOTICE: 请在项目根目录下按照 appsettings.json 的格式新建 appsettings.local.json 填入测试参数。
            // WARN: 敏感信息请不要提交到 git！

            try
            {
                using var stream = File.OpenRead("appsettings.local.json");
                using var jdoc = JsonDocument.Parse(stream);

                var config = jdoc.RootElement.GetProperty("TestConfig");
                WechatPlatformId = config.GetProperty("PlatformId").GetString()!;
                WechatPlatformCertSerialNumber = config.GetProperty("PlatformCertSerialNumber").GetString()!;
                WechatPlatformCertPrivateKey = config.GetProperty("PlatformCertPrivateKey").GetString()!;
                WechatTBEPCertSerialNumber = config.GetProperty("TBEPCertSerialNumber").GetString()!;
                WechatTBEPCertPrivateKey = config.GetProperty("TBEPCertPrivateKey").GetString()!;

                WorkDirectoryForSdk = jdoc.RootElement.GetProperty("WorkDirectoryForSdk").GetString()!;
                WorkDirectoryForTest = jdoc.RootElement.GetProperty("WorkDirectoryForTest").GetString()!;
            }
            catch (Exception ex)
            {
                throw new Exception("加载配置文件 appsettings.local.json 失败，请查看 `InnerException` 了解具体失败原因", ex);
            }
        }

        public static readonly string WechatPlatformId;
        public static readonly string WechatPlatformCertSerialNumber;
        public static readonly string WechatPlatformCertPrivateKey;
        public static readonly string WechatTBEPCertSerialNumber;
        public static readonly string WechatTBEPCertPrivateKey;

        public static readonly string WorkDirectoryForSdk;
        public static readonly string WorkDirectoryForTest;
    }
}
