diff --git a/internal/terraform/context_plan_import_test.go b/internal/terraform/context_plan_import_test.go index 7c7a16528a..0fd93995e9 100644 --- a/internal/terraform/context_plan_import_test.go +++ b/internal/terraform/context_plan_import_test.go @@ -598,6 +598,30 @@ func TestContext2Plan_importIdInvalidNull(t *testing.T) { } } +func TestContext2Plan_importIdInvalidEmptyString(t *testing.T) { + p := testProvider("test") + m := testModule(t, "import-id-invalid-null") + ctx := testContext2(t, &ContextOpts{ + Providers: map[addrs.Provider]providers.Factory{ + addrs.NewDefaultProvider("test"): testProviderFuncFixed(p), + }, + }) + + _, diags := ctx.Plan(m, states.NewState(), &PlanOpts{ + SetVariables: InputValues{ + "the_id": &InputValue{ + Value: cty.StringVal(""), + }, + }, + }) + if !diags.HasErrors() { + t.Fatal("succeeded; want errors") + } + if got, want := diags.Err().Error(), "The import ID value evaluates to an empty string, please provide a non-empty value."; !strings.Contains(got, want) { + t.Fatalf("wrong error:\ngot: %s\nwant: message containing %q", got, want) + } +} + func TestContext2Plan_importIdInvalidUnknown(t *testing.T) { p := testProvider("test") m := testModule(t, "import-id-invalid-unknown") diff --git a/internal/terraform/eval_import.go b/internal/terraform/eval_import.go index 83e2b8c604..518eaccf06 100644 --- a/internal/terraform/eval_import.go +++ b/internal/terraform/eval_import.go @@ -72,6 +72,15 @@ func evaluateImportIdExpression(expr hcl.Expression, ctx EvalContext, keyData in }) } + if importId == "" { + return "", diags.Append(&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid import id argument", + Detail: "The import ID value evaluates to an empty string, please provide a non-empty value.", + Subject: expr.Range().Ptr(), + }) + } + return importId, diags }