github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/k8scontext/k8scontext_test.go (about)

     1  package k8scontext
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/tilt-dev/clusterid"
     9  	"github.com/tilt-dev/tilt/internal/k8s"
    10  	"github.com/tilt-dev/tilt/internal/tiltfile/starkit"
    11  )
    12  
    13  func TestK8sNamespaceDefaultNamespace(t *testing.T) {
    14  	f := NewFixture(t, "gke-blorg", "default", clusterid.ProductGKE)
    15  	f.File("Tiltfile", `
    16  print(k8s_namespace())
    17  `)
    18  	_, err := f.ExecFile("Tiltfile")
    19  	assert.NoError(t, err)
    20  
    21  	assert.Equal(t, "default\n", f.PrintOutput())
    22  }
    23  
    24  func TestK8sNamespaceNonStandardNamespace(t *testing.T) {
    25  	f := NewFixture(t, "gke-blorg", "im-a-teapot", clusterid.ProductGKE)
    26  	f.File("Tiltfile", `
    27  print(k8s_namespace())
    28  `)
    29  	_, err := f.ExecFile("Tiltfile")
    30  	assert.NoError(t, err)
    31  
    32  	assert.Equal(t, "im-a-teapot\n", f.PrintOutput())
    33  }
    34  
    35  func TestAllowK8sContext(t *testing.T) {
    36  	f := NewFixture(t, "gke-blorg", "default", clusterid.ProductGKE)
    37  	f.File("Tiltfile", `
    38  allow_k8s_contexts('gke-blorg')
    39  `)
    40  	model, err := f.ExecFile("Tiltfile")
    41  	assert.NoError(t, err)
    42  	assert.Equal(t, []k8s.KubeContext{"gke-blorg"}, MustState(model).allowed)
    43  	assert.True(t, MustState(model).IsAllowed(f.Tiltfile()))
    44  
    45  	model, err = f.ExecFile("Tiltfile")
    46  	assert.NoError(t, err)
    47  	assert.Equal(t, []k8s.KubeContext{"gke-blorg"}, MustState(model).allowed)
    48  }
    49  
    50  func TestForbidK8sContext(t *testing.T) {
    51  	f := NewFixture(t, "gke-blorg", "default", clusterid.ProductGKE)
    52  	f.File("Tiltfile", `
    53  `)
    54  	model, err := f.ExecFile("Tiltfile")
    55  	assert.NoError(t, err)
    56  	assert.False(t, MustState(model).IsAllowed(f.Tiltfile()))
    57  
    58  	// All k8s contexts are allowed in extensions.
    59  	f.Tiltfile().ObjectMeta.Name = "my-ext"
    60  	assert.True(t, MustState(model).IsAllowed(f.Tiltfile()))
    61  }
    62  
    63  func NewFixture(tb testing.TB, ctx k8s.KubeContext, ns k8s.Namespace, env clusterid.Product) *starkit.Fixture {
    64  	return starkit.NewFixture(tb, NewPlugin(ctx, ns, env))
    65  }