节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
978.00 B
Stardust
using Stardust.Data;
using XCode;
using Xunit;

namespace ServerTest.Apps;

/// <summary>应用在线实体单元测试</summary>
public class AppOnlineTests
{
    [Fact(DisplayName = "超长Macs在Valid时被截断为字段长度,不再抛长度超限异常")]
    public void Valid_ExtraLongMacs_Trimmed()
    {
        // 模拟 StarAgent 上报大量 Docker/虚拟网卡地址,远超 Macs 字段 200 字符限制
        var macs = String.Join(",", Enumerable.Range(0, 60).Select(e => $"02-42-06-A2-5A-{e:D2}"));
        Assert.True(macs.Length > 200);

        var entity = new AppOnline
        {
            AppId = 1,
            Client = "127.0.0.1@1",
            Macs = macs,
        };

        // 生产回归:Valid 内部先把超长字段截断,再校验字段长度,不应抛出 ArgumentOutOfRangeException
        entity.Valid(DataMethod.Update);

        Assert.Equal(200, entity.Macs.Length);
        Assert.Equal(macs[..200], entity.Macs);
    }
}