github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/domain/infra/abi/play_test.go (about)

     1  package abi
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	v1 "k8s.io/api/core/v1"
     9  	v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  )
    11  
    12  func TestReadConfigMapFromFile(t *testing.T) {
    13  	tests := []struct {
    14  		name             string
    15  		configMapContent string
    16  		expectError      bool
    17  		expectedErrorMsg string
    18  		expected         v1.ConfigMap
    19  	}{
    20  		{
    21  			"ValidConfigMap",
    22  			`
    23  apiVersion: v1
    24  kind: ConfigMap
    25  metadata:
    26    name: foo
    27  data:
    28    myvar: foo
    29  `,
    30  			false,
    31  			"",
    32  			v1.ConfigMap{
    33  				TypeMeta: v12.TypeMeta{
    34  					Kind:       "ConfigMap",
    35  					APIVersion: "v1",
    36  				},
    37  				ObjectMeta: v12.ObjectMeta{
    38  					Name: "foo",
    39  				},
    40  				Data: map[string]string{
    41  					"myvar": "foo",
    42  				},
    43  			},
    44  		},
    45  		{
    46  			"InvalidYAML",
    47  			`
    48  Invalid YAML
    49  apiVersion: v1
    50  kind: ConfigMap
    51  metadata:
    52    name: foo
    53  data:
    54    myvar: foo
    55  `,
    56  			true,
    57  			"unable to read YAML as Kube ConfigMap",
    58  			v1.ConfigMap{},
    59  		},
    60  		{
    61  			"InvalidKind",
    62  			`
    63  apiVersion: v1
    64  kind: InvalidKind
    65  metadata:
    66    name: foo
    67  data:
    68    myvar: foo
    69  `,
    70  			true,
    71  			"invalid YAML kind",
    72  			v1.ConfigMap{},
    73  		},
    74  	}
    75  
    76  	for _, test := range tests {
    77  		test := test
    78  		t.Run(test.name, func(t *testing.T) {
    79  			buf := bytes.NewBufferString(test.configMapContent)
    80  			cm, err := readConfigMapFromFile(buf)
    81  
    82  			if test.expectError {
    83  				assert.Error(t, err)
    84  				assert.Contains(t, err.Error(), test.expectedErrorMsg)
    85  			} else {
    86  				assert.NoError(t, err)
    87  				assert.Equal(t, test.expected, cm)
    88  			}
    89  		})
    90  	}
    91  }