pomerium/authorize/evaluator/custom_test.go
Caleb Doxsey d7ab817de7
authorize: add databroker server and record version to result, force sync via polling (#2024)
* authorize: add databroker server and record version to result, force sync via polling

* wrap inmem store to take read lock when grabbing databroker versions

* address code review comments

* reset max to 0
2021-03-31 10:09:06 -06:00

56 lines
1.2 KiB
Go

package evaluator
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestCustomEvaluator(t *testing.T) {
ctx, clearTimeout := context.WithTimeout(context.Background(), time.Second*10)
defer clearTimeout()
store := NewStore()
t.Run("bool deny", func(t *testing.T) {
ce := NewCustomEvaluator(store)
res, err := ce.Evaluate(ctx, &CustomEvaluatorRequest{
RegoPolicy: `
package pomerium.custom_policy
deny = true
`,
})
if !assert.NoError(t, err) {
return
}
assert.Equal(t, true, res.Denied)
assert.Empty(t, res.Reason)
})
t.Run("set deny", func(t *testing.T) {
ce := NewCustomEvaluator(store)
res, err := ce.Evaluate(ctx, &CustomEvaluatorRequest{
RegoPolicy: `
package pomerium.custom_policy
deny["test"] = true
`,
})
if !assert.NoError(t, err) {
return
}
assert.Equal(t, true, res.Denied)
assert.Equal(t, "test", res.Reason)
})
t.Run("missing package", func(t *testing.T) {
ce := NewCustomEvaluator(store)
res, err := ce.Evaluate(ctx, &CustomEvaluatorRequest{
RegoPolicy: `allow = true`,
})
if !assert.NoError(t, err) {
return
}
assert.NotNil(t, res)
})
}