47 lines
661 B
Go
47 lines
661 B
Go
|
package vault
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestPolicy_Parse(t *testing.T) {
|
||
|
p, err := Parse(rawPolicy)
|
||
|
if err != nil {
|
||
|
t.Fatalf("err: %v", err)
|
||
|
}
|
||
|
|
||
|
if p.Name != "dev" {
|
||
|
t.Fatalf("bad: %#v", p)
|
||
|
}
|
||
|
|
||
|
expect := []*PathPolicy{
|
||
|
&PathPolicy{"", "deny"},
|
||
|
&PathPolicy{"stage/", "sudo"},
|
||
|
&PathPolicy{"prod/", "read"},
|
||
|
}
|
||
|
if !reflect.DeepEqual(p.Paths, expect) {
|
||
|
t.Fatalf("bad: %#v", p)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var rawPolicy = `
|
||
|
# Developer policy
|
||
|
name = "dev"
|
||
|
|
||
|
# Deny all paths by default
|
||
|
path "" {
|
||
|
policy = "deny"
|
||
|
}
|
||
|
|
||
|
# Allow full access to staging
|
||
|
path "stage/" {
|
||
|
policy = "sudo"
|
||
|
}
|
||
|
|
||
|
# Limited read privilege to production
|
||
|
path "prod/" {
|
||
|
policy = "read"
|
||
|
}
|
||
|
`
|