mirror of
https://github.com/getsops/sops.git
synced 2026-02-05 21:45:26 +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.
221 lines
4.8 KiB
Go
221 lines
4.8 KiB
Go
package objx_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/objx"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestAccessorsAccessGetSingleField(t *testing.T) {
|
|
m := objx.Map{"name": "Tyler"}
|
|
|
|
assert.Equal(t, "Tyler", m.Get("name").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessGetSingleFieldInt(t *testing.T) {
|
|
m := objx.Map{"name": 10}
|
|
|
|
assert.Equal(t, 10, m.Get("name").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessGetDeep(t *testing.T) {
|
|
m := objx.Map{
|
|
"name": objx.Map{
|
|
"first": "Tyler",
|
|
"last": "Bunnell",
|
|
"friends": []string{
|
|
"Capitol",
|
|
"Bollocks",
|
|
},
|
|
"ifriends": []interface{}{
|
|
"Capitol",
|
|
"Bollocks",
|
|
},
|
|
},
|
|
}
|
|
|
|
assert.Equal(t, "Tyler", m.Get("name.first").Data())
|
|
assert.Equal(t, "Bunnell", m.Get("name.last").Data())
|
|
assert.Equal(t, "Capitol", m.Get("name.friends[0]").Data())
|
|
assert.Equal(t, "Capitol", m.Get("name.ifriends[0]").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessGetDeepDeep(t *testing.T) {
|
|
m := objx.Map{
|
|
"one": objx.Map{
|
|
"two": objx.Map{
|
|
"three": objx.Map{
|
|
"four": 4,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
assert.Equal(t, 4, m.Get("one.two.three.four").Data())
|
|
assert.Equal(t, 4, m.Get("one[two][three][four]").Data())
|
|
}
|
|
|
|
func TestAccessorsGetWithComplexKey(t *testing.T) {
|
|
m := objx.Map{
|
|
"domains": objx.Map{
|
|
"example-dot-com": objx.Map{
|
|
"apex": "example",
|
|
},
|
|
"example.com": objx.Map{
|
|
"apex": "example",
|
|
},
|
|
},
|
|
}
|
|
|
|
assert.Equal(t, "example", m.Get("domains.example-dot-com.apex").Data())
|
|
|
|
assert.Equal(t, "example", m.Get("domains[example.com].apex").Data())
|
|
assert.Equal(t, "example", m.Get("domains[example.com][apex]").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessGetInsideArray(t *testing.T) {
|
|
m := objx.Map{
|
|
"names": []interface{}{
|
|
objx.Map{
|
|
"first": "Tyler",
|
|
"last": "Bunnell",
|
|
},
|
|
objx.Map{
|
|
"first": "Capitol",
|
|
"last": "Bollocks",
|
|
},
|
|
},
|
|
}
|
|
|
|
assert.Equal(t, "Tyler", m.Get("names[0].first").Data())
|
|
assert.Equal(t, "Bunnell", m.Get("names[0].last").Data())
|
|
assert.Equal(t, "Capitol", m.Get("names[1].first").Data())
|
|
assert.Equal(t, "Bollocks", m.Get("names[1].last").Data())
|
|
|
|
assert.Nil(t, m.Get("names[2]").Data())
|
|
assert.Nil(t, m.Get("names[]").Data())
|
|
assert.Nil(t, m.Get("names1]]").Data())
|
|
assert.Nil(t, m.Get("names[1]]").Data())
|
|
assert.Nil(t, m.Get("names[[1]]").Data())
|
|
assert.Nil(t, m.Get("names[[1]").Data())
|
|
assert.Nil(t, m.Get("names[[1").Data())
|
|
}
|
|
|
|
func TestAccessorsGet(t *testing.T) {
|
|
m := objx.Map{"name": "Tyler"}
|
|
|
|
assert.Equal(t, "Tyler", m.Get("name").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessSetSingleField(t *testing.T) {
|
|
m := objx.Map{"name": "Tyler"}
|
|
|
|
m.Set("name", "Mat")
|
|
m.Set("age", 29)
|
|
|
|
assert.Equal(t, m.Get("name").Data(), "Mat")
|
|
assert.Equal(t, m.Get("age").Data(), 29)
|
|
}
|
|
|
|
func TestAccessorsAccessSetSingleFieldNotExisting(t *testing.T) {
|
|
m := objx.Map{
|
|
"first": "Tyler",
|
|
"last": "Bunnell",
|
|
}
|
|
|
|
m.Set("name", "Mat")
|
|
|
|
assert.Equal(t, m.Get("name").Data(), "Mat")
|
|
}
|
|
|
|
func TestAccessorsAccessSetDeep(t *testing.T) {
|
|
m := objx.Map{
|
|
"name": objx.Map{
|
|
"first": "Tyler",
|
|
"last": "Bunnell",
|
|
},
|
|
}
|
|
|
|
m.Set("name.first", "Mat")
|
|
m.Set("name.last", "Ryer")
|
|
|
|
assert.Equal(t, "Mat", m.Get("name.first").Data())
|
|
assert.Equal(t, "Ryer", m.Get("name.last").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessSetDeepDeep(t *testing.T) {
|
|
m := objx.Map{
|
|
"one": objx.Map{
|
|
"two": objx.Map{
|
|
"three": objx.Map{
|
|
"four": 4,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
m.Set("one.two.three.four", 5)
|
|
|
|
assert.Equal(t, 5, m.Get("one.two.three.four").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessSetDeepDeepWithoutExisting(t *testing.T) {
|
|
m := objx.Map{}
|
|
|
|
m.Set("one.two.three.four", 5)
|
|
m.Set("one.two.three.five", 6)
|
|
|
|
assert.Equal(t, 5, m.Get("one.two.three.four").Data())
|
|
assert.Equal(t, 6, m.Get("one.two.three.five").Data())
|
|
|
|
m.Set("one.two", 7)
|
|
assert.Equal(t, 7, m.Get("one.two").Data())
|
|
assert.Equal(t, nil, m.Get("one.two.three.four").Data())
|
|
|
|
m.Set("one.two.three", 8)
|
|
assert.Equal(t, 8, m.Get("one.two.three").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessSetArray(t *testing.T) {
|
|
m := objx.Map{
|
|
"names": []interface{}{"Tyler"},
|
|
}
|
|
m.Set("names[0]", "Mat")
|
|
|
|
assert.Equal(t, "Mat", m.Get("names[0]").Data())
|
|
}
|
|
|
|
func TestAccessorsAccessSetInsideArray(t *testing.T) {
|
|
m := objx.Map{
|
|
"names": []interface{}{
|
|
objx.Map{
|
|
"first": "Tyler",
|
|
"last": "Bunnell",
|
|
},
|
|
objx.Map{
|
|
"first": "Capitol",
|
|
"last": "Bollocks",
|
|
},
|
|
},
|
|
}
|
|
|
|
m.Set("names[0].first", "Mat")
|
|
m.Set("names[0].last", "Ryer")
|
|
m.Set("names[1].first", "Captain")
|
|
m.Set("names[1].last", "Underpants")
|
|
|
|
assert.Equal(t, "Mat", m.Get("names[0].first").Data())
|
|
assert.Equal(t, "Ryer", m.Get("names[0].last").Data())
|
|
assert.Equal(t, "Captain", m.Get("names[1].first").Data())
|
|
assert.Equal(t, "Underpants", m.Get("names[1].last").Data())
|
|
}
|
|
|
|
func TestAccessorsSet(t *testing.T) {
|
|
m := objx.Map{"name": "Tyler"}
|
|
|
|
m.Set("name", "Mat")
|
|
|
|
assert.Equal(t, "Mat", m.Get("name").Data())
|
|
}
|