fadd
This commit is contained in:
69
internal/shared/fadada/signtask_service_test.go
Normal file
69
internal/shared/fadada/signtask_service_test.go
Normal file
@@ -0,0 +1,69 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user