github.com/jenkins-x/jx/v2@v2.1.155/pkg/kube/load_pod_templates_integration_test.go (about)

     1  // +build integration
     2  
     3  package kube_test
     4  
     5  import (
     6  	"io/ioutil"
     7  	"path"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"github.com/jenkins-x/jx/v2/pkg/cmd/testhelpers"
    12  
    13  	"github.com/ghodss/yaml"
    14  	"github.com/jenkins-x/jx/v2/pkg/kube"
    15  	"github.com/stretchr/testify/assert"
    16  	"github.com/stretchr/testify/require"
    17  	corev1 "k8s.io/api/core/v1"
    18  	"k8s.io/apimachinery/pkg/runtime"
    19  	"k8s.io/client-go/kubernetes/fake"
    20  )
    21  
    22  func TestLoadPodTemplatest(t *testing.T) {
    23  	originalKubeCfg, tempKubeCfg, err := testhelpers.CreateTestKubeConfigDir()
    24  	assert.NoError(t, err)
    25  	defer func() {
    26  		err := testhelpers.CleanupTestKubeConfigDir(originalKubeCfg, tempKubeCfg)
    27  		assert.NoError(t, err)
    28  	}()
    29  	testData := path.Join("test_data", "load_pod_templates")
    30  	assert.DirExists(t, testData)
    31  
    32  	files, err := ioutil.ReadDir(testData)
    33  	assert.NoError(t, err)
    34  
    35  	ns := "jx"
    36  
    37  	runtimeObjects := []runtime.Object{}
    38  
    39  	for _, f := range files {
    40  		if !f.IsDir() {
    41  			name := f.Name()
    42  			srcFile := filepath.Join(testData, name)
    43  			data, err := ioutil.ReadFile(srcFile)
    44  			require.NoError(t, err, "failed to read file %s", srcFile)
    45  
    46  			cm := &corev1.ConfigMap{}
    47  			err = yaml.Unmarshal(data, cm)
    48  			require.NoError(t, err, "failed to unmarshal file %s", srcFile)
    49  
    50  			require.NotEqual(t, "", cm.Name, "file %s contains a ConfigMap with no name", srcFile)
    51  			cm.Namespace = ns
    52  			runtimeObjects = append(runtimeObjects, cm)
    53  		}
    54  	}
    55  
    56  	kubeClient := fake.NewSimpleClientset(runtimeObjects...)
    57  
    58  	podTemplates, err := kube.LoadPodTemplates(kubeClient, ns)
    59  	require.NoError(t, err, "failed to load pod templates")
    60  
    61  	for _, name := range []string{"gradle", "maven"} {
    62  		assert.NotNil(t, podTemplates[name], "no pod template found for key %s", name)
    63  	}
    64  
    65  	assert.Equal(t, 2, len(podTemplates), "size of loaded pod template map")
    66  }