70 lines
2.5 KiB
Go
70 lines
2.5 KiB
Go
|
|
package fadada
|
|||
|
|
|
|||
|
|
import "testing"
|
|||
|
|
|
|||
|
|
func TestIsSignTaskCompletedStatus(t *testing.T) {
|
|||
|
|
cases := map[string]bool{
|
|||
|
|
SignTaskStatusFinished: true,
|
|||
|
|
SignTaskStatusSignCompleted: true,
|
|||
|
|
SignTaskStatusSignProgress: false,
|
|||
|
|
SignTaskStatusTerminated: false,
|
|||
|
|
"": false,
|
|||
|
|
}
|
|||
|
|
for status, want := range cases {
|
|||
|
|
if got := IsSignTaskCompletedStatus(status); got != want {
|
|||
|
|
t.Fatalf("status %q: got %v want %v", status, got, want)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func TestBuildSignActors(t *testing.T) {
|
|||
|
|
c := NewClient(&Config{
|
|||
|
|
AppID: "app",
|
|||
|
|
AppSecret: "secret",
|
|||
|
|
ServerURL: "https://uat-api.fadada.com/api/v5/",
|
|||
|
|
OpenCorpID: "haiyu-open-corp",
|
|||
|
|
TemplateID: "tpl",
|
|||
|
|
})
|
|||
|
|
actors := c.buildSignActors(&CreateSignFlowRequest{
|
|||
|
|
PartyAOpenCorpID: "client-open-corp",
|
|||
|
|
PartyAName: "测试企业",
|
|||
|
|
PartyAUSCC: "91110000MA01234567",
|
|||
|
|
TransactorMobile: "13800138000",
|
|||
|
|
TransactorID: "110101199001011234",
|
|||
|
|
})
|
|||
|
|
if len(actors) != 2 {
|
|||
|
|
t.Fatalf("actors len=%d", len(actors))
|
|||
|
|
}
|
|||
|
|
// 甲方先签 orderNo=1(需手动验证),乙方后签 orderNo=2(模板免验证签自动盖章)
|
|||
|
|
if actors[0].Actor.ActorID != ActorIDPartyA || actors[0].SignConfigInfo.RequestVerifyFree || actors[0].SignConfigInfo.OrderNo != 1 {
|
|||
|
|
t.Fatalf("party A (first/manual-sign)6 unexpected: %+v", actors[0])
|
|||
|
|
}
|
|||
|
|
if actors[1].Actor.ActorID != ActorIDPartyB || !actors[1].SignConfigInfo.RequestVerifyFree || actors[1].SignConfigInfo.OrderNo != 2 {
|
|||
|
|
t.Fatalf("party B (second/free-sign) unexpected: %+v", actors[1])
|
|||
|
|
}
|
|||
|
|
if actors[1].SignConfigInfo.FreeSignType != freeSignTypeTemplate {
|
|||
|
|
t.Fatalf("party B freeSignType=%q, want %s", actors[1].SignConfigInfo.FreeSignType, freeSignTypeTemplate)
|
|||
|
|
}
|
|||
|
|
if actors[0].Actor.ActorID == "party_a" || actors[1].Actor.ActorID == "party_b" {
|
|||
|
|
t.Fatal("actorId must match sign-template role names, not party_a/party_b")
|
|||
|
|
}
|
|||
|
|
if actors[1].Actor.ActorOpenID != "haiyu-open-corp" {
|
|||
|
|
t.Fatalf("party B openCorpId=%s", actors[1].Actor.ActorOpenID)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func TestParseCallback(t *testing.T) {
|
|||
|
|
c := NewClient(&Config{AppID: "app", AppSecret: "secret", ServerURL: "https://x/"})
|
|||
|
|
biz := `{"signTaskId":"st-1","signTaskStatus":"task_finished","eventTime":"2026-07-14T10:00:00+08:00"}`
|
|||
|
|
ev, err := c.ParseCallback(map[string]string{"X-FASC-Event": "sign-task-finished"}, biz)
|
|||
|
|
if err != nil {
|
|||
|
|
t.Fatal(err)
|
|||
|
|
}
|
|||
|
|
if ev.SignTaskID != "st-1" || ev.SignTaskStatus != SignTaskStatusFinished {
|
|||
|
|
t.Fatalf("unexpected event: %+v", ev)
|
|||
|
|
}
|
|||
|
|
if !ev.IsSignCompletedCallback() {
|
|||
|
|
t.Fatal("expected completed callback")
|
|||
|
|
}
|
|||
|
|
}
|