github.com/argoproj/argo-cd/v2@v2.10.9/pkg/apis/application/v1alpha1/values_test.go (about)

     1  package v1alpha1
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestValues_SetString(t *testing.T) {
    10  	testCases := []struct {
    11  		name        string
    12  		inputValue  string
    13  		expectError bool
    14  		expectValue string
    15  	}{
    16  		{
    17  			name:        "an empty string should not throw an error",
    18  			inputValue:  `""`,
    19  			expectValue: "\"\"",
    20  		},
    21  		{
    22  			name:        "a string with contents should not throw an error",
    23  			inputValue:  `"hello"`,
    24  			expectValue: "hello",
    25  		},
    26  		{
    27  			name:        "an array should throw an error",
    28  			inputValue:  "[]",
    29  			expectError: true,
    30  		},
    31  		{
    32  			name:        "a number should throw an error",
    33  			inputValue:  "42",
    34  			expectError: true,
    35  		},
    36  		{
    37  			name:        "a boolean should throw an error",
    38  			inputValue:  "false",
    39  			expectError: true,
    40  		},
    41  		{
    42  			name:        "null should throw an error",
    43  			inputValue:  "null",
    44  			expectError: true,
    45  		},
    46  		{
    47  			name:        "an empty object should not throw an error",
    48  			inputValue:  "{}",
    49  			expectValue: "{}",
    50  		},
    51  		{
    52  			name:        "an object with contents should not throw an error",
    53  			inputValue:  `{"some": "inputValue"}`,
    54  			expectValue: "some: inputValue",
    55  		},
    56  		{
    57  			name:        "a complex object should not throw an error",
    58  			inputValue:  `{"a": {"nested": "object"}, "an": ["array"], "bool": true, "number": 1, "some": "string"}`,
    59  			expectValue: "a:\n  nested: object\nan:\n- array\nbool: true\nnumber: 1\nsome: string",
    60  		},
    61  	}
    62  
    63  	for _, testCase := range testCases {
    64  		var err error
    65  		t.Run(testCase.name, func(t *testing.T) {
    66  			source := &ApplicationSourceHelm{}
    67  			err = source.SetValuesString(testCase.inputValue)
    68  
    69  			if !testCase.expectError {
    70  				assert.Equal(t, testCase.expectValue, source.ValuesString())
    71  				data, err := source.ValuesObject.MarshalJSON()
    72  				assert.NoError(t, err)
    73  				err = source.ValuesObject.UnmarshalJSON(data)
    74  				assert.NoError(t, err)
    75  				assert.Equal(t, testCase.expectValue, source.ValuesString())
    76  			} else {
    77  				assert.Error(t, err)
    78  			}
    79  		})
    80  	}
    81  }