Files
nezha_domains/integration/agentcompat/internal/evidence/dedicated_assertion_test.go
T
2026-07-20 14:13:41 +00:00

47 lines
1.8 KiB
Go

package evidence
import (
"testing"
"github.com/nezhahq/nezha/integration/agentcompat/internal/contract"
)
func TestEvidence_DedicatedArtifactsRequireExactScenarioAssertions(t *testing.T) {
tests := []struct {
name string
scenario string
assertion string
artifact func(*testing.T, string)
}{
{"transfer generic", contract.ScenarioTransfer100MiB, "scenario passed", func(t *testing.T, dir string) {
writeJSONEvidenceFile(t, dir, "transfer.json", validTransferArtifact("", true))
}},
{"transfer mismatched", contract.ScenarioTransfer100MiB, contract.AssertionReconnectDisconnect, func(t *testing.T, dir string) {
writeJSONEvidenceFile(t, dir, "transfer.json", validTransferArtifact("", true))
}},
{"reconnect generic", contract.ScenarioReconnect, "scenario passed", func(t *testing.T, dir string) {
writeJSONEvidenceFile(t, dir, "reconnect.json", validReconnectArtifact(t, "", true))
}},
{"reconnect mismatched", contract.ScenarioReconnect, contract.AssertionTransferWarmup, func(t *testing.T, dir string) {
writeJSONEvidenceFile(t, dir, "reconnect.json", validReconnectArtifact(t, "", true))
}},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
dir := t.TempDir()
writeDedicatedExecutableEvidence(t, dir, test.scenario, "", true)
results := Results{Profile: "pr-full", Passed: true, Scenarios: []ScenarioResult{{Name: test.scenario, Passed: true, Assertions: []Assertion{{Name: test.assertion, Passed: true}}}}}
writeJSONEvidenceFile(t, dir, "results.json", results)
junit, err := JUnit(results)
if err != nil {
t.Fatalf("JUnit: %v", err)
}
writeEvidenceFile(t, dir, "junit.xml", string(junit))
test.artifact(t, dir)
if err := ValidateDirectory(dir); err == nil {
t.Fatal("generic assertion accepted for dedicated evidence")
}
})
}
}