节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
1.48 KiB
Stardust
using System.Net;
using NewLife;
using Stardust.Models;
using Xunit;

namespace Stardust.Tests;

/// <summary>代理信息测试。覆盖DNS列表解析(穿透 systemd-resolved 本地存根)</summary>
public class AgentInfoTests
{
    [Fact(DisplayName = "解析resolv.conf的DNS列表")]
    public void ParseDnsServersTest()
    {
        var content = "# 由 systemd-resolved 管理\nnameserver 127.0.0.53\nnameserver 10.0.0.1\nnameserver 223.5.5.5  # 阿里\nnameserver 10.0.0.1\n";

        var list = AgentInfo.ParseDnsServers(content);

        // 剔除本地存根与重复项,保留真实上游DNS
        Assert.Equal(2, list.Length);
        Assert.Equal("10.0.0.1", list[0]);
        Assert.Equal("223.5.5.5", list[1]);
    }

    [Fact(DisplayName = "解析空的DNS内容")]
    public void ParseDnsServersEmptyTest()
    {
        Assert.Empty(AgentInfo.ParseDnsServers(""));
        Assert.Empty(AgentInfo.ParseDnsServers("nameserver 127.0.0.53\n"));
    }

    [Fact(DisplayName = "获取DNS列表")]
    public void GetDnsListTest()
    {
        // 列表内容因环境而异,只校验格式合法且不含本地存根
        var dns = AgentInfo.GetDnsList();
        if (!dns.IsNullOrEmpty())
        {
            foreach (var item in dns.Split(','))
            {
                Assert.True(IPAddress.TryParse(item, out _), $"不是合法IP:{item}");
                Assert.False(dns.Contains("127.0.0.53"), $"不应包含本地存根:{dns}");
            }
        }
    }
}