mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-22 05:27:13 +02:00
Pomerium Policy Language (#2202)
* policy: add parser and generator for Pomerium Policy Language * add criteria * add additional criteria
This commit is contained in:
parent
9fe941ccee
commit
e138054cb9
33 changed files with 2758 additions and 0 deletions
117
pkg/policy/parser/json_test.go
Normal file
117
pkg/policy/parser/json_test.go
Normal file
|
@ -0,0 +1,117 @@
|
|||
package parser
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/open-policy-agent/opa/ast"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestArray(t *testing.T) {
|
||||
var _ Value = Array{}
|
||||
t.Run("Clone", func(t *testing.T) {
|
||||
a1 := Array{Number("1"), Number("2"), Number("3")}
|
||||
a2 := a1.Clone()
|
||||
assert.Equal(t, a1, a2)
|
||||
})
|
||||
t.Run("RegoValue", func(t *testing.T) {
|
||||
a := Array{Number("1"), Number("2")}
|
||||
assert.Equal(t, ast.NewArray(
|
||||
ast.NumberTerm("1"),
|
||||
ast.NumberTerm("2"),
|
||||
), a.RegoValue())
|
||||
})
|
||||
t.Run("String", func(t *testing.T) {
|
||||
a := Array{Number("1"), Number("2"), Boolean(true)}
|
||||
assert.Equal(t, `[1,2,true]`, a.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestBoolean(t *testing.T) {
|
||||
var _ Value = Boolean(true)
|
||||
t.Run("Clone", func(t *testing.T) {
|
||||
b1 := Boolean(true)
|
||||
b2 := b1.Clone()
|
||||
assert.Equal(t, b1, b2)
|
||||
})
|
||||
t.Run("RegoValue", func(t *testing.T) {
|
||||
b := Boolean(true)
|
||||
assert.Equal(t, ast.Boolean(true), b.RegoValue())
|
||||
})
|
||||
t.Run("String", func(t *testing.T) {
|
||||
b := Boolean(true)
|
||||
assert.Equal(t, `true`, b.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestNull(t *testing.T) {
|
||||
var _ Value = Null{}
|
||||
t.Run("Clone", func(t *testing.T) {
|
||||
n1 := Null{}
|
||||
n2 := n1.Clone()
|
||||
assert.Equal(t, n1, n2)
|
||||
})
|
||||
t.Run("RegoValue", func(t *testing.T) {
|
||||
n := Null{}
|
||||
assert.Equal(t, ast.Null{}, n.RegoValue())
|
||||
})
|
||||
t.Run("String", func(t *testing.T) {
|
||||
n := Null{}
|
||||
assert.Equal(t, `null`, n.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestNumber(t *testing.T) {
|
||||
var _ Value = Number("1")
|
||||
t.Run("Clone", func(t *testing.T) {
|
||||
n1 := Number("1")
|
||||
n2 := n1.Clone()
|
||||
assert.Equal(t, n1, n2)
|
||||
})
|
||||
t.Run("RegoValue", func(t *testing.T) {
|
||||
n := Number("1")
|
||||
assert.Equal(t, ast.Number("1"), n.RegoValue())
|
||||
})
|
||||
t.Run("String", func(t *testing.T) {
|
||||
n := Number("1")
|
||||
assert.Equal(t, `1`, n.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestObject(t *testing.T) {
|
||||
var _ Value = Object{}
|
||||
t.Run("Clone", func(t *testing.T) {
|
||||
o1 := Object{"x": String("y")}
|
||||
o2 := o1.Clone().(Object)
|
||||
assert.Equal(t, o1, o2)
|
||||
o2["x"] = String("z")
|
||||
assert.NotEqual(t, o1, o2)
|
||||
})
|
||||
t.Run("RegoValue", func(t *testing.T) {
|
||||
o := Object{"x": String("y")}
|
||||
assert.Equal(t, ast.NewObject(
|
||||
[2]*ast.Term{ast.StringTerm("x"), ast.StringTerm("y")},
|
||||
), o.RegoValue())
|
||||
})
|
||||
t.Run("String", func(t *testing.T) {
|
||||
o1 := Object{"x": String("y")}
|
||||
assert.Equal(t, `{"x":"y"}`, o1.String())
|
||||
})
|
||||
}
|
||||
|
||||
func TestString(t *testing.T) {
|
||||
var _ Value = String("test")
|
||||
t.Run("Clone", func(t *testing.T) {
|
||||
s1 := String("test")
|
||||
s2 := s1.Clone()
|
||||
assert.Equal(t, s1, s2)
|
||||
})
|
||||
t.Run("RegoValue", func(t *testing.T) {
|
||||
s := String("test")
|
||||
assert.Equal(t, ast.String("test"), s.RegoValue())
|
||||
})
|
||||
t.Run("String", func(t *testing.T) {
|
||||
s := String("test")
|
||||
assert.Equal(t, `"test"`, s.String())
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue