snapshot of https://github.com/ent/ent.git (master, 2026-09-15; blobs > 131072B omitted)
This commit is contained in:
71
privacy/privacy_test.go
Normal file
71
privacy/privacy_test.go
Normal file
@@ -0,0 +1,71 @@
|
||||
// Copyright 2019-present Facebook Inc. All rights reserved.
|
||||
// This source code is licensed under the Apache 2.0 license found
|
||||
// in the LICENSE file in the root directory of this source tree.
|
||||
|
||||
package privacy_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"entgo.io/ent"
|
||||
"entgo.io/ent/privacy"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestDecisionContext(t *testing.T) {
|
||||
deny := privacy.DecisionContext(context.Background(), privacy.Deny)
|
||||
err := privacy.Policies{}.EvalMutation(deny, nil)
|
||||
assert.True(t, errors.Is(err, privacy.Deny))
|
||||
|
||||
allow := privacy.DecisionContext(context.Background(), privacy.Allow)
|
||||
err = privacy.Policies{}.EvalQuery(allow, nil)
|
||||
assert.NoError(t, err)
|
||||
|
||||
decision, ok := privacy.DecisionFromContext(deny)
|
||||
assert.True(t, ok)
|
||||
assert.True(t, errors.Is(decision, privacy.Deny))
|
||||
|
||||
pc := policyFunc(func(context.Context) error { panic("invalid") })
|
||||
policy := privacy.NewPolicies(pc)
|
||||
err = policy.EvalQuery(allow, nil)
|
||||
assert.NoError(t, err)
|
||||
err = policy.EvalMutation(deny, nil)
|
||||
assert.True(t, errors.Is(err, privacy.Deny))
|
||||
}
|
||||
|
||||
func TestNewPolicies(t *testing.T) {
|
||||
type ctxKey string
|
||||
var (
|
||||
key = ctxKey("i")
|
||||
pc = policyFunc(func(ctx context.Context) error {
|
||||
*(ctx.Value(key).(*int))++
|
||||
return nil
|
||||
})
|
||||
policy = privacy.NewPolicies(pc, pc, pc, pc)
|
||||
)
|
||||
|
||||
ctx := context.WithValue(context.Background(), key, new(int))
|
||||
err := policy.EvalMutation(ctx, nil)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 4, *(ctx.Value(key).(*int)))
|
||||
err = policy.EvalQuery(ctx, nil)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 8, *(ctx.Value(key).(*int)))
|
||||
}
|
||||
|
||||
type policyFunc func(context.Context) error
|
||||
|
||||
func (f policyFunc) Policy() ent.Policy {
|
||||
return f
|
||||
}
|
||||
|
||||
func (f policyFunc) EvalQuery(ctx context.Context, _ ent.Query) error {
|
||||
return f(ctx)
|
||||
}
|
||||
|
||||
func (f policyFunc) EvalMutation(ctx context.Context, _ ent.Mutation) error {
|
||||
return f(ctx)
|
||||
}
|
||||
Reference in New Issue
Block a user