2022-09-05 03:06:08 -04:00
|
|
|
/*
|
|
|
|
Copyright (c) Edgeless Systems GmbH
|
|
|
|
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
*/
|
|
|
|
|
2022-06-28 03:55:05 -04:00
|
|
|
package patch
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
|
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
)
|
|
|
|
|
|
|
|
var labelsTestObject = corev1.Node{
|
|
|
|
TypeMeta: v1.TypeMeta{
|
|
|
|
Kind: "Node",
|
|
|
|
APIVersion: "v1",
|
|
|
|
},
|
|
|
|
ObjectMeta: v1.ObjectMeta{
|
|
|
|
ResourceVersion: "0",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSetLabels(t *testing.T) {
|
|
|
|
testCases := map[string]struct {
|
|
|
|
oldLabels map[string]string
|
|
|
|
newLabels map[string]string
|
|
|
|
wantPatch []byte
|
|
|
|
}{
|
|
|
|
"empty patch only contains resource version": {
|
|
|
|
wantPatch: []byte(`{"metadata":{"resourceVersion":"0"}}`),
|
|
|
|
},
|
|
|
|
"patch on node without existing labels": {
|
|
|
|
newLabels: map[string]string{"key": "value"},
|
|
|
|
wantPatch: []byte(`{"metadata":{"labels":{"key":"value"},"resourceVersion":"0"}}`),
|
|
|
|
},
|
|
|
|
"patch on node with same existing labels": {
|
|
|
|
oldLabels: map[string]string{"key": "value"},
|
|
|
|
newLabels: map[string]string{"key": "value"},
|
|
|
|
wantPatch: []byte(`{"metadata":{"resourceVersion":"0"}}`),
|
|
|
|
},
|
|
|
|
"patch on node with same key but different value": {
|
|
|
|
oldLabels: map[string]string{"key": "oldvalue"},
|
|
|
|
newLabels: map[string]string{"key": "newvalue"},
|
|
|
|
wantPatch: []byte(`{"metadata":{"labels":{"key":"newvalue"},"resourceVersion":"0"}}`),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for name, tc := range testCases {
|
|
|
|
t.Run(name, func(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
original := labelsTestObject.DeepCopy()
|
|
|
|
original.SetLabels(tc.oldLabels)
|
|
|
|
patched := original.DeepCopy()
|
|
|
|
patch := SetLabels(original, patched, tc.newLabels)
|
|
|
|
data, err := patch.Data(patched)
|
|
|
|
assert.NoError(err)
|
|
|
|
assert.Equal(tc.wantPatch, data)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|