mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-16 03:47:22 +08:00
- 接入任务持久化、生命周期、调度运行与检查点管理 - 提供 ID 作用域元数据、能力解析、预检和生产审批接口 - 串联水位与 MongoDB CDC 执行、错误行隔离及安全重放
49 lines
1.7 KiB
Go
49 lines
1.7 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
|
|
"GoNavi-Wails/internal/syncjob"
|
|
)
|
|
|
|
func TestPublicDataSyncRunStripsBackendApprovalAndFingerprints(t *testing.T) {
|
|
definition := approvalTestDefinition()
|
|
definition.Source.Fingerprint = "source-secret-derived-proof"
|
|
definition.Target.Fingerprint = "target-secret-derived-proof"
|
|
definition.Approval = &syncjob.ExecutionApproval{
|
|
DefinitionHash: "approval-hash", TargetFingerprint: "target-secret-derived-proof", ApprovedAt: 1, ApprovedByRuntime: "desktop",
|
|
}
|
|
snapshot, err := json.Marshal(definition)
|
|
if err != nil {
|
|
t.Fatalf("marshal snapshot: %v", err)
|
|
}
|
|
public := publicDataSyncRun(syncjob.RunRecord{
|
|
DefinitionSnapshot: snapshot,
|
|
SourceFingerprint: definition.Source.Fingerprint,
|
|
TargetFingerprint: definition.Target.Fingerprint,
|
|
})
|
|
encoded, err := json.Marshal(public)
|
|
if err != nil {
|
|
t.Fatalf("marshal public run: %v", err)
|
|
}
|
|
text := string(encoded)
|
|
for _, forbidden := range []string{"source-secret-derived-proof", "target-secret-derived-proof", "approval-hash", "approvedByRuntime"} {
|
|
if strings.Contains(text, forbidden) {
|
|
t.Fatalf("public run leaked %q: %s", forbidden, text)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPublicDataSyncRunEventScrubsLegacyErrorPayload(t *testing.T) {
|
|
event := publicDataSyncRunEvent(syncjob.RunEvent{
|
|
Type: syncjob.RunEventErrorRow,
|
|
Payload: json.RawMessage(`{"id":"error-1","sourceKey":{"email":"private@example.com"},"payload":{"secret":"raw"},"payloadHash":"safe"}`),
|
|
})
|
|
text := string(event.Payload)
|
|
if strings.Contains(text, "private@example.com") || strings.Contains(text, "\"secret\"") || !strings.Contains(text, "payloadHash") {
|
|
t.Fatalf("sanitized legacy error event = %s", text)
|
|
}
|
|
}
|