using WxAgent.Core; using Xunit; namespace WxAgent.Core.Tests; public sealed class WechatManagementTests { [Fact] public void RequireConfirmation_RejectsMissingOrWrongToken() { var missing = Assert.Throws(() => WechatOperationPolicy.RequireConfirmation(null, "delete session")); var wrong = Assert.Throws(() => 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(() => WechatOperationPolicy.ValidateNames([], "members")); Assert.Throws(() => 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); } }