mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-20 02:09:26 -05:00
148 lines
3.3 KiB
Go
148 lines
3.3 KiB
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package jsonconfig
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/opentofu/opentofu/internal/addrs"
|
|
"github.com/opentofu/opentofu/internal/configs"
|
|
"github.com/opentofu/opentofu/internal/tofu"
|
|
)
|
|
|
|
func TestFindSourceProviderConfig(t *testing.T) {
|
|
tests := []struct {
|
|
StartKey string
|
|
FullName string
|
|
ProviderMap map[string]providerConfig
|
|
Want string
|
|
}{
|
|
{
|
|
StartKey: "null",
|
|
FullName: "hashicorp/null",
|
|
ProviderMap: map[string]providerConfig{},
|
|
Want: "",
|
|
},
|
|
{
|
|
StartKey: "null",
|
|
FullName: "hashicorp/null",
|
|
ProviderMap: map[string]providerConfig{
|
|
"null": {
|
|
Name: "null",
|
|
FullName: "hashicorp/null",
|
|
ModuleAddress: "",
|
|
},
|
|
},
|
|
Want: "null",
|
|
},
|
|
{
|
|
StartKey: "null2",
|
|
FullName: "hashicorp/null",
|
|
ProviderMap: map[string]providerConfig{
|
|
"null": {
|
|
Name: "null",
|
|
FullName: "hashicorp/null",
|
|
ModuleAddress: "",
|
|
},
|
|
},
|
|
Want: "",
|
|
},
|
|
{
|
|
StartKey: "null",
|
|
FullName: "hashicorp2/null",
|
|
ProviderMap: map[string]providerConfig{
|
|
"null": {
|
|
Name: "null",
|
|
FullName: "hashicorp/null",
|
|
ModuleAddress: "",
|
|
},
|
|
},
|
|
Want: "",
|
|
},
|
|
{
|
|
StartKey: "module.a:null",
|
|
FullName: "hashicorp/null",
|
|
ProviderMap: map[string]providerConfig{
|
|
"null": {
|
|
Name: "null",
|
|
FullName: "hashicorp/null",
|
|
ModuleAddress: "",
|
|
},
|
|
"module.a:null": {
|
|
Name: "module.a:null",
|
|
FullName: "hashicorp/null",
|
|
ModuleAddress: "module.a",
|
|
parentKey: "null",
|
|
},
|
|
},
|
|
Want: "null",
|
|
},
|
|
{
|
|
StartKey: "module.a:null",
|
|
FullName: "hashicorp2/null",
|
|
ProviderMap: map[string]providerConfig{
|
|
"null": {
|
|
Name: "null",
|
|
FullName: "hashicorp/null",
|
|
ModuleAddress: "",
|
|
},
|
|
"module.a:null": {
|
|
Name: "module.a:null",
|
|
FullName: "hashicorp2/null",
|
|
ModuleAddress: "module.a",
|
|
parentKey: "null",
|
|
},
|
|
},
|
|
Want: "module.a:null",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
got := findSourceProviderKey(test.StartKey, test.FullName, test.ProviderMap)
|
|
if got != test.Want {
|
|
t.Errorf("wrong result:\nGot: %#v\nWant: %#v\n", got, test.Want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMarshalModule(t *testing.T) {
|
|
t.Run("validate variables marshalling with all the required fields", func(t *testing.T) {
|
|
varCfg := &configs.Variable{
|
|
Name: "myvar",
|
|
Description: "myvar description",
|
|
Deprecated: "myvar deprecated message",
|
|
}
|
|
modCfg := configs.Config{
|
|
Module: &configs.Module{
|
|
Variables: map[string]*configs.Variable{
|
|
"myvar": varCfg,
|
|
},
|
|
},
|
|
}
|
|
modCfg.Root = &modCfg
|
|
|
|
out, err := marshalModule(&modCfg, &tofu.Schemas{}, addrs.RootModule.String())
|
|
if err != nil {
|
|
t.Fatalf("unexpected error during marshalling module: %s", err)
|
|
}
|
|
|
|
expected := module{
|
|
Outputs: map[string]output{},
|
|
ModuleCalls: map[string]moduleCall{},
|
|
Variables: map[string]*variable{
|
|
"myvar": {
|
|
Description: varCfg.Description,
|
|
Deprecated: varCfg.Deprecated,
|
|
},
|
|
},
|
|
}
|
|
if diff := cmp.Diff(expected, out); diff != "" {
|
|
t.Errorf("unexpected diff: \n%s", diff)
|
|
}
|
|
})
|
|
}
|