feature: cleanup serviceAccount

This commit is contained in:
kkb0318
2024-07-12 22:36:26 +09:00
parent 907e58e94a
commit 13b8450ba2
12 changed files with 507 additions and 32 deletions
+23
View File
@@ -0,0 +1,23 @@
package utils
import (
"k8s.io/apimachinery/pkg/types"
)
// DiffNamespacedNames returns the namespaced names that are in target but not in reference.
func DiffNamespacedNames(target, reference []types.NamespacedName) []types.NamespacedName {
referenceSet := make(map[types.NamespacedName]struct{})
for _, item := range reference {
referenceSet[item] = struct{}{}
}
diff := []types.NamespacedName{}
for _, item := range target {
if _, exists := referenceSet[item]; !exists {
diff = append(diff, item)
}
}
return diff
}
+87
View File
@@ -0,0 +1,87 @@
package utils
import (
"testing"
"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/types"
)
func TestDiffNamespacedNames(t *testing.T) {
tests := []struct {
name string
target []types.NamespacedName
reference []types.NamespacedName
expected []types.NamespacedName
}{
{
"NoDifference",
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
[]types.NamespacedName{},
},
{
"SomeDifference",
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource3"},
},
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
[]types.NamespacedName{
{Namespace: "default", Name: "resource3"},
},
},
{
"AllDifferent",
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
[]types.NamespacedName{
{Namespace: "other", Name: "resource3"},
{Namespace: "other", Name: "resource4"},
},
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
},
{
"EmptyTarget",
[]types.NamespacedName{},
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
[]types.NamespacedName{},
},
{
"EmptyReference",
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
[]types.NamespacedName{},
[]types.NamespacedName{
{Namespace: "default", Name: "resource1"},
{Namespace: "default", Name: "resource2"},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := DiffNamespacedNames(tt.target, tt.reference)
assert.Equal(t, tt.expected, result)
})
}
}