mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-02-14 18:09:58 +00:00
* feat(controller): allow owners to promote serviceaccounts within tenant as owners Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com> * feat(controller): refactor status handling for tenants and owned namespaces (including metrics) Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com> --------- Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
99 lines
2.3 KiB
Go
99 lines
2.3 KiB
Go
package utils
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestMapMergeNoOverrite_AddsNonOverlapping(t *testing.T) {
|
|
dst := map[string]string{"a": "1"}
|
|
src := map[string]string{"b": "2"}
|
|
|
|
MapMergeNoOverrite(dst, src)
|
|
|
|
if got, want := dst["a"], "1"; got != want {
|
|
t.Fatalf("dst[a] = %q, want %q", got, want)
|
|
}
|
|
if got, want := dst["b"], "2"; got != want {
|
|
t.Fatalf("dst[b] = %q, want %q", got, want)
|
|
}
|
|
if len(dst) != 2 {
|
|
t.Fatalf("len(dst) = %d, want 2", len(dst))
|
|
}
|
|
}
|
|
|
|
func TestMapMergeNoOverrite_DoesNotOverwriteExisting(t *testing.T) {
|
|
dst := map[string]string{"a": "1"}
|
|
src := map[string]string{"a": "X"} // overlapping key
|
|
|
|
MapMergeNoOverrite(dst, src)
|
|
|
|
if got, want := dst["a"], "1"; got != want {
|
|
t.Fatalf("dst[a] overwritten: got %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestMapMergeNoOverrite_EmptySrc_NoChange(t *testing.T) {
|
|
dst := map[string]string{"a": "1"}
|
|
src := map[string]string{} // empty
|
|
|
|
before := make(map[string]string, len(dst))
|
|
for k, v := range dst {
|
|
before[k] = v
|
|
}
|
|
|
|
MapMergeNoOverrite(dst, src)
|
|
|
|
if !reflect.DeepEqual(dst, before) {
|
|
t.Fatalf("dst changed with empty src: got %#v, want %#v", dst, before)
|
|
}
|
|
}
|
|
|
|
func TestMapMergeNoOverrite_NilSrc_NoChange(t *testing.T) {
|
|
dst := map[string]string{"a": "1"}
|
|
var src map[string]string // nil
|
|
|
|
before := make(map[string]string, len(dst))
|
|
for k, v := range dst {
|
|
before[k] = v
|
|
}
|
|
|
|
MapMergeNoOverrite(dst, src)
|
|
|
|
if !reflect.DeepEqual(dst, before) {
|
|
t.Fatalf("dst changed with nil src: got %#v, want %#v", dst, before)
|
|
}
|
|
}
|
|
|
|
func TestMapMergeNoOverrite_Idempotent(t *testing.T) {
|
|
dst := map[string]string{"a": "1"}
|
|
src := map[string]string{"b": "2"}
|
|
|
|
MapMergeNoOverrite(dst, src)
|
|
first := map[string]string{}
|
|
for k, v := range dst {
|
|
first[k] = v
|
|
}
|
|
|
|
// Call again; result should be identical
|
|
MapMergeNoOverrite(dst, src)
|
|
|
|
if !reflect.DeepEqual(dst, first) {
|
|
t.Fatalf("non-idempotent merge: after second merge got %#v, want %#v", dst, first)
|
|
}
|
|
}
|
|
|
|
func TestMapMergeNoOverrite_NilDst_Panics(t *testing.T) {
|
|
defer func() {
|
|
if r := recover(); r == nil {
|
|
t.Fatalf("expected panic when dst is nil, but did not panic")
|
|
}
|
|
}()
|
|
|
|
var dst map[string]string // nil destination map
|
|
src := map[string]string{"a": "1"}
|
|
|
|
// Writing to a nil map panics; document current behavior via this test.
|
|
MapMergeNoOverrite(dst, src)
|
|
}
|