* feat: completed bucket and credential group * feat: fix linter warnings * feat: updated documentation * feat: updated to current version of the regional api * feat: implement review findings * feat: implement further review findings * fix: make sure region is stored for the data-source in the state
87 lines
2 KiB
Go
87 lines
2 KiB
Go
package utils
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform-plugin-framework/provider/schema"
|
|
"github.com/hashicorp/terraform-plugin-framework/resource"
|
|
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
|
|
"github.com/hashicorp/terraform-plugin-framework/types"
|
|
)
|
|
|
|
func TestAdaptRegion(t *testing.T) {
|
|
type model struct {
|
|
Region types.String `tfsdk:"region"`
|
|
}
|
|
type args struct {
|
|
configRegion types.String
|
|
defaultRegion string
|
|
}
|
|
testcases := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
wantRegion types.String
|
|
}{
|
|
{
|
|
"no configured region, use provider region",
|
|
args{
|
|
types.StringNull(),
|
|
"eu01",
|
|
},
|
|
false,
|
|
types.StringValue("eu01"),
|
|
},
|
|
{
|
|
"no configured region, no provider region => want error",
|
|
args{
|
|
types.StringNull(),
|
|
"",
|
|
},
|
|
true,
|
|
types.StringNull(),
|
|
},
|
|
{
|
|
"configuration region overrides provider region",
|
|
args{
|
|
types.StringValue("eu01-m"),
|
|
"eu01",
|
|
},
|
|
false,
|
|
types.StringValue("eu01-m"),
|
|
},
|
|
}
|
|
for _, tc := range testcases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
plan := tfsdk.Plan{
|
|
Schema: schema.Schema{
|
|
Attributes: map[string]schema.Attribute{
|
|
"region": schema.StringAttribute{
|
|
Required: true,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
if diags := plan.Set(context.Background(), model{types.StringValue("unknown")}); diags.HasError() {
|
|
t.Fatalf("cannot create test model: %v", diags)
|
|
}
|
|
resp := resource.ModifyPlanResponse{
|
|
Plan: plan,
|
|
}
|
|
|
|
configModel := model{
|
|
Region: tc.args.configRegion,
|
|
}
|
|
planModel := model{}
|
|
AdaptRegion(context.Background(), configModel.Region, &planModel.Region, tc.args.defaultRegion, &resp)
|
|
if diags := resp.Diagnostics; tc.wantErr != diags.HasError() {
|
|
t.Errorf("unexpected diagnostics: want err: %v, actual %v", tc.wantErr, diags.Errors())
|
|
}
|
|
if expected, actual := tc.wantRegion, planModel.Region; !expected.Equal(actual) {
|
|
t.Errorf("wrong result region. expect %s but got %s", expected, actual)
|
|
}
|
|
})
|
|
}
|
|
}
|