You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform/internal/command/jsonprovider/attribute_test.go

79 lines
1.8 KiB

// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package jsonprovider
import (
"encoding/json"
"testing"
"github.com/google/go-cmp/cmp"
"github.com/zclconf/go-cty/cty"
"github.com/hashicorp/terraform/internal/configs/configschema"
)
func TestMarshalAttribute(t *testing.T) {
tests := []struct {
Input *configschema.Attribute
Want *Attribute
}{
{
&configschema.Attribute{Type: cty.String, Optional: true, Computed: true},
&Attribute{
AttributeType: json.RawMessage(`"string"`),
Optional: true,
Computed: true,
DescriptionKind: "plain",
},
},
{ // collection types look a little odd.
&configschema.Attribute{Type: cty.Map(cty.String), Optional: true, Computed: true, WriteOnly: true},
&Attribute{
AttributeType: json.RawMessage(`["map","string"]`),
Optional: true,
Computed: true,
WriteOnly: true,
DescriptionKind: "plain",
},
},
}
for _, test := range tests {
got := marshalAttribute(test.Input)
if !cmp.Equal(got, test.Want) {
t.Fatalf("wrong result:\n %v\n", cmp.Diff(got, test.Want))
}
}
}
func TestMarshalIdentityAttribute(t *testing.T) {
tests := []struct {
Input *configschema.Attribute
Want *IdentityAttribute
}{
{
&configschema.Attribute{Type: cty.String, Optional: true},
&IdentityAttribute{
IdentityType: json.RawMessage(`"string"`),
OptionalForImport: true,
},
},
{ // collection types look a little odd.
&configschema.Attribute{Type: cty.List(cty.String), Required: true},
&IdentityAttribute{
IdentityType: json.RawMessage(`["list","string"]`),
RequiredForImport: true,
},
},
}
for _, test := range tests {
got := marshalIdentityAttribute(test.Input)
if !cmp.Equal(got, test.Want) {
t.Fatalf("wrong result:\n %v\n", cmp.Diff(got, test.Want))
}
}
}