mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-30 19:06:33 +02:00
* policy: add parser and generator for Pomerium Policy Language * add criteria * add additional criteria
117 lines
2.6 KiB
Go
117 lines
2.6 KiB
Go
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())
|
|
})
|
|
}
|