github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/core/cluster/cache_test.go (about) 1 package cluster 2 3 import ( 4 "strconv" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 "k8s.io/apimachinery/pkg/types" 10 11 "github.com/tilt-dev/tilt/internal/controllers/apis/cluster" 12 "github.com/tilt-dev/tilt/internal/docker" 13 "github.com/tilt-dev/tilt/internal/k8s" 14 "github.com/tilt-dev/tilt/internal/timecmp" 15 ) 16 17 func TestConnectionManager(t *testing.T) { 18 type tc struct { 19 input *connection 20 expectedK8sErr string 21 expectedDockerErr string 22 } 23 24 fakeK8s := k8s.NewFakeK8sClient(t) 25 fakeDocker := docker.NewFakeClient() 26 27 tcs := []tc{ 28 { 29 input: &connection{ 30 connType: connectionTypeK8s, 31 k8sClient: fakeK8s, 32 createdAt: time.Now(), 33 }, 34 expectedDockerErr: "incorrect cluster client type: got kubernetes, expected docker", 35 }, 36 { 37 input: &connection{ 38 connType: connectionTypeK8s, 39 k8sClient: fakeK8s, 40 initError: "connection error", 41 }, 42 expectedK8sErr: "connection error", 43 expectedDockerErr: "incorrect cluster client type: got kubernetes, expected docker", 44 }, 45 { 46 input: nil, 47 expectedK8sErr: cluster.NotFoundError.Error(), 48 expectedDockerErr: cluster.NotFoundError.Error(), 49 }, 50 { 51 input: &connection{ 52 connType: connectionTypeDocker, 53 dockerClient: fakeDocker, 54 }, 55 expectedK8sErr: "incorrect cluster client type: got docker, expected kubernetes", 56 }, 57 { 58 input: &connection{ 59 connType: connectionTypeDocker, 60 dockerClient: fakeDocker, 61 initError: "some docker error", 62 }, 63 expectedK8sErr: "incorrect cluster client type: got docker, expected kubernetes", 64 expectedDockerErr: "some docker error", 65 }, 66 } 67 68 for i := range tcs { 69 t.Run(strconv.Itoa(i), func(t *testing.T) { 70 cm := NewConnectionManager() 71 nn := types.NamespacedName{Namespace: "foo", Name: "bar"} 72 if tcs[i].input != nil { 73 cm.store(nn, *tcs[i].input) 74 } 75 76 kCli, createdAt, err := cm.GetK8sClient(nn) 77 if tcs[i].expectedK8sErr != "" { 78 if assert.EqualError(t, err, tcs[i].expectedK8sErr) { 79 assert.Nil(t, kCli, "K8sClient should be nil on error") 80 } 81 } else { 82 if assert.NoError(t, err, "Unexpected error getting K8sClient") { 83 assert.NotNil(t, kCli, "K8sClient should not be nil") 84 timecmp.AssertTimeEqual(t, tcs[i].input.createdAt, createdAt) 85 } 86 } 87 88 dCli, err := cm.GetComposeDockerClient(nn) 89 if tcs[i].expectedDockerErr != "" { 90 if assert.EqualError(t, err, tcs[i].expectedDockerErr) { 91 assert.Nil(t, dCli, "DockerClient should be nil on error") 92 } 93 } else { 94 if assert.NoError(t, err, "Unexpected error getting DockerClient") { 95 assert.NotNil(t, dCli, "DockerClient should not be nil when no error") 96 } 97 } 98 }) 99 } 100 }