mirror of
https://github.com/getsops/sops.git
synced 2026-02-06 06:45:18 +01:00
It's been around 9 months since our last vendor update. This is also needed for some new features being worked on for sops workspace. Additionally, this PR regenerates the kms mocks.
188 lines
5.3 KiB
Go
188 lines
5.3 KiB
Go
package objx_test
|
|
|
|
import (
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/stretchr/objx"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestConversionJSON(t *testing.T) {
|
|
jsonString := `{"name":"Mat"}`
|
|
o := objx.MustFromJSON(jsonString)
|
|
|
|
result, err := o.JSON()
|
|
|
|
require.NoError(t, err)
|
|
assert.Equal(t, jsonString, result)
|
|
assert.Equal(t, jsonString, o.MustJSON())
|
|
|
|
i := objx.Map{
|
|
"a": map[interface{}]interface{}{"b": objx.Map{"c": map[interface{}]interface{}{"d": "e"}},
|
|
"f": []objx.Map{{"g": map[interface{}]interface{}{"h": "i"}}},
|
|
"j": []map[string]interface{}{{"k": map[interface{}]interface{}{"l": "m"}}},
|
|
"n": []interface{}{objx.Map{"o": "p"}},
|
|
},
|
|
}
|
|
|
|
jsonString = `{"a":{"b":{"c":{"d":"e"}},"f":[{"g":{"h":"i"}}],"j":[{"k":{"l":"m"}}],"n":[{"o":"p"}]}}`
|
|
result, err = i.JSON()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, jsonString, result)
|
|
assert.Equal(t, jsonString, i.MustJSON())
|
|
}
|
|
|
|
func TestConversionJSONWithError(t *testing.T) {
|
|
o := objx.MSI()
|
|
o["test"] = func() {}
|
|
|
|
assert.Panics(t, func() {
|
|
o.MustJSON()
|
|
})
|
|
|
|
_, err := o.JSON()
|
|
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func TestConversionBase64(t *testing.T) {
|
|
o := objx.Map{"name": "Mat"}
|
|
|
|
result, err := o.Base64()
|
|
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "eyJuYW1lIjoiTWF0In0=", result)
|
|
assert.Equal(t, "eyJuYW1lIjoiTWF0In0=", o.MustBase64())
|
|
}
|
|
|
|
func TestConversionBase64WithError(t *testing.T) {
|
|
o := objx.MSI()
|
|
o["test"] = func() {}
|
|
|
|
assert.Panics(t, func() {
|
|
o.MustBase64()
|
|
})
|
|
|
|
_, err := o.Base64()
|
|
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func TestConversionSignedBase64(t *testing.T) {
|
|
o := objx.Map{"name": "Mat"}
|
|
|
|
result, err := o.SignedBase64("key")
|
|
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "eyJuYW1lIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6", result)
|
|
assert.Equal(t, "eyJuYW1lIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6", o.MustSignedBase64("key"))
|
|
}
|
|
|
|
func TestConversionSignedBase64WithError(t *testing.T) {
|
|
o := objx.MSI()
|
|
o["test"] = func() {}
|
|
|
|
assert.Panics(t, func() {
|
|
o.MustSignedBase64("key")
|
|
})
|
|
|
|
_, err := o.SignedBase64("key")
|
|
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func TestConversionURLValues(t *testing.T) {
|
|
m := getURLQueryMap()
|
|
u := m.URLValues()
|
|
|
|
assert.Equal(t, url.Values{
|
|
"abc": []string{"123"},
|
|
"name": []string{"Mat"},
|
|
"data[age]": []string{"30"},
|
|
"data[height]": []string{"162"},
|
|
"data[arr][]": []string{"1", "2"},
|
|
"stats[]": []string{"1", "2"},
|
|
"bools[]": []string{"true", "false"},
|
|
"mapSlice[][age]": []string{"40"},
|
|
"mapSlice[][height]": []string{"152"},
|
|
"msiData[age]": []string{"30"},
|
|
"msiData[height]": []string{"162"},
|
|
"msiData[arr][]": []string{"1", "2"},
|
|
"msiSlice[][age]": []string{"40"},
|
|
"msiSlice[][height]": []string{"152"},
|
|
}, u)
|
|
}
|
|
|
|
func TestConversionURLQuery(t *testing.T) {
|
|
m := getURLQueryMap()
|
|
u, err := m.URLQuery()
|
|
|
|
assert.Nil(t, err)
|
|
require.NotNil(t, u)
|
|
|
|
ue, err := url.QueryUnescape(u)
|
|
assert.Nil(t, err)
|
|
require.NotNil(t, ue)
|
|
|
|
assert.Equal(t, "abc=123&bools[]=true&bools[]=false&data[age]=30&data[arr][]=1&data[arr][]=2&data[height]=162&mapSlice[][age]=40&mapSlice[][height]=152&msiData[age]=30&msiData[arr][]=1&msiData[arr][]=2&msiData[height]=162&msiSlice[][age]=40&msiSlice[][height]=152&name=Mat&stats[]=1&stats[]=2", ue)
|
|
}
|
|
|
|
func TestConversionURLQueryNoSliceKeySuffix(t *testing.T) {
|
|
m := getURLQueryMap()
|
|
err := objx.SetURLValuesSliceKeySuffix(objx.URLValuesSliceKeySuffixEmpty)
|
|
require.Nil(t, err)
|
|
u, err := m.URLQuery()
|
|
|
|
assert.Nil(t, err)
|
|
require.NotNil(t, u)
|
|
|
|
ue, err := url.QueryUnescape(u)
|
|
assert.Nil(t, err)
|
|
require.NotNil(t, ue)
|
|
|
|
assert.Equal(t, "abc=123&bools=true&bools=false&data[age]=30&data[arr]=1&data[arr]=2&data[height]=162&mapSlice[age]=40&mapSlice[height]=152&msiData[age]=30&msiData[arr]=1&msiData[arr]=2&msiData[height]=162&msiSlice[age]=40&msiSlice[height]=152&name=Mat&stats=1&stats=2", ue)
|
|
}
|
|
|
|
func TestConversionURLQueryIndexSliceKeySuffix(t *testing.T) {
|
|
m := getURLQueryMap()
|
|
m.Set("mapSlice", []objx.Map{{"age": 40, "sex": "male"}, {"height": 152}})
|
|
err := objx.SetURLValuesSliceKeySuffix(objx.URLValuesSliceKeySuffixIndex)
|
|
require.Nil(t, err)
|
|
u, err := m.URLQuery()
|
|
|
|
assert.Nil(t, err)
|
|
require.NotNil(t, u)
|
|
|
|
ue, err := url.QueryUnescape(u)
|
|
assert.Nil(t, err)
|
|
require.NotNil(t, ue)
|
|
|
|
assert.Equal(t, "abc=123&bools[0]=true&bools[1]=false&data[age]=30&data[arr][0]=1&data[arr][1]=2&data[height]=162&mapSlice[0][age]=40&mapSlice[0][sex]=male&mapSlice[1][height]=152&msiData[age]=30&msiData[arr][0]=1&msiData[arr][1]=2&msiData[height]=162&msiSlice[0][age]=40&msiSlice[1][height]=152&name=Mat&stats[0]=1&stats[1]=2", ue)
|
|
}
|
|
|
|
func TestValidityURLQuerySliceKeySuffix(t *testing.T) {
|
|
err := objx.SetURLValuesSliceKeySuffix("")
|
|
assert.Nil(t, err)
|
|
err = objx.SetURLValuesSliceKeySuffix("[]")
|
|
assert.Nil(t, err)
|
|
err = objx.SetURLValuesSliceKeySuffix("[i]")
|
|
assert.Nil(t, err)
|
|
err = objx.SetURLValuesSliceKeySuffix("{}")
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func getURLQueryMap() objx.Map {
|
|
return objx.Map{
|
|
"abc": 123,
|
|
"name": "Mat",
|
|
"data": objx.Map{"age": 30, "height": 162, "arr": []int{1, 2}},
|
|
"mapSlice": []objx.Map{{"age": 40}, {"height": 152}},
|
|
"msiData": map[string]interface{}{"age": 30, "height": 162, "arr": []int{1, 2}},
|
|
"msiSlice": []map[string]interface{}{{"age": 40}, {"height": 152}},
|
|
"stats": []string{"1", "2"},
|
|
"bools": []bool{true, false},
|
|
}
|
|
}
|