ci / go (push) Waiting to run
ci / go-db (agent) (push) Waiting to run
ci / go-db (config) (push) Waiting to run
ci / go-db (db) (push) Waiting to run
ci / go-db (evidence) (push) Waiting to run
ci / go-db (llmrec) (push) Waiting to run
ci / go-db (server) (push) Waiting to run
web / web (push) Waiting to run
docs / links (push) Canceled after 0s
detections / detections (push) Canceled after 0s
88 lines
2.5 KiB
Go
88 lines
2.5 KiB
Go
package db
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestFindingEvidenceLockNamespace(t *testing.T) {
|
|
for _, reserved := range []int64{7337741001, 7337741002, 7337741003} {
|
|
if findingEvidenceLockKey == reserved {
|
|
t.Fatal("evidence lock collides with migration/test/company lock")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFindingTrafficLegacyArchiveDefaults(t *testing.T) {
|
|
d, err := Open(testDSN(t))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer d.Close()
|
|
if err = d.EnsureLLMRecordsTable(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = d.EnsureLLMUsageTable(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, version := range []int{1, 2} {
|
|
t.Run(fmt.Sprint(version), func(t *testing.T) {
|
|
task, err := d.CreateTask("legacy archive evidence defaults", "fixture", nil, 0, 0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer func() { d.Exec(`DELETE FROM task_archives WHERE task_id=$1`, task.ID); d.DeleteTask(task.ID) }()
|
|
f, err := d.Exploration(task.ExplorationID).RecordFinding(t.Context(), RecordFindingInput{TaskID: task.ID, ExplorationID: task.ExplorationID, Summary: "legacy", Severity: "low"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = d.SetPaused(task.ID, true); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
archive, err := d.QueueTaskArchive(task.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err = d.ClaimTaskArchiveJob(t.Context()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
snapshot, err := d.SnapshotTaskArchive(task.ID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err = d.CompleteTaskArchive(archive.ID, snapshot, "/tmp/legacy-test.tar.zst", "fixture", 1, 1); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
snapshot.FormatVersion = version
|
|
delete(snapshot.Tables, "finding_traffic_bindings")
|
|
delete(snapshot.Tables, "traffic_evidence_snapshots")
|
|
var rows []map[string]any
|
|
if err = json.Unmarshal(snapshot.Tables["findings"], &rows); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, row := range rows {
|
|
delete(row, "evidence_version")
|
|
delete(row, "report_evidence_version")
|
|
}
|
|
snapshot.Tables["findings"], _ = json.Marshal(rows)
|
|
if _, err = d.QueueTaskArchiveRestore(archive.ID); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err = d.ClaimTaskArchiveJob(t.Context()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err = d.RestoreTaskArchive(archive.ID, snapshot, 0); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got, err := d.GetFindingTraffic(t.Context(), f.FindingID)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got.Version != 0 || got.ReportVersion != 0 || len(got.Bindings) != 0 {
|
|
t.Fatal(got)
|
|
}
|
|
})
|
|
}
|
|
}
|