argo-cd/util/argo/normalizers/diff_normalizer_test.go
jannfis ae49b45249
chore: Upgrade Go module to v2 (#5931)
* chore: Upgrade Go module to v2

Signed-off-by: jannfis <jann@mistrust.net>

* Restore import order

Signed-off-by: jannfis <jann@mistrust.net>

* fix knowntypes_normalizer codegen error

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

* fix codegen

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

* fix Procfile

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2021-04-01 20:44:18 +02:00

139 lines
4 KiB
Go

package normalizers
import (
"testing"
"github.com/ghodss/yaml"
"github.com/stretchr/testify/assert"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/test"
)
func TestNormalizeObjectWithMatchedGroupKind(t *testing.T) {
normalizer, err := NewIgnoreNormalizer([]v1alpha1.ResourceIgnoreDifferences{{
Group: "apps",
Kind: "Deployment",
JSONPointers: []string{"/not-matching-path", "/spec/template/spec/containers"},
}}, make(map[string]v1alpha1.ResourceOverride))
assert.Nil(t, err)
deployment := test.NewDeployment()
_, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.Nil(t, err)
assert.True(t, has)
err = normalizer.Normalize(deployment)
assert.Nil(t, err)
_, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.Nil(t, err)
assert.False(t, has)
}
func TestNormalizeNoMatchedGroupKinds(t *testing.T) {
normalizer, err := NewIgnoreNormalizer([]v1alpha1.ResourceIgnoreDifferences{{
Group: "",
Kind: "Service",
JSONPointers: []string{"/spec"},
}}, make(map[string]v1alpha1.ResourceOverride))
assert.Nil(t, err)
deployment := test.NewDeployment()
err = normalizer.Normalize(deployment)
assert.Nil(t, err)
_, hasSpec, err := unstructured.NestedMap(deployment.Object, "spec")
assert.Nil(t, err)
assert.True(t, hasSpec)
}
func TestNormalizeMatchedResourceOverrides(t *testing.T) {
normalizer, err := NewIgnoreNormalizer([]v1alpha1.ResourceIgnoreDifferences{}, map[string]v1alpha1.ResourceOverride{
"apps/Deployment": {
IgnoreDifferences: v1alpha1.OverrideIgnoreDiff{JSONPointers: []string{"/spec/template/spec/containers"}},
},
})
assert.Nil(t, err)
deployment := test.NewDeployment()
_, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.Nil(t, err)
assert.True(t, has)
err = normalizer.Normalize(deployment)
assert.Nil(t, err)
_, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.Nil(t, err)
assert.False(t, has)
}
const testCRDYAML = `
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: certificates.cert-manager.io
spec:
group: cert-manager.io
names:
kind: Certificate
listKind: CertificateList
plural: certificates
shortNames:
- cert
- certs
singular: certificate
scope: Namespaced
version: v1alpha1`
func TestNormalizeMissingJsonPointer(t *testing.T) {
normalizer, err := NewIgnoreNormalizer([]v1alpha1.ResourceIgnoreDifferences{}, map[string]v1alpha1.ResourceOverride{
"apps/Deployment": {
IgnoreDifferences: v1alpha1.OverrideIgnoreDiff{JSONPointers: []string{"/garbage"}},
},
"apiextensions.k8s.io/CustomResourceDefinition": {
IgnoreDifferences: v1alpha1.OverrideIgnoreDiff{JSONPointers: []string{"/spec/additionalPrinterColumns/0/priority"}},
},
})
assert.NoError(t, err)
deployment := test.NewDeployment()
err = normalizer.Normalize(deployment)
assert.NoError(t, err)
crd := unstructured.Unstructured{}
err = yaml.Unmarshal([]byte(testCRDYAML), &crd)
assert.NoError(t, err)
err = normalizer.Normalize(&crd)
assert.NoError(t, err)
}
func TestNormalizeGlobMatch(t *testing.T) {
normalizer, err := NewIgnoreNormalizer([]v1alpha1.ResourceIgnoreDifferences{}, map[string]v1alpha1.ResourceOverride{
"*/*": {
IgnoreDifferences: v1alpha1.OverrideIgnoreDiff{JSONPointers: []string{"/spec/template/spec/containers"}},
},
})
assert.Nil(t, err)
deployment := test.NewDeployment()
_, has, err := unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.Nil(t, err)
assert.True(t, has)
err = normalizer.Normalize(deployment)
assert.Nil(t, err)
_, has, err = unstructured.NestedSlice(deployment.Object, "spec", "template", "spec", "containers")
assert.Nil(t, err)
assert.False(t, has)
}