Files
hyapi-server/internal/shared/fadada/signtask_service_test.go
2026-07-22 12:16:27 +08:00

75 lines
2.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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",
NoAuthSceneCode: "scene-code",
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)
}
businessID, err := c.resolveBusinessID()
if err != nil || businessID != "scene-code" {
t.Fatalf("businessId=%q err=%v, want scene-code", businessID, err)
}
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")
}
}