github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/specgen/generate/kube/play_test.go (about)

     1  package kube
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	v1 "k8s.io/api/core/v1"
     8  	v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
     9  )
    10  
    11  func TestEnvVarsFromConfigMap(t *testing.T) {
    12  	tests := []struct {
    13  		name          string
    14  		envFrom       v1.EnvFromSource
    15  		configMapList []v1.ConfigMap
    16  		expected      map[string]string
    17  	}{
    18  		{
    19  			"ConfigMapExists",
    20  			v1.EnvFromSource{
    21  				ConfigMapRef: &v1.ConfigMapEnvSource{
    22  					LocalObjectReference: v1.LocalObjectReference{
    23  						Name: "foo",
    24  					},
    25  				},
    26  			},
    27  			configMapList,
    28  			map[string]string{
    29  				"myvar": "foo",
    30  			},
    31  		},
    32  		{
    33  			"ConfigMapDoesNotExist",
    34  			v1.EnvFromSource{
    35  				ConfigMapRef: &v1.ConfigMapEnvSource{
    36  					LocalObjectReference: v1.LocalObjectReference{
    37  						Name: "doesnotexist",
    38  					},
    39  				},
    40  			},
    41  			configMapList,
    42  			map[string]string{},
    43  		},
    44  		{
    45  			"EmptyConfigMapList",
    46  			v1.EnvFromSource{
    47  				ConfigMapRef: &v1.ConfigMapEnvSource{
    48  					LocalObjectReference: v1.LocalObjectReference{
    49  						Name: "foo",
    50  					},
    51  				},
    52  			},
    53  			[]v1.ConfigMap{},
    54  			map[string]string{},
    55  		},
    56  	}
    57  
    58  	for _, test := range tests {
    59  		test := test
    60  		t.Run(test.name, func(t *testing.T) {
    61  			result := envVarsFromConfigMap(test.envFrom, test.configMapList)
    62  			assert.Equal(t, test.expected, result)
    63  		})
    64  	}
    65  }
    66  
    67  func TestEnvVarValue(t *testing.T) {
    68  	tests := []struct {
    69  		name          string
    70  		envVar        v1.EnvVar
    71  		configMapList []v1.ConfigMap
    72  		expected      string
    73  	}{
    74  		{
    75  			"ConfigMapExists",
    76  			v1.EnvVar{
    77  				Name: "FOO",
    78  				ValueFrom: &v1.EnvVarSource{
    79  					ConfigMapKeyRef: &v1.ConfigMapKeySelector{
    80  						LocalObjectReference: v1.LocalObjectReference{
    81  							Name: "foo",
    82  						},
    83  						Key: "myvar",
    84  					},
    85  				},
    86  			},
    87  			configMapList,
    88  			"foo",
    89  		},
    90  		{
    91  			"ContainerKeyDoesNotExistInConfigMap",
    92  			v1.EnvVar{
    93  				Name: "FOO",
    94  				ValueFrom: &v1.EnvVarSource{
    95  					ConfigMapKeyRef: &v1.ConfigMapKeySelector{
    96  						LocalObjectReference: v1.LocalObjectReference{
    97  							Name: "foo",
    98  						},
    99  						Key: "doesnotexist",
   100  					},
   101  				},
   102  			},
   103  			configMapList,
   104  			"",
   105  		},
   106  		{
   107  			"ConfigMapDoesNotExist",
   108  			v1.EnvVar{
   109  				Name: "FOO",
   110  				ValueFrom: &v1.EnvVarSource{
   111  					ConfigMapKeyRef: &v1.ConfigMapKeySelector{
   112  						LocalObjectReference: v1.LocalObjectReference{
   113  							Name: "doesnotexist",
   114  						},
   115  						Key: "myvar",
   116  					},
   117  				},
   118  			},
   119  			configMapList,
   120  			"",
   121  		},
   122  		{
   123  			"EmptyConfigMapList",
   124  			v1.EnvVar{
   125  				Name: "FOO",
   126  				ValueFrom: &v1.EnvVarSource{
   127  					ConfigMapKeyRef: &v1.ConfigMapKeySelector{
   128  						LocalObjectReference: v1.LocalObjectReference{
   129  							Name: "foo",
   130  						},
   131  						Key: "myvar",
   132  					},
   133  				},
   134  			},
   135  			[]v1.ConfigMap{},
   136  			"",
   137  		},
   138  	}
   139  
   140  	for _, test := range tests {
   141  		test := test
   142  		t.Run(test.name, func(t *testing.T) {
   143  			result := envVarValue(test.envVar, test.configMapList)
   144  			assert.Equal(t, test.expected, result)
   145  		})
   146  	}
   147  }
   148  
   149  var configMapList = []v1.ConfigMap{
   150  	{
   151  		TypeMeta: v12.TypeMeta{
   152  			Kind: "ConfigMap",
   153  		},
   154  		ObjectMeta: v12.ObjectMeta{
   155  			Name: "bar",
   156  		},
   157  		Data: map[string]string{
   158  			"myvar": "bar",
   159  		},
   160  	},
   161  	{
   162  		TypeMeta: v12.TypeMeta{
   163  			Kind: "ConfigMap",
   164  		},
   165  		ObjectMeta: v12.ObjectMeta{
   166  			Name: "foo",
   167  		},
   168  		Data: map[string]string{
   169  			"myvar": "foo",
   170  		},
   171  	},
   172  }