69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
package llm
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/audita/v3/internal/core/config"
|
|
ck "go.maximumdirect.net/configkit"
|
|
)
|
|
|
|
type rejectingTransport struct{ t *testing.T }
|
|
|
|
func (r rejectingTransport) RoundTrip(*http.Request) (*http.Response, error) {
|
|
if r.t != nil {
|
|
r.t.Error("resource inspection contacted a provider")
|
|
}
|
|
return nil, errors.New("provider access forbidden")
|
|
}
|
|
|
|
func TestExplanationYAMLIncludesSafeInheritanceEvidence(t *testing.T) {
|
|
data := `version: 3
|
|
glossary_collections:
|
|
common:
|
|
entries:
|
|
- id: a
|
|
name: secret-value-not-for-explanation
|
|
category: character
|
|
derived:
|
|
extends: common
|
|
`
|
|
file := filepath.Join(t.TempDir(), "config.yml")
|
|
if err := os.WriteFile(file, []byte(data), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
loaded, err := config.Load(ck.Input{Source: ck.File(file)}, "")
|
|
if err != nil {
|
|
t.Fatalf("%v: %+v", err, err.(*ck.LoadError).Diagnostics())
|
|
}
|
|
explanation, err := ExplanationYAML(loaded)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
text := string(explanation)
|
|
if strings.Contains(text, "secret-value-not-for-explanation") {
|
|
t.Fatal("explanation exposed an effective value")
|
|
}
|
|
if !strings.Contains(text, "/glossary_collections/derived/entries") || !strings.Contains(text, "inheritance:") || !strings.Contains(text, "/glossary_collections/common/entries") {
|
|
t.Fatalf("inherited field evidence missing: %s", text)
|
|
}
|
|
}
|
|
|
|
func TestRuntimeInspectionDoesNotRequireCredentialsOrProvider(t *testing.T) {
|
|
loaded, err := config.Load(ck.Input{Source: ck.NoSource()}, "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := NewRuntime(context.Background(), loaded, &http.Client{Transport: rejectingTransport{t}}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := ExplanationYAML(nil); err == nil {
|
|
t.Fatal("nil configuration accepted")
|
|
}
|
|
}
|