158 lines
3.2 KiB
Go
158 lines
3.2 KiB
Go
|
package app
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"go.sour.is/pkg/mercury"
|
||
|
"go.sour.is/pkg/ident"
|
||
|
)
|
||
|
|
||
|
type mockUser struct {
|
||
|
roles map[string]struct{}
|
||
|
ident.SessionInfo
|
||
|
}
|
||
|
|
||
|
func (m *mockUser) Identity() string { return "user" }
|
||
|
func (m *mockUser) HasRole(roles ...string) bool {
|
||
|
var found bool
|
||
|
for _, role := range roles {
|
||
|
if _, ok := m.roles[role]; ok {
|
||
|
found = true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return found
|
||
|
}
|
||
|
|
||
|
func Test_appConfig_GetRules(t *testing.T) {
|
||
|
type args struct {
|
||
|
u ident.Ident
|
||
|
}
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
args args
|
||
|
wantLis mercury.Rules
|
||
|
}{
|
||
|
{"normal", args{&mockUser{}}, nil},
|
||
|
{
|
||
|
"admin",
|
||
|
args{
|
||
|
&mockUser{
|
||
|
SessionInfo: ident.SessionInfo{Active: true},
|
||
|
roles: map[string]struct{}{"admin": {}},
|
||
|
},
|
||
|
},
|
||
|
mercury.Rules{
|
||
|
mercury.Rule{
|
||
|
Role: "read",
|
||
|
Type: "NS",
|
||
|
Match: "mercury.source.*",
|
||
|
},
|
||
|
mercury.Rule{
|
||
|
Role: "read",
|
||
|
Type: "NS",
|
||
|
Match: "mercury.priority",
|
||
|
},
|
||
|
mercury.Rule{
|
||
|
Role: "read",
|
||
|
Type: "NS",
|
||
|
Match: "mercury.host",
|
||
|
},
|
||
|
mercury.Rule{
|
||
|
Role: "read",
|
||
|
Type: "NS",
|
||
|
Match: "mercury.environ",
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
a := mercuryEnviron{}
|
||
|
if gotLis, _ := a.GetRules(context.TODO(), tt.args.u); !reflect.DeepEqual(gotLis, tt.wantLis) {
|
||
|
t.Errorf("appConfig.GetRules() = %v, want %v", gotLis, tt.wantLis)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// func Test_appConfig_GetIndex(t *testing.T) {
|
||
|
// type args struct {
|
||
|
// search mercury.NamespaceSearch
|
||
|
// in1 *rsql.Program
|
||
|
// }
|
||
|
// tests := []struct {
|
||
|
// name string
|
||
|
// args args
|
||
|
// wantLis mercury.Config
|
||
|
// }{
|
||
|
// {"nil", args{
|
||
|
// nil,
|
||
|
// nil,
|
||
|
// }, nil},
|
||
|
|
||
|
// {"app.settings", args{
|
||
|
// mercury.ParseNamespace("app.settings"),
|
||
|
// nil,
|
||
|
// }, mercury.Config{&mercury.Space{Space: "app.settings"}}},
|
||
|
// }
|
||
|
// for _, tt := range tests {
|
||
|
// t.Run(tt.name, func(t *testing.T) {
|
||
|
// a := mercuryEnviron{}
|
||
|
// if gotLis, _ := a.GetIndex(tt.args.search, tt.args.in1); !reflect.DeepEqual(gotLis, tt.wantLis) {
|
||
|
// t.Errorf("appConfig.GetIndex() = %#v, want %#v", gotLis, tt.wantLis)
|
||
|
// }
|
||
|
// })
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// func Test_appConfig_GetObjects(t *testing.T) {
|
||
|
// cfg, err := mercury.ParseText(strings.NewReader(`
|
||
|
// @mercury.source.mercury-settings.default
|
||
|
// match :0 *
|
||
|
// `))
|
||
|
|
||
|
// type args struct {
|
||
|
// search mercury.NamespaceSearch
|
||
|
// in1 *rsql.Program
|
||
|
// in2 []string
|
||
|
// }
|
||
|
// tests := []struct {
|
||
|
// name string
|
||
|
// args args
|
||
|
// wantLis mercury.Config
|
||
|
// }{
|
||
|
// {"nil", args{
|
||
|
// nil,
|
||
|
// nil,
|
||
|
// nil,
|
||
|
// }, nil},
|
||
|
|
||
|
// {"app.settings", args{
|
||
|
// mercury.ParseNamespace("app.settings"),
|
||
|
// nil,
|
||
|
// nil,
|
||
|
// }, mercury.Config{
|
||
|
// &mercury.Space{
|
||
|
// Space: "app.settings",
|
||
|
// List: []mercury.Value{{
|
||
|
// Space: "app.settings",
|
||
|
// Name: "app.setting",
|
||
|
// Values: []string{"TRUE"}},
|
||
|
// },
|
||
|
// },
|
||
|
// }},
|
||
|
// }
|
||
|
// for _, tt := range tests {
|
||
|
// cfg, err :=
|
||
|
// t.Run(tt.name, func(t *testing.T) {
|
||
|
// a := appConfig{cfg: }
|
||
|
// if gotLis, _ := a.GetConfig(tt.args.search, tt.args.in1, tt.args.in2); !reflect.DeepEqual(gotLis, tt.wantLis) {
|
||
|
// t.Errorf("appConfig.GetIndex() = %#v, want %#v", gotLis, tt.wantLis)
|
||
|
// }
|
||
|
// })
|
||
|
// }
|
||
|
// }
|