go-pkg/mercury/app/app_test.go
2024-04-05 13:26:11 -06:00

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)
// }
// })
// }
// }