feat: complete M4 contact and group automation

This commit is contained in:
2026-09-04 23:01:02 +08:00
parent 5e3aa97644
commit 77e1e9dc2b
6 changed files with 1016 additions and 1 deletions
@@ -0,0 +1,40 @@
using WxAgent.Core;
using Xunit;
namespace WxAgent.Core.Tests;
public sealed class WechatManagementTests
{
[Fact]
public void RequireConfirmation_RejectsMissingOrWrongToken()
{
var missing = Assert.Throws<WxAgentException>(() => WechatOperationPolicy.RequireConfirmation(null, "delete session"));
var wrong = Assert.Throws<WxAgentException>(() => WechatOperationPolicy.RequireConfirmation("confirm", "delete session"));
Assert.Equal(WxAgentErrorCode.InvalidArgument, missing.Code);
Assert.Equal(WxAgentErrorCode.InvalidArgument, wrong.Code);
}
[Fact]
public void RequireConfirmation_AcceptsExactToken()
{
WechatOperationPolicy.RequireConfirmation(WechatOperationPolicy.Confirmation, "delete session");
}
[Fact]
public void ValidateNames_RequiresAtLeastOneUsableName()
{
Assert.Throws<WxAgentException>(() => WechatOperationPolicy.ValidateNames([], "members"));
Assert.Throws<WxAgentException>(() => WechatOperationPolicy.ValidateNames(["ok", ""], "members"));
WechatOperationPolicy.ValidateNames(["one", "two"], "members");
}
[Fact]
public void OperationResult_OkHasNoErrorCode()
{
var result = WechatOperationResult.Ok("done");
Assert.True(result.Success);
Assert.Null(result.Code);
Assert.Equal("done", result.Message);
}
}