Verify Notarius credential lifecycle

This commit is contained in:
2026-09-16 14:31:54 +00:00
parent dcaa2ad9c6
commit cc43906ae9
5 changed files with 260 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ package app
import (
"bytes"
"fmt"
"io"
"os"
"path/filepath"
@@ -119,6 +120,52 @@ func TestSecretsBootstrapPreservesExistingEnvironmentValues(t *testing.T) {
}
}
func TestNotariusCredentialLoadsFromCommandSecretBootstrap(t *testing.T) {
tests := []struct {
name string
explicit bool
environment string
fileValue string
wantValue string
}{
{name: "conventional", fileValue: "conventional-value", wantValue: "conventional-value"},
{name: "explicit", explicit: true, fileValue: "explicit-value", wantValue: "explicit-value"},
{name: "environment precedence", explicit: true, environment: "environment-value", fileValue: "file-value", wantValue: "environment-value"},
}
for index, test := range tests {
t.Run(test.name, func(t *testing.T) {
envName := fmt.Sprintf("NARRATIO_NOTARIUS_BOOTSTRAP_%d", index)
restoreEnvAfterTest(t, envName)
root := t.TempDir()
pipelinePath := filepath.Join(root, "pipeline.yml")
if err := os.WriteFile(pipelinePath, []byte("whisperx:\n transcribe_url: https://transcription.example.test/transcribe\nnotarius:\n enabled: false\n llm_api_key: "+envName+"\n"), 0o644); err != nil {
t.Fatal(err)
}
secretsDir := filepath.Join(root, "secrets")
var selection *string
if test.explicit {
secretsDir = filepath.Join(t.TempDir(), "selected-secrets")
selection = &secretsDir
}
mustWriteSecretFile(t, filepath.Join(secretsDir, envName), test.fileValue+"\n")
if test.environment != "" {
if err := os.Setenv(envName, test.environment); err != nil {
t.Fatal(err)
}
}
_, pipeline, err := loadPipelineConfigWithDependencies(pipelinePath, config.PipelineLoadOptions{}, selection, commandDependencies{diagnostics: io.Discard})
if err != nil {
t.Fatalf("load pipeline: %v", err)
}
if pipeline.Notarius == nil || pipeline.Notarius.LLMAPIKey == nil || !pipeline.Notarius.LLMAPIKey.IsResolved() ||
pipeline.Notarius.LLMAPIKey.EnvName() != envName || pipeline.Notarius.LLMAPIKey.Value() != test.wantValue {
t.Fatal("Notarius credential did not resolve from the selected command bootstrap source")
}
})
}
}
func TestSecretsBootstrapPreservesSafePartialReportOnFailure(t *testing.T) {
directory := t.TempDir()
mustWriteSecretFile(t, filepath.Join(directory, "INVALID-NAME"), "must-not-appear\n")
@@ -173,7 +220,7 @@ func TestExecuteConfigValidateReportsSkippedEmptyBeforeTypedLoadFailure(t *testi
if err != nil {
t.Fatal(err)
}
pipelineYAML = []byte(strings.Replace(string(pipelineYAML), "audita:\n binary:", "audita:\n llm_api_key: "+name+"\n binary:", 1))
pipelineYAML = append(pipelineYAML, []byte("notarius:\n enabled: false\n llm_api_key: "+name+"\n")...)
if err := os.WriteFile(pipelinePath, pipelineYAML, 0o644); err != nil {
t.Fatal(err)
}