package policy_test import ( "os" "path/filepath" "testing" "gopkg.in/yaml.v3" "github.com/netkingdom/flex-auth/pkg/api" ) func TestPolicyPackageMetadataParses(t *testing.T) { var metadata api.PolicyPackageMetadata loadYAML(t, filepath.Join("..", "..", "examples", "caring", "policy_package.yaml"), &metadata) if metadata.Caring.Profile != api.CaringProfileCaring040RC2 { t.Fatalf("metadata.Caring.Profile = %q; want %q", metadata.Caring.Profile, api.CaringProfileCaring040RC2) } if len(metadata.Caring.Capabilities) != 1 || metadata.Caring.Capabilities[0] != api.CapabilityView { t.Errorf("metadata.Caring.Capabilities = %v; want [View]", metadata.Caring.Capabilities) } if len(metadata.Caring.Restrictions) != 1 || metadata.Caring.Restrictions[0] != api.RestrictionExportBlocked { t.Errorf("metadata.Caring.Restrictions = %v; want [ExportBlocked]", metadata.Caring.Restrictions) } } func TestPolicyFixtureParses(t *testing.T) { var fixture api.PolicyFixture loadYAML(t, filepath.Join("..", "..", "examples", "caring", "policy_fixture.yaml"), &fixture) if fixture.Expect.Effect != api.DecisionEffectAllow { t.Errorf("fixture.Expect.Effect = %q; want allow", fixture.Expect.Effect) } if fixture.Request.CaringContext == nil { t.Fatal("fixture.Request.CaringContext is nil") } } func loadYAML(t *testing.T, path string, out any) { t.Helper() data, err := os.ReadFile(path) if err != nil { t.Fatalf("read %s: %v", path, err) } if err := yaml.Unmarshal(data, out); err != nil { t.Fatalf("unmarshal %s: %v", path, err) } }