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  }