Skip to content

Commit cfacdb3

Browse files
authored
fix: handle incorrect ids when importing alert_configuration or project_ip_access_list resources (#1472)
* fix: error handling for alert_configuration import * fix: an error condition reading project data source * fix: error handling for project_ip_access_list import * make tests more concise and clear following PR comments
1 parent 2fa8084 commit cfacdb3

5 files changed

+56
-1
lines changed

mongodbatlas/fw_data_source_mongodbatlas_projects.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ func (d *ProjectsDS) Read(ctx context.Context, req datasource.ReadRequest, resp
160160
err = populateProjectsDataSourceModel(ctx, conn, connV2, &stateModel, projectsRes)
161161
if err != nil {
162162
resp.Diagnostics.AddError("error in monogbatlas_projects data source", err.Error())
163+
return
163164
}
164165

165166
resp.Diagnostics.Append(resp.State.Set(ctx, &stateModel)...)

mongodbatlas/fw_resource_mongodbatlas_alert_configuration.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,8 @@ func (r *AlertConfigurationRS) ImportState(ctx context.Context, req resource.Imp
534534
parts := strings.SplitN(req.ID, "-", 2)
535535

536536
if len(parts) != 2 {
537-
resp.Diagnostics.AddError("import format error: to import a cluster, use the format {project_id}-{id}", "")
537+
resp.Diagnostics.AddError("import format error", "to import an alert configuration, use the format {project_id}-{alert_configuration_id}")
538+
return
538539
}
539540

540541
projectID := parts[0]

mongodbatlas/fw_resource_mongodbatlas_alert_configuration_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"os"
7+
"regexp"
78
"testing"
89

910
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
@@ -312,6 +313,31 @@ func TestAccConfigRSAlertConfiguration_importBasic(t *testing.T) {
312313
})
313314
}
314315

316+
func TestAccConfigRSAlertConfiguration_importIncorrectId(t *testing.T) {
317+
var (
318+
orgID = os.Getenv("MONGODB_ATLAS_ORG_ID")
319+
projectName = acctest.RandomWithPrefix("test-acc")
320+
resourceName = "mongodbatlas_alert_configuration.test"
321+
)
322+
323+
resource.ParallelTest(t, resource.TestCase{
324+
PreCheck: func() { testAccPreCheckBasic(t) },
325+
ProtoV6ProviderFactories: testAccProviderV6Factories,
326+
CheckDestroy: testAccCheckMongoDBAtlasAlertConfigurationDestroy,
327+
Steps: []resource.TestStep{
328+
{
329+
Config: testAccMongoDBAtlasAlertConfigurationConfig(orgID, projectName, true),
330+
},
331+
{
332+
ResourceName: resourceName,
333+
ImportState: true,
334+
ImportStateId: "incorrect_id_without_project_id_and_dash",
335+
ExpectError: regexp.MustCompile("import format error"),
336+
},
337+
},
338+
})
339+
}
340+
315341
func TestAccConfigRSAlertConfiguration_importConfigNotifications(t *testing.T) {
316342
var (
317343
orgID = os.Getenv("MONGODB_ATLAS_ORG_ID")

mongodbatlas/fw_resource_mongodbatlas_project_ip_access_list.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ func (r *ProjectIPAccessListRS) ImportState(ctx context.Context, req resource.Im
354354

355355
if len(parts) != 2 {
356356
resp.Diagnostics.AddError("import format error", "to import a projectIP Access List, use the format {project_id}-{entry}")
357+
return
357358
}
358359

359360
projectID := parts[0]

mongodbatlas/fw_resource_mongodbatlas_project_ip_access_list_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"os"
7+
"regexp"
78
"testing"
89

910
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
@@ -220,6 +221,31 @@ func TestAccProjectRSProjectIPAccessList_importBasic(t *testing.T) {
220221
})
221222
}
222223

224+
func TestAccProjectRSProjectIPAccessList_importIncorrectId(t *testing.T) {
225+
orgID := os.Getenv("MONGODB_ATLAS_ORG_ID")
226+
projectName := acctest.RandomWithPrefix("test-acc")
227+
ipAddress := fmt.Sprintf("179.154.226.%d", acctest.RandIntRange(0, 255))
228+
comment := fmt.Sprintf("TestAcc for ipaddres (%s)", ipAddress)
229+
resourceName := "mongodbatlas_project_ip_access_list.test"
230+
231+
resource.Test(t, resource.TestCase{
232+
PreCheck: func() { testAccPreCheckBasic(t) },
233+
ProtoV6ProviderFactories: testAccProviderV6Factories,
234+
CheckDestroy: testAccCheckMongoDBAtlasProjectIPAccessListDestroy,
235+
Steps: []resource.TestStep{
236+
{
237+
Config: testAccMongoDBAtlasProjectIPAccessListConfigSettingIPAddress(orgID, projectName, ipAddress, comment),
238+
},
239+
{
240+
ResourceName: resourceName,
241+
ImportState: true,
242+
ImportStateId: "incorrect_id_without_project_id_and_dash",
243+
ExpectError: regexp.MustCompile("import format error"),
244+
},
245+
},
246+
})
247+
}
248+
223249
func testAccCheckMongoDBAtlasProjectIPAccessListExists(resourceName string) resource.TestCheckFunc {
224250
return func(s *terraform.State) error {
225251
conn := testMongoDBClient.(*MongoDBClient).Atlas

0 commit comments

Comments
 (0)