42 lines
1.6 KiB
Go
42 lines
1.6 KiB
Go
package engine
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"pve-confsync/internal/model"
|
|
)
|
|
|
|
// Items left out of a run ("do not replicate") leave the plan, except what the
|
|
// remaining changes need: the group to create for a new account.
|
|
func TestSkipKinds(t *testing.T) {
|
|
p := Plan{Client: "c", Changes: []Change{
|
|
{Kind: model.KindGroup, ID: "ops", Op: OpCreate, Set: map[string]any{"comment": "Ops"}},
|
|
{Kind: model.KindGroup, ID: "dev", Op: OpUpdate, Set: map[string]any{"comment": "Dev"}},
|
|
{Kind: model.KindUser, ID: "bob@pve", Op: OpCreate, Set: map[string]any{"groups": "ops"}},
|
|
{Kind: model.KindPassword, ID: "bob@pve", Op: OpCreate, Set: map[string]any{"hash": "$5$x"}},
|
|
{Kind: model.KindVNet, ID: "v1", Op: OpUpdate, Set: map[string]any{"alias": "a"}},
|
|
}, Errors: []string{"sdn-zone/z1: field \"bridge\" required for creation, add it to the mapping of target c"}}
|
|
keys := func(p Plan) []string {
|
|
var out []string
|
|
for _, c := range p.Changes {
|
|
out = append(out, c.Key())
|
|
}
|
|
return out
|
|
}
|
|
|
|
got := Skip(p, nil, []model.Kind{model.KindGroup, model.KindZone, model.KindVNet})
|
|
if want := []string{"pve-group/ops", "pve-user/bob@pve", "pve-password/bob@pve"}; !reflect.DeepEqual(keys(got), want) {
|
|
t.Fatalf("changes: %v, want %v", keys(got), want)
|
|
}
|
|
if len(got.Errors) != 0 {
|
|
t.Fatalf("the error of a skipped kind must not block: %v", got.Errors)
|
|
}
|
|
if got := Skip(p, nil, model.Kinds); len(got.Changes) != 0 || len(got.Errors) != 0 {
|
|
t.Fatalf("everything skipped: %+v", got)
|
|
}
|
|
if got := Skip(p, nil, nil); len(got.Changes) != len(p.Changes) || len(got.Errors) != 1 {
|
|
t.Fatalf("nothing skipped: %+v", got)
|
|
}
|
|
}
|