mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-28 01:41:48 -06:00
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
|
package terraform
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestEvalWriteMapOutput(t *testing.T) {
|
||
|
ctx := new(MockEvalContext)
|
||
|
ctx.StateState = NewState()
|
||
|
ctx.StateLock = new(sync.RWMutex)
|
||
|
|
||
|
cases := []struct {
|
||
|
name string
|
||
|
cfg *ResourceConfig
|
||
|
err bool
|
||
|
}{
|
||
|
{
|
||
|
// Eval should recognize a single map in a slice, and collapse it
|
||
|
// into the map value
|
||
|
"single-map",
|
||
|
&ResourceConfig{
|
||
|
Config: map[string]interface{}{
|
||
|
"value": []map[string]interface{}{
|
||
|
map[string]interface{}{"a": "b"},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
false,
|
||
|
},
|
||
|
{
|
||
|
// we can't apply a multi-valued map to a variable, so this should error
|
||
|
"multi-map",
|
||
|
&ResourceConfig{
|
||
|
Config: map[string]interface{}{
|
||
|
"value": []map[string]interface{}{
|
||
|
map[string]interface{}{"a": "b"},
|
||
|
map[string]interface{}{"c": "d"},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tc := range cases {
|
||
|
evalNode := &EvalWriteOutput{Name: tc.name}
|
||
|
ctx.InterpolateConfigResult = tc.cfg
|
||
|
t.Run(tc.name, func(t *testing.T) {
|
||
|
_, err := evalNode.Eval(ctx)
|
||
|
if err != nil && !tc.err {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|