github.com/grahambrereton-form3/tilt@v0.10.18/internal/synclet/sidecar/sidecar_test.go (about)

     1  package sidecar
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/windmilleng/tilt/internal/container"
    10  	"github.com/windmilleng/tilt/internal/k8s"
    11  	"github.com/windmilleng/tilt/internal/k8s/testyaml"
    12  )
    13  
    14  func TestInjectSyncletSidecar(t *testing.T) {
    15  	entities, err := k8s.ParseYAMLFromString(testyaml.SanchoYAML)
    16  	if err != nil {
    17  		t.Fatal(err)
    18  	}
    19  
    20  	syncletRef, _ := syncletImageRefFromName(DefaultSyncletImageName)
    21  	syncletContainer := ProvideSyncletContainer(syncletRef)
    22  
    23  	assert.Equal(t, 1, len(entities))
    24  	entity := entities[0]
    25  	selector := container.MustParseSelector("gcr.io/some-project-162817/sancho")
    26  	newEntity, replaced, err := InjectSyncletSidecar(entity, selector, syncletContainer)
    27  	if err != nil {
    28  		t.Fatal(err)
    29  	} else if !replaced {
    30  		t.Errorf("Expected replacement in:\n%s", testyaml.SanchoYAML)
    31  	}
    32  
    33  	result, err := k8s.SerializeSpecYAML([]k8s.K8sEntity{newEntity})
    34  	if err != nil {
    35  		t.Fatal(err)
    36  	}
    37  
    38  	if !strings.Contains(result, DefaultSyncletImageName) {
    39  		t.Errorf("could not find image in yaml (%s):\n%s", DefaultSyncletImageName, result)
    40  	}
    41  }
    42  
    43  func TestInjectSyncletSidecarMultipleContainers(t *testing.T) {
    44  	entities, err := k8s.ParseYAMLFromString(testyaml.MultipleContainersDeploymentYAML)
    45  	if err != nil {
    46  		t.Fatal(err)
    47  	}
    48  
    49  	syncletRef, _ := syncletImageRefFromName(DefaultSyncletImageName)
    50  	syncletContainer := ProvideSyncletContainer(syncletRef)
    51  
    52  	assert.Equal(t, 1, len(entities))
    53  	entity := entities[0]
    54  	selector := container.MustParseSelector("dockerhub.io/client:0.1.0-dev")
    55  	newEntity, replaced, err := InjectSyncletSidecar(entity, selector, syncletContainer)
    56  	if err != nil {
    57  		t.Fatal(err)
    58  	} else if !replaced {
    59  		t.Errorf("Expected replacement in:\n%s", testyaml.MultipleContainersDeploymentYAML)
    60  	}
    61  
    62  	result, err := k8s.SerializeSpecYAML([]k8s.K8sEntity{newEntity})
    63  	if err != nil {
    64  		t.Fatal(err)
    65  	}
    66  
    67  	if strings.Count(result, DefaultSyncletImageName) != 1 {
    68  		t.Errorf("expected synclet to be injected once, actually injected %d times",
    69  			strings.Count(result, DefaultSyncletImageName))
    70  	}
    71  }