Files
hi-server/tests/acceptance/helpers_test.go
T

78 lines
1.8 KiB
Go

package acceptance
import (
"encoding/json"
"os"
"path/filepath"
"strings"
"testing"
"time"
)
func TestSplitSQLDropsCommentsAndKeepsStatements(t *testing.T) {
script := `
-- comment before first statement
SELECT 1;
-- comment before second statement
SELECT '{{RUN_ID}}';
`
statements := splitSQL(script)
if len(statements) != 2 {
t.Fatalf("len(statements) = %d, want 2: %#v", len(statements), statements)
}
if statements[0] != "SELECT 1" {
t.Fatalf("first statement = %q", statements[0])
}
if statements[1] != "SELECT '{{RUN_ID}}'" {
t.Fatalf("second statement = %q", statements[1])
}
}
func TestSanitizeBodyTruncatesLongBodies(t *testing.T) {
raw := []byte(strings.Repeat("a", 600))
got := sanitizeBody(raw)
if len(got) <= 512 {
t.Fatalf("sanitized body length = %d, want truncation marker", len(got))
}
if !strings.Contains(got, "<truncated>") {
t.Fatalf("sanitized body missing truncation marker: %q", got)
}
}
func TestWriteReportCreatesJSONArtifact(t *testing.T) {
dir := t.TempDir()
reportPath := filepath.Join(dir, "report.json")
original := acceptanceReporter
acceptanceReporter = &Reporter{started: time.Now()}
t.Cleanup(func() {
acceptanceReporter = original
})
recordCase(t, "public", "GET", "/v1/public/user/info", "200 envelope")
if err := writeReport(Config{
RunID: "qa_test",
StagingURL: "https://tapi.hifast.biz",
ReportPath: reportPath,
}); err != nil {
t.Fatalf("write report: %v", err)
}
raw, err := os.ReadFile(reportPath)
if err != nil {
t.Fatalf("read report: %v", err)
}
var report Report
if err := json.Unmarshal(raw, &report); err != nil {
t.Fatalf("decode report: %v", err)
}
if report.RunID != "qa_test" {
t.Fatalf("run id = %q", report.RunID)
}
if len(report.Cases) != 1 {
t.Fatalf("cases len = %d, want 1", len(report.Cases))
}
}