Files
Agent-System-Backend/pkg/extension/regulations_test.go
T

79 lines
3.4 KiB
Go

package extension_test
import (
"context"
"encoding/json"
"strings"
"testing"
"agent-system-backend/pkg/extension"
)
// publicRegulationsProvider is a downstream provider built only from the
// public extension surface.
type publicRegulationsProvider struct{}
func (publicRegulationsProvider) SearchRegulations(context.Context, extension.RegulationsCaller, extension.RegulationsSearchRequest) (extension.RegulationsSearchResult, error) {
return extension.RegulationsSearchResult{State: extension.RegulationsStateEmpty}, nil
}
func (publicRegulationsProvider) ResolveRegulationEvidence(context.Context, extension.RegulationsCaller, extension.RegulationEvidenceRequest) (extension.RegulationEvidence, error) {
return extension.RegulationEvidence{Disclosure: extension.RegulationDisclosureMetadataOnly}, nil
}
func (publicRegulationsProvider) SearchWeb(context.Context, extension.RegulationsCaller, extension.WebSearchRequest) (extension.WebSearchResult, error) {
return extension.WebSearchResult{State: extension.WebSearchStateUnavailable}, nil
}
func (publicRegulationsProvider) CaptureWeb(context.Context, extension.RegulationsCaller, extension.WebCaptureRequest) (extension.WebCapture, error) {
return extension.WebCapture{State: extension.WebCaptureStateFailed}, nil
}
var _ extension.RegulationsProvider = publicRegulationsProvider{}
func TestRegulationsContractIsOptional(t *testing.T) {
var host extension.Host
if _, ok := host.(extension.RegulationsHost); ok {
t.Fatal("nil host must not expose regulations")
}
var registry extension.Registry
if _, ok := registry.(extension.RegulationsRegistrar); ok {
t.Fatal("nil registry must not expose regulations registration")
}
if extension.RegulationsSchemaVersion != 1 {
t.Fatalf("schema version = %d", extension.RegulationsSchemaVersion)
}
if extension.ErrRegulationsUnavailable == nil {
t.Fatal("unavailable error must be defined")
}
}
func TestRegulationsWireNames(t *testing.T) {
states := []string{extension.RegulationsStateOK, extension.RegulationsStateEmpty, extension.RegulationsStateDegraded,
extension.RegulationsStateUnavailable, extension.RegulationDisclosureFull, extension.RegulationDisclosureExcerpt,
extension.RegulationDisclosureMetadataOnly, extension.RegulationDisclosureWithheld, extension.WebSearchStateOK,
extension.WebSearchStateEmpty, extension.WebSearchStateUnavailable, extension.WebSearchStateRateLimited,
extension.WebSearchStateRejected, extension.WebSearchStateError, extension.WebCaptureStateCaptured,
extension.WebCaptureStateRejected, extension.WebCaptureStateFailed, extension.WebRetentionFull,
extension.WebRetentionExcerpt, extension.WebRetentionMetadataOnly}
want := "ok empty degraded unavailable full excerpt metadata_only withheld ok empty unavailable rate_limited " +
"rejected error captured rejected failed full excerpt metadata_only"
if got := strings.Join(states, " "); got != want {
t.Fatalf("wire states = %q", got)
}
raw, err := json.Marshal(extension.WebSearchRequest{SchemaVersion: extension.RegulationsSchemaVersion, Query: "q"})
if err != nil {
t.Fatal(err)
}
if string(raw) != `{"schemaVersion":1,"query":"q"}` {
t.Fatalf("optional fields not omitted: %s", raw)
}
raw, err = json.Marshal(extension.RegulationsCaller{PluginID: "rdm", Owner: "alice"})
if err != nil {
t.Fatal(err)
}
if strings.Contains(strings.ToLower(string(raw)), "project") {
t.Fatalf("caller must not carry a project: %s", raw)
}
}