61 lines
2.3 KiB
C#
61 lines
2.3 KiB
C#
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"));
|
|
Assert.Throws<WxAgentException>(() => WechatOperationPolicy.ValidateNames(["same", "same"], "members"));
|
|
WechatOperationPolicy.ValidateNames(["one", "two"], "members");
|
|
}
|
|
|
|
[Fact]
|
|
public void RequireUnique_RejectsMissingAndAmbiguousTargets()
|
|
{
|
|
Assert.Equal("one", WechatOperationPolicy.RequireUnique(new[] { "one" }, "target"));
|
|
Assert.Equal(WxAgentErrorCode.ControlNotFound,
|
|
Assert.Throws<WxAgentException>(() => WechatOperationPolicy.RequireUnique(Array.Empty<string>(), "target")).Code);
|
|
Assert.Equal(WxAgentErrorCode.ControlNotFound,
|
|
Assert.Throws<WxAgentException>(() => WechatOperationPolicy.RequireUnique(new[] { "one", "two" }, "target")).Code);
|
|
}
|
|
|
|
[Fact]
|
|
public void OperationResult_UnconfirmedIsNotSuccessAndWarnsAgainstRetry()
|
|
{
|
|
var result = WechatOperationResult.Unconfirmed("Submission");
|
|
Assert.False(result.Success);
|
|
Assert.Equal(WxAgentErrorCode.ResultUnconfirmed, result.Code);
|
|
Assert.Contains("Do not retry", result.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void OperationResult_OkHasNoErrorCode()
|
|
{
|
|
var result = WechatOperationResult.Ok("done");
|
|
Assert.True(result.Success);
|
|
Assert.Null(result.Code);
|
|
Assert.Equal("done", result.Message);
|
|
}
|
|
}
|