flex-auth/internal/sign/write_fixtures_test.go

46 lines
1.2 KiB
Go
Raw Normal View History

package sign_test
import (
"encoding/json"
"os"
"path/filepath"
"testing"
"github.com/netkingdom/flex-auth/internal/sign"
"github.com/netkingdom/flex-auth/pkg/api"
)
func TestWriteReplaySignatureFixtures(t *testing.T) {
if os.Getenv("UPDATE_FIXTURES") != "1" {
t.Skip("set UPDATE_FIXTURES=1 to regenerate signed replay fixtures")
}
dir := filepath.Join("..", "..", "examples", "secrets-engine", "replay")
data, err := os.ReadFile(filepath.Join(dir, "decision_rotate.json"))
if err != nil {
t.Fatal(err)
}
var envelope api.DecisionEnvelope
if err := json.Unmarshal(data, &envelope); err != nil {
t.Fatal(err)
}
_, priv := fixtureKey()
if err := sign.Sign(&envelope, priv, "testdata-ed25519"); err != nil {
t.Fatal(err)
}
writeJSON(t, filepath.Join(dir, "decision_rotate_signed.json"), envelope)
envelope.Effect = api.DecisionEffectDeny
envelope.Reason = "tampered_after_signing"
writeJSON(t, filepath.Join(dir, "decision_rotate_signed_tampered.json"), envelope)
}
func writeJSON(t *testing.T, path string, value any) {
t.Helper()
data, err := json.MarshalIndent(value, "", " ")
if err != nil {
t.Fatal(err)
}
if err := os.WriteFile(path, append(data, '\n'), 0o644); err != nil {
t.Fatal(err)
}
}