Skip to content

Commit

Permalink
refactor: verbosify RUM cases
Browse files Browse the repository at this point in the history
  • Loading branch information
emlanctot committed Nov 15, 2022
1 parent 00de592 commit cd96df5
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 12 deletions.
35 changes: 26 additions & 9 deletions tfe/resource_tfe_workspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -688,15 +688,33 @@ func resourceTFEWorkspaceDelete(d *schema.ResourceData, meta interface{}) error

forceDelete := d.Get("force_delete").(bool)

if ws.Permissions.CanForceDelete == nil && !forceDelete {
return fmt.Errorf(
"Error deleting workspace %s: This workspace must be force deleted by setting force_delete=true", id)
}

if forceDelete {
err = tfeClient.Workspaces.DeleteByID(ctx, id)
// presence of Permissions.CanForceDelete will determine if current version of TFE supports safe deletes
if ws.Permissions.CanForceDelete == nil {
if forceDelete {
err = tfeClient.Workspaces.DeleteByID(ctx, id)
} else {
return fmt.Errorf(
"Error deleting workspace %s: This workspace must be force deleted by setting force_delete=true", id)
}
} else if *ws.Permissions.CanForceDelete {
if forceDelete {
err = tfeClient.Workspaces.DeleteByID(ctx, id)
} else {
err = tfeClient.Workspaces.SafeDeleteByID(ctx, id)
if err != nil {
if strings.Contains(err.Error(), "conflict") {
return fmt.Errorf(
"Error deleting workspace %s: %w\nTo delete this workspace without destroying the managed resources, add force_delete=true to the resource config", id, err)
}
}
}
} else {
err = tfeClient.Workspaces.SafeDeleteByID(ctx, id)
if forceDelete {
return fmt.Errorf(
"Error deleting workspace %s: missing required permissions to set force_delete=true", id)
} else {
err = tfeClient.Workspaces.SafeDeleteByID(ctx, id)
}
}

if err != nil {
Expand All @@ -706,7 +724,6 @@ func resourceTFEWorkspaceDelete(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf(
"Error deleting workspace %s: %w", id, err)
}

return nil
}

Expand Down
5 changes: 2 additions & 3 deletions tfe/resource_tfe_workspace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1907,7 +1907,7 @@ func TestTFEWorkspace_delete_withoutCanForceDeletePermission(t *testing.T) {
// workspace resource delete function directly, rather than use the usual resource.

rInt := rand.New(rand.NewSource(time.Now().UnixNano())).Int()
orgName := fmt.Sprintf("test-orgnaization-%d", rInt)
orgName := fmt.Sprintf("test-organization-%d", rInt)

client := testTfeClient(t, testClientOptions{defaultOrganization: orgName})
workspace, err := client.Workspaces.Create(ctx, orgName, tfe.WorkspaceCreateOptions{
Expand All @@ -1926,9 +1926,8 @@ func TestTFEWorkspace_delete_withoutCanForceDeletePermission(t *testing.T) {
}

err = resourceTFEWorkspaceDelete(rd, client)

if err == nil {
t.Fatalf("Expected an error deleting workspace with CanForceDelete=nil and force_delete=true")
t.Fatalf("Expected an error deleting workspace with CanForceDelete=nil and force_delete=false")
}
expectedErrSubstring := "workspace must be force deleted by setting force_delete=true"
if !strings.Contains(err.Error(), expectedErrSubstring) {
Expand Down

0 comments on commit cd96df5

Please sign in to comment.