github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/core/kubernetesapply/hash_test.go (about) 1 package kubernetesapply 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 "k8s.io/apimachinery/pkg/types" 10 11 "github.com/tilt-dev/tilt/internal/k8s/testyaml" 12 "github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1" 13 ) 14 15 // The hashes are hard-coded in this file to ensure we 16 // don't accidentally change them. 17 // 18 // When updating the hashes, make sure that you don't accidentally 19 // change two hashes to the same value 20 func MustComputeInputHash(t testing.TB, spec v1alpha1.KubernetesApplySpec, imageMaps map[types.NamespacedName]*v1alpha1.ImageMap) string { 21 hash, err := ComputeInputHash(spec, imageMaps) 22 require.NoError(t, err) 23 return hash 24 } 25 26 func TestComputeHashSancho(t *testing.T) { 27 spec := v1alpha1.KubernetesApplySpec{YAML: testyaml.SanchoYAML} 28 hash := MustComputeInputHash(t, spec, nil) 29 assert.Equal(t, hash, "elgAsMuqc3wosKnB-vrr3mmMDPc=") 30 } 31 32 func TestComputeHashSanchoSidecar(t *testing.T) { 33 spec := v1alpha1.KubernetesApplySpec{YAML: testyaml.SanchoSidecarYAML} 34 hash := MustComputeInputHash(t, spec, nil) 35 assert.Equal(t, hash, "SE9Jjlp-yakBXqPs2IjnrhCous8=") 36 } 37 38 func TestComputeHashSanchoImageMap(t *testing.T) { 39 spec := v1alpha1.KubernetesApplySpec{YAML: testyaml.SanchoYAML, ImageMaps: []string{"sancho"}} 40 imageMaps := make(map[types.NamespacedName]*v1alpha1.ImageMap) 41 imageMaps[types.NamespacedName{Name: "sancho"}] = &v1alpha1.ImageMap{ 42 ObjectMeta: metav1.ObjectMeta{Name: "sancho"}, 43 Spec: v1alpha1.ImageMapSpec{Selector: "sancho"}, 44 Status: v1alpha1.ImageMapStatus{Image: "sancho:1234"}, 45 } 46 47 hash := MustComputeInputHash(t, spec, imageMaps) 48 assert.Equal(t, hash, "xwdU6LXhS59jR4lfTApIkP26RJ0=") 49 } 50 51 func TestComputeHashSanchoIgnoresIrrelevantImageMap(t *testing.T) { 52 spec := v1alpha1.KubernetesApplySpec{YAML: testyaml.SanchoYAML} 53 imageMaps := make(map[types.NamespacedName]*v1alpha1.ImageMap) 54 imageMaps[types.NamespacedName{Name: "sancho"}] = &v1alpha1.ImageMap{ 55 ObjectMeta: metav1.ObjectMeta{Name: "sancho"}, 56 Spec: v1alpha1.ImageMapSpec{Selector: "sancho"}, 57 Status: v1alpha1.ImageMapStatus{Image: "sancho:1234"}, 58 } 59 60 assert.Equal(t, MustComputeInputHash(t, spec, nil), MustComputeInputHash(t, spec, imageMaps)) 61 } 62 63 func TestComputeHashSanchoImageMapChange(t *testing.T) { 64 spec := v1alpha1.KubernetesApplySpec{YAML: testyaml.SanchoYAML, ImageMaps: []string{"sancho"}} 65 imageMaps := make(map[types.NamespacedName]*v1alpha1.ImageMap) 66 imageMaps[types.NamespacedName{Name: "sancho"}] = &v1alpha1.ImageMap{ 67 ObjectMeta: metav1.ObjectMeta{Name: "sancho"}, 68 Spec: v1alpha1.ImageMapSpec{Selector: "sancho"}, 69 Status: v1alpha1.ImageMapStatus{Image: "sancho:45678"}, 70 } 71 72 hash := MustComputeInputHash(t, spec, imageMaps) 73 assert.Equal(t, hash, "VzBtR4akztTBxoGNlWc56QtD9b0=") 74 }