pomerium/authorize/evaluator/log_test.go

49 lines
1 KiB
Go

package evaluator
import (
"bytes"
"context"
"strings"
"testing"
"time"
"github.com/open-policy-agent/opa/rego"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPrintHook(t *testing.T) {
t.Parallel()
ctx, clearTimeout := context.WithTimeout(context.Background(), time.Second*10)
t.Cleanup(clearTimeout)
r := rego.New(
rego.Module("policy.rego", `
package pomerium.policy
import rego.v1
allow if {
print("HELLO WORLD")
true
}
`),
rego.EnablePrintStatements(true),
rego.Query("data.pomerium.policy.allow"),
)
q, err := r.PrepareForEval(ctx)
require.NoError(t, err)
var buf bytes.Buffer
logger := zerolog.New(&buf).Level(zerolog.DebugLevel)
rs, err := q.Eval(ctx, rego.EvalPrintHook(regoPrintHook{
logger: logger,
}))
require.NoError(t, err)
assert.True(t, rs.Allowed())
assert.Equal(t, `{"level":"debug","location":{"file":"policy.rego","row":7,"col":2},"message":"rego: HELLO WORLD"}`, strings.TrimSpace(buf.String()))
}