github.com/viant/toolbox@v0.34.5/yaml_test.go (about) 1 package toolbox 2 3 import ( 4 "encoding/json" 5 "strings" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 yaml "gopkg.in/yaml.v2" 10 ) 11 12 func TestNormalizeKVPairs(t *testing.T) { 13 14 { //yaml case 15 YAML := `- Requests: 16 - URL: http://localhost:5000 17 Method: GET 18 Header: 19 aHeader: 20 - "v1" 21 - "v2" 22 23 someOtherHeader: 24 25 - "CP=RTO" 26 27 Body: "hey there" 28 Cookies: 29 - Name: aHeader 30 Value: a-value 31 DYAMLomain: "localhost" 32 Expires: "2023-12-16T20:17:38Z" 33 RawExpires: Sat, 16 Dec 2023 20:17:38 GMT` 34 35 var data interface{} 36 err := yaml.NewDecoder(strings.NewReader(YAML)).Decode(&data) 37 assert.Nil(t, err) 38 normalized, err := NormalizeKVPairs(data) 39 assert.Nil(t, err) 40 requests := AsMap(AsSlice(normalized)[0])["Requests"] 41 request := AsMap(AsSlice(requests)[0]) 42 assert.Equal(t, "http://localhost:5000", request["URL"]) 43 header := AsMap(request["Header"]) 44 assert.Equal(t, []interface{}{"v1", "v2"}, header["aHeader"]) 45 } 46 { 47 JSON := `[ 48 {"Key":"k1", "Value":"v1"}, 49 {"Key":"k2", "Value":"v2"}, 50 {"Key":"k3", "Value":[ 51 {"Key":"k1", "Value":"v1", "Attr":2} 52 ]}]` 53 54 var data interface{} 55 err := json.NewDecoder(strings.NewReader(JSON)).Decode(&data) 56 assert.Nil(t, err) 57 normalized, err := NormalizeKVPairs(data) 58 assert.Nil(t, err) 59 aMap := AsMap(normalized) 60 assert.Equal(t, "v1", aMap["k1"]) 61 assert.Equal(t, "v2", aMap["k2"]) 62 aSlice := AsSlice(aMap["k3"]) 63 assert.NotNil(t, aSlice) 64 anItem := AsMap(aSlice[0]) 65 assert.Equal(t, "k1", anItem["Key"]) 66 assert.Equal(t, "v1", anItem["Value"]) 67 assert.Equal(t, 2.0, anItem["Attr"]) 68 } 69 70 }