diff --git a/internal/service/projectinvitation/data_source_project_invitation.go b/internal/service/projectinvitation/data_source_project_invitation.go index 132fbddb52..4757d719c8 100644 --- a/internal/service/projectinvitation/data_source_project_invitation.go +++ b/internal/service/projectinvitation/data_source_project_invitation.go @@ -12,7 +12,7 @@ import ( func DataSource() *schema.Resource { return &schema.Resource{ - ReadContext: dataSourceMongoDBAtlasProjectInvitationRead, + ReadContext: dataSourceRead, Schema: map[string]*schema.Schema{ "project_id": { Type: schema.TypeString, @@ -49,43 +49,42 @@ func DataSource() *schema.Resource { } } -func dataSourceMongoDBAtlasProjectInvitationRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { - // Get client connection. - conn := meta.(*config.MongoDBClient).Atlas +func dataSourceRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + connV2 := meta.(*config.MongoDBClient).AtlasV2 projectID := d.Get("project_id").(string) username := d.Get("username").(string) invitationID := d.Get("invitation_id").(string) - projectInvitation, _, err := conn.Projects.Invitation(ctx, projectID, invitationID) + projectInvitation, _, err := connV2.ProjectsApi.GetProjectInvitation(ctx, projectID, invitationID).Execute() if err != nil { return diag.FromErr(fmt.Errorf("error getting Project Invitation information: %w", err)) } - if err := d.Set("username", projectInvitation.Username); err != nil { + if err := d.Set("username", projectInvitation.GetUsername()); err != nil { return diag.FromErr(fmt.Errorf("error getting `username` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("project_id", projectInvitation.GroupID); err != nil { + if err := d.Set("project_id", projectInvitation.GetGroupId()); err != nil { return diag.FromErr(fmt.Errorf("error getting `username` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("invitation_id", projectInvitation.ID); err != nil { + if err := d.Set("invitation_id", projectInvitation.GetId()); err != nil { return diag.FromErr(fmt.Errorf("error getting `invitation_id` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("expires_at", projectInvitation.ExpiresAt); err != nil { + if err := d.Set("expires_at", conversion.TimePtrToStringPtr(projectInvitation.ExpiresAt)); err != nil { return diag.FromErr(fmt.Errorf("error getting `expires_at` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("created_at", projectInvitation.CreatedAt); err != nil { + if err := d.Set("created_at", conversion.TimePtrToStringPtr(projectInvitation.CreatedAt)); err != nil { return diag.FromErr(fmt.Errorf("error getting `created_at` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("inviter_username", projectInvitation.InviterUsername); err != nil { + if err := d.Set("inviter_username", projectInvitation.GetInviterUsername()); err != nil { return diag.FromErr(fmt.Errorf("error getting `inviter_username` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("roles", projectInvitation.Roles); err != nil { + if err := d.Set("roles", projectInvitation.GetRoles()); err != nil { return diag.FromErr(fmt.Errorf("error getting `roles` for Project Invitation (%s): %s", d.Id(), err)) } diff --git a/internal/service/projectinvitation/data_source_project_invitation_test.go b/internal/service/projectinvitation/data_source_project_invitation_test.go index 9875cedd63..9556458673 100644 --- a/internal/service/projectinvitation/data_source_project_invitation_test.go +++ b/internal/service/projectinvitation/data_source_project_invitation_test.go @@ -23,7 +23,7 @@ func TestAccProjectDSProjectInvitation_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.PreCheckBasic(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: testAccCheckMongoDBAtlasProjectInvitationDestroy, + CheckDestroy: checkDestroy, Steps: []resource.TestStep{ { Config: testAccDataSourceMongoDBAtlasProjectInvitationConfig(orgID, projectName, name, initialRole), diff --git a/internal/service/projectinvitation/resource_project_invitation.go b/internal/service/projectinvitation/resource_project_invitation.go index c7aaa53198..e57220444c 100644 --- a/internal/service/projectinvitation/resource_project_invitation.go +++ b/internal/service/projectinvitation/resource_project_invitation.go @@ -11,17 +11,17 @@ import ( "github.com/mongodb/terraform-provider-mongodbatlas/internal/config" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - matlas "go.mongodb.org/atlas/mongodbatlas" + "go.mongodb.org/atlas-sdk/v20231115005/admin" ) func Resource() *schema.Resource { return &schema.Resource{ - CreateContext: resourceMongoDBAtlasProjectInvitationCreate, - ReadContext: resourceMongoDBAtlasProjectInvitationRead, - DeleteContext: resourceMongoDBAtlasProjectInvitationDelete, - UpdateContext: resourceMongoDBAtlasProjectInvitationUpdate, + CreateContext: resourceCreate, + ReadContext: resourceRead, + UpdateContext: resourceUpdate, + DeleteContext: resourceDelete, Importer: &schema.ResourceImporter{ - StateContext: resourceMongoDBAtlasProjectInvitationImportState, + StateContext: resourceImport, }, Schema: map[string]*schema.Schema{ "project_id": { @@ -61,19 +61,40 @@ func Resource() *schema.Resource { } } -func resourceMongoDBAtlasProjectInvitationRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { - // Get client connection. - conn := meta.(*config.MongoDBClient).Atlas +func resourceCreate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + connV2 := meta.(*config.MongoDBClient).AtlasV2 + projectID := d.Get("project_id").(string) + + roles := createProjectStringListFromSetSchema(d.Get("roles").(*schema.Set)) + invitationReq := &admin.GroupInvitationRequest{ + Roles: &roles, + Username: conversion.StringPtr(d.Get("username").(string)), + } + + invitationRes, _, err := connV2.ProjectsApi.CreateProjectInvitation(ctx, projectID, invitationReq).Execute() + if err != nil { + return diag.FromErr(fmt.Errorf("error creating Project invitation for user %s: %w", d.Get("username").(string), err)) + } + + d.SetId(conversion.EncodeStateID(map[string]string{ + "username": invitationRes.GetUsername(), + "project_id": invitationRes.GetGroupId(), + "invitation_id": invitationRes.GetId(), + })) + + return resourceRead(ctx, d, meta) +} + +func resourceRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + connV2 := meta.(*config.MongoDBClient).AtlasV2 ids := conversion.DecodeStateID(d.Id()) projectID := ids["project_id"] username := ids["username"] invitationID := ids["invitation_id"] - projectInvitation, resp, err := conn.Projects.Invitation(ctx, projectID, invitationID) + projectInvitation, resp, err := connV2.ProjectsApi.GetProjectInvitation(ctx, projectID, invitationID).Execute() if err != nil { - // case 404 - // deleted in the backend case - if resp != nil && resp.StatusCode == http.StatusNotFound { + if resp != nil && resp.StatusCode == http.StatusNotFound { // case 404: deleted in the backend case d.SetId("") return nil } @@ -81,31 +102,31 @@ func resourceMongoDBAtlasProjectInvitationRead(ctx context.Context, d *schema.Re return diag.FromErr(fmt.Errorf("error getting Project Invitation information: %w", err)) } - if err := d.Set("username", projectInvitation.Username); err != nil { + if err := d.Set("username", projectInvitation.GetUsername()); err != nil { return diag.FromErr(fmt.Errorf("error getting `username` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("project_id", projectInvitation.GroupID); err != nil { + if err := d.Set("project_id", projectInvitation.GetGroupId()); err != nil { return diag.FromErr(fmt.Errorf("error getting `project_id` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("invitation_id", projectInvitation.ID); err != nil { + if err := d.Set("invitation_id", projectInvitation.GetId()); err != nil { return diag.FromErr(fmt.Errorf("error getting `invitation_id` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("expires_at", projectInvitation.ExpiresAt); err != nil { + if err := d.Set("expires_at", conversion.TimePtrToStringPtr(projectInvitation.ExpiresAt)); err != nil { return diag.FromErr(fmt.Errorf("error getting `expires_at` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("created_at", projectInvitation.CreatedAt); err != nil { + if err := d.Set("created_at", conversion.TimePtrToStringPtr(projectInvitation.CreatedAt)); err != nil { return diag.FromErr(fmt.Errorf("error getting `created_at` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("inviter_username", projectInvitation.InviterUsername); err != nil { + if err := d.Set("inviter_username", projectInvitation.GetInviterUsername()); err != nil { return diag.FromErr(fmt.Errorf("error getting `inviter_username` for Project Invitation (%s): %w", d.Id(), err)) } - if err := d.Set("roles", projectInvitation.Roles); err != nil { + if err := d.Set("roles", projectInvitation.GetRoles()); err != nil { return diag.FromErr(fmt.Errorf("error getting `roles` for Project Invitation (%s): %w", d.Id(), err)) } @@ -118,94 +139,67 @@ func resourceMongoDBAtlasProjectInvitationRead(ctx context.Context, d *schema.Re return nil } -func resourceMongoDBAtlasProjectInvitationCreate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { - // Get client connection. - conn := meta.(*config.MongoDBClient).Atlas - projectID := d.Get("project_id").(string) - - invitationReq := &matlas.Invitation{ - Roles: createProjectStringListFromSetSchema(d.Get("roles").(*schema.Set)), - Username: d.Get("username").(string), - } - - invitationRes, _, err := conn.Projects.InviteUser(ctx, projectID, invitationReq) - if err != nil { - return diag.FromErr(fmt.Errorf("error creating Project invitation for user %s: %w", d.Get("username").(string), err)) - } - - d.SetId(conversion.EncodeStateID(map[string]string{ - "username": invitationRes.Username, - "project_id": invitationRes.GroupID, - "invitation_id": invitationRes.ID, - })) - - return resourceMongoDBAtlasProjectInvitationRead(ctx, d, meta) -} - -func resourceMongoDBAtlasProjectInvitationDelete(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { - conn := meta.(*config.MongoDBClient).Atlas +func resourceUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + connV2 := meta.(*config.MongoDBClient).AtlasV2 ids := conversion.DecodeStateID(d.Id()) projectID := ids["project_id"] username := ids["username"] invitationID := ids["invitation_id"] - _, err := conn.Projects.DeleteInvitation(ctx, projectID, invitationID) + roles := conversion.ExpandStringListFromSetSchema(d.Get("roles").(*schema.Set)) + invitationReq := &admin.GroupInvitationUpdateRequest{ + Roles: &roles, + } + _, _, err := connV2.ProjectsApi.UpdateProjectInvitationById(ctx, projectID, invitationID, invitationReq).Execute() if err != nil { - return diag.FromErr(fmt.Errorf("error deleting Project invitation for user %s: %w", username, err)) + return diag.FromErr(fmt.Errorf("error updating Project invitation for user %s: %w", username, err)) } - - return nil + return resourceRead(ctx, d, meta) } -func resourceMongoDBAtlasProjectInvitationUpdate(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { - conn := meta.(*config.MongoDBClient).Atlas +func resourceDelete(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics { + connV2 := meta.(*config.MongoDBClient).AtlasV2 ids := conversion.DecodeStateID(d.Id()) projectID := ids["project_id"] username := ids["username"] invitationID := ids["invitation_id"] - - invitationReq := &matlas.Invitation{ - Roles: conversion.ExpandStringListFromSetSchema(d.Get("roles").(*schema.Set)), - } - - _, _, err := conn.Projects.UpdateInvitationByID(ctx, projectID, invitationID, invitationReq) + _, _, err := connV2.ProjectsApi.DeleteProjectInvitation(ctx, projectID, invitationID).Execute() if err != nil { - return diag.FromErr(fmt.Errorf("error updating Project invitation for user %s: %w", username, err)) + return diag.FromErr(fmt.Errorf("error deleting Project invitation for user %s: %w", username, err)) } - - return resourceMongoDBAtlasProjectInvitationRead(ctx, d, meta) + return nil } -func resourceMongoDBAtlasProjectInvitationImportState(ctx context.Context, d *schema.ResourceData, meta any) ([]*schema.ResourceData, error) { - conn := meta.(*config.MongoDBClient).Atlas +func resourceImport(ctx context.Context, d *schema.ResourceData, meta any) ([]*schema.ResourceData, error) { + connV2 := meta.(*config.MongoDBClient).AtlasV2 projectID, username, err := splitProjectInvitationImportID(d.Id()) if err != nil { return nil, err } - projectInvitations, _, err := conn.Projects.Invitations(ctx, projectID, nil) + projectInvitations, _, err := connV2.ProjectsApi.ListProjectInvitations(ctx, projectID).Execute() if err != nil { return nil, fmt.Errorf("couldn't import Project invitations, error: %s", err) } for _, projectInvitation := range projectInvitations { - if projectInvitation.Username != username { + if conversion.SafeString(projectInvitation.Username) != username { continue } - if err := d.Set("username", projectInvitation.Username); err != nil { + if err := d.Set("username", projectInvitation.GetUsername()); err != nil { return nil, fmt.Errorf("error getting `username` for Project Invitation (%s): %w", username, err) } - if err := d.Set("project_id", projectInvitation.GroupID); err != nil { + if err := d.Set("project_id", projectInvitation.GetGroupId()); err != nil { return nil, fmt.Errorf("error getting `project_id` for Project Invitation (%s): %w", username, err) } - if err := d.Set("invitation_id", projectInvitation.ID); err != nil { + if err := d.Set("invitation_id", projectInvitation.GetId()); err != nil { return nil, fmt.Errorf("error getting `invitation_id` for Project Invitation (%s): %w", username, err) } d.SetId(conversion.EncodeStateID(map[string]string{ "username": username, "project_id": projectID, - "invitation_id": projectInvitation.ID, + "invitation_id": projectInvitation.GetId(), })) return []*schema.ResourceData{d}, nil } diff --git a/internal/service/projectinvitation/resource_project_invitation_migration_test.go b/internal/service/projectinvitation/resource_project_invitation_migration_test.go new file mode 100644 index 0000000000..74976fea68 --- /dev/null +++ b/internal/service/projectinvitation/resource_project_invitation_migration_test.go @@ -0,0 +1,53 @@ +package projectinvitation_test + +import ( + "fmt" + "os" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/acctest" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/plancheck" + "github.com/mongodb/terraform-provider-mongodbatlas/internal/testutil/acc" + "github.com/mongodb/terraform-provider-mongodbatlas/internal/testutil/mig" +) + +func TestAccMigrationProjectInvitation_basic(t *testing.T) { + var ( + resourceName = "mongodbatlas_project_invitation.test" + orgID = os.Getenv("MONGODB_ATLAS_ORG_ID") + projectName = acctest.RandomWithPrefix("test-acc") + name = fmt.Sprintf("test-acc-%s@mongodb.com", acctest.RandString(10)) + roles = []string{"GROUP_DATA_ACCESS_ADMIN", "GROUP_CLUSTER_MANAGER"} + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { mig.PreCheckBasic(t) }, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + ExternalProviders: mig.ExternalProviders(), + Config: configBasic(orgID, projectName, name, roles), + Check: resource.ComposeTestCheckFunc( + checkExists(resourceName), + resource.TestCheckResourceAttrSet(resourceName, "project_id"), + resource.TestCheckResourceAttrSet(resourceName, "invitation_id"), + resource.TestCheckResourceAttr(resourceName, "username", name), + resource.TestCheckResourceAttr(resourceName, "roles.#", "2"), + resource.TestCheckTypeSetElemAttr(resourceName, "roles.*", roles[0]), + resource.TestCheckTypeSetElemAttr(resourceName, "roles.*", roles[1]), + ), + }, + { + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + Config: configBasic(orgID, projectName, name, roles), + ConfigPlanChecks: resource.ConfigPlanChecks{ + PreApply: []plancheck.PlanCheck{ + acc.DebugPlan(), + plancheck.ExpectEmptyPlan(), + }, + }, + }, + }, + }) +} diff --git a/internal/service/projectinvitation/resource_project_invitation_test.go b/internal/service/projectinvitation/resource_project_invitation_test.go index bc7eb5b936..7b433cccc9 100644 --- a/internal/service/projectinvitation/resource_project_invitation_test.go +++ b/internal/service/projectinvitation/resource_project_invitation_test.go @@ -12,12 +12,10 @@ import ( "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/mongodb/terraform-provider-mongodbatlas/internal/common/conversion" "github.com/mongodb/terraform-provider-mongodbatlas/internal/testutil/acc" - matlas "go.mongodb.org/atlas/mongodbatlas" ) func TestAccProjectRSProjectInvitation_basic(t *testing.T) { var ( - invitation matlas.Invitation resourceName = "mongodbatlas_project_invitation.test" orgID = os.Getenv("MONGODB_ATLAS_ORG_ID") projectName = acctest.RandomWithPrefix("test-acc") @@ -29,34 +27,29 @@ func TestAccProjectRSProjectInvitation_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.PreCheckBasic(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: testAccCheckMongoDBAtlasProjectInvitationDestroy, + CheckDestroy: checkDestroy, Steps: []resource.TestStep{ { - Config: testAccMongoDBAtlasProjectInvitationConfig(orgID, projectName, name, initialRole), + Config: configBasic(orgID, projectName, name, initialRole), Check: resource.ComposeTestCheckFunc( - testAccCheckMongoDBAtlasProjectInvitationExists(t, resourceName, &invitation), - testAccCheckMongoDBAtlasProjectInvitationUsernameAttribute(&invitation, name), - testAccCheckMongoDBAtlasProjectInvitationRoleAttribute(&invitation, initialRole), + checkExists(resourceName), resource.TestCheckResourceAttrSet(resourceName, "project_id"), - resource.TestCheckResourceAttrSet(resourceName, "username"), resource.TestCheckResourceAttrSet(resourceName, "invitation_id"), - resource.TestCheckResourceAttrSet(resourceName, "roles.#"), resource.TestCheckResourceAttr(resourceName, "username", name), resource.TestCheckResourceAttr(resourceName, "roles.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "roles.*", initialRole[0]), ), }, { - Config: testAccMongoDBAtlasProjectInvitationConfig(orgID, projectName, name, updateRoles), + Config: configBasic(orgID, projectName, name, updateRoles), Check: resource.ComposeTestCheckFunc( - testAccCheckMongoDBAtlasProjectInvitationExists(t, resourceName, &invitation), - testAccCheckMongoDBAtlasProjectInvitationUsernameAttribute(&invitation, name), - testAccCheckMongoDBAtlasProjectInvitationRoleAttribute(&invitation, updateRoles), + checkExists(resourceName), resource.TestCheckResourceAttrSet(resourceName, "project_id"), - resource.TestCheckResourceAttrSet(resourceName, "username"), resource.TestCheckResourceAttrSet(resourceName, "invitation_id"), - resource.TestCheckResourceAttrSet(resourceName, "roles.#"), resource.TestCheckResourceAttr(resourceName, "username", name), resource.TestCheckResourceAttr(resourceName, "roles.#", "2"), + resource.TestCheckTypeSetElemAttr(resourceName, "roles.*", updateRoles[0]), + resource.TestCheckTypeSetElemAttr(resourceName, "roles.*", updateRoles[0]), ), }, }, @@ -75,22 +68,21 @@ func TestAccProjectRSProjectInvitation_importBasic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acc.PreCheckBasic(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: testAccCheckMongoDBAtlasProjectInvitationDestroy, + CheckDestroy: checkDestroy, Steps: []resource.TestStep{ { - Config: testAccMongoDBAtlasProjectInvitationConfig(orgID, projectName, name, initialRole), + Config: configBasic(orgID, projectName, name, initialRole), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "project_id"), - resource.TestCheckResourceAttrSet(resourceName, "username"), - resource.TestCheckResourceAttrSet(resourceName, "roles.#"), resource.TestCheckResourceAttrSet(resourceName, "invitation_id"), resource.TestCheckResourceAttr(resourceName, "username", name), resource.TestCheckResourceAttr(resourceName, "roles.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "roles.*", initialRole[0]), ), }, { ResourceName: resourceName, - ImportStateIdFunc: testAccCheckMongoDBAtlasProjectInvitationStateIDFunc(resourceName), + ImportStateIdFunc: importStateIDFunc(resourceName), ImportState: true, ImportStateVerify: true, }, @@ -98,8 +90,7 @@ func TestAccProjectRSProjectInvitation_importBasic(t *testing.T) { }) } -func testAccCheckMongoDBAtlasProjectInvitationExists(t *testing.T, resourceName string, invitation *matlas.Invitation) resource.TestCheckFunc { - t.Helper() +func checkExists(resourceName string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[resourceName] if !ok { @@ -112,44 +103,15 @@ func testAccCheckMongoDBAtlasProjectInvitationExists(t *testing.T, resourceName if projectID == "" && username == "" && invitationID == "" { return fmt.Errorf("no ID is set") } - t.Logf("projectID: %s", projectID) - t.Logf("username: %s", username) - t.Logf("invitationID: %s", invitationID) - invitationResp, _, err := acc.Conn().Projects.Invitation(context.Background(), projectID, invitationID) + _, _, err := acc.ConnV2().ProjectsApi.GetProjectInvitation(context.Background(), projectID, invitationID).Execute() if err == nil { - *invitation = *invitationResp return nil } - return fmt.Errorf("invitation(%s) does not exist", invitationID) + return fmt.Errorf("invitation (%s) does not exist", invitationID) } } -func testAccCheckMongoDBAtlasProjectInvitationUsernameAttribute(invitation *matlas.Invitation, username string) resource.TestCheckFunc { - return func(s *terraform.State) error { - if invitation.Username != username { - return fmt.Errorf("bad name: %s", invitation.Username) - } - return nil - } -} - -func testAccCheckMongoDBAtlasProjectInvitationRoleAttribute(invitation *matlas.Invitation, roles []string) resource.TestCheckFunc { - return func(s *terraform.State) error { - if len(roles) > 0 { - for _, role := range roles { - for _, currentRole := range invitation.Roles { - if currentRole == role { - return nil - } - } - } - } - - return fmt.Errorf("bad role: %s", invitation.Roles) - } -} - -func testAccCheckMongoDBAtlasProjectInvitationDestroy(s *terraform.State) error { +func checkDestroy(s *terraform.State) error { for _, rs := range s.RootModule().Resources { if rs.Type != "mongodbatlas_invitations" { continue @@ -158,8 +120,7 @@ func testAccCheckMongoDBAtlasProjectInvitationDestroy(s *terraform.State) error projectID := ids["project_id"] invitationID := ids["invitation_id"] - // Try to find the invitation - _, _, err := acc.Conn().Projects.Invitation(context.Background(), projectID, invitationID) + _, _, err := acc.ConnV2().ProjectsApi.GetProjectInvitation(context.Background(), projectID, invitationID).Execute() if err == nil { return fmt.Errorf("invitation (%s) still exists", invitationID) } @@ -167,7 +128,7 @@ func testAccCheckMongoDBAtlasProjectInvitationDestroy(s *terraform.State) error return nil } -func testAccCheckMongoDBAtlasProjectInvitationStateIDFunc(resourceName string) resource.ImportStateIdFunc { +func importStateIDFunc(resourceName string) resource.ImportStateIdFunc { return func(s *terraform.State) (string, error) { rs, ok := s.RootModule().Resources[resourceName] if !ok { @@ -177,7 +138,7 @@ func testAccCheckMongoDBAtlasProjectInvitationStateIDFunc(resourceName string) r } } -func testAccMongoDBAtlasProjectInvitationConfig(orgID, projectName, username string, roles []string) string { +func configBasic(orgID, projectName, username string, roles []string) string { return fmt.Sprintf(` resource "mongodbatlas_project" "test" { name = %[2]q