Skip to content

Commit

Permalink
Remove default key during project creation (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
fa93hws authored Dec 4, 2019
2 parents bcf4cb3 + 689b593 commit 7004a88
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
31 changes: 31 additions & 0 deletions sentry/resource_sentry_project.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ func resourceSentryProject() *schema.Resource {
Required: true,
Description: "The slug of the team to create the project for",
},
"remove_default_key": {
Type: schema.TypeBool,
Optional: true,
Description: "Whether to remove the default key",
Default: false,
},
"name": {
Type: schema.TypeString,
Required: true,
Expand Down Expand Up @@ -114,7 +120,15 @@ func resourceSentryProjectCreate(d *schema.ResourceData, meta interface{}) error
return err
}

if d.Get("remove_default_key").(bool) {
err = removeDefaultKey(client, org, proj.Slug)
if err != nil {
return err
}
}

d.SetId(proj.Slug)

return resourceSentryProjectRead(d, meta)
}

Expand Down Expand Up @@ -216,3 +230,20 @@ func resourceSentryProjectImporter(d *schema.ResourceData, meta interface{}) ([]

return []*schema.ResourceData{d}, nil
}

func removeDefaultKey(client *sentryclient.Client, org, projSlug string) error {
keys, _, err := client.ProjectKeys.List(org, projSlug)
if err != nil {
return err
}
var defaultKeyId string
for _, key := range keys {
if key.Name == "Default" {
defaultKeyId = key.ID
break
}
}

client.ProjectKeys.Delete(org, projSlug, defaultKeyId)
return nil
}
33 changes: 33 additions & 0 deletions sentry/resource_sentry_project_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ func TestAccSentryProject_basic(t *testing.T) {
}),
),
},
{
Config: testAccSentryProjectRemoveKeyConfig,
Check: testAccCheckSentryKeyRemoved("sentry_project.test_project_remove"),
},
},
})
}
Expand Down Expand Up @@ -114,6 +118,21 @@ func testAccCheckSentryProjectExists(n string, proj *sentryclient.Project) resou
}
}

func testAccCheckSentryKeyRemoved(n string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs := s.RootModule().Resources[n]
client := testAccProvider.Meta().(*sentryclient.Client)
keys, _, err := client.ProjectKeys.List(rs.Primary.Attributes["organization"], rs.Primary.ID)
if err != nil {
return err
}
if len(keys) != 0 {
return fmt.Errorf("Default key not removed")
}
return nil
}
}

type testAccSentryProjectExpectedAttributes struct {
Name string
Organization string
Expand Down Expand Up @@ -174,3 +193,17 @@ var testAccSentryProjectConfig = fmt.Sprintf(`
name = "Test project"
}
`, testOrganization, testOrganization)

var testAccSentryProjectRemoveKeyConfig = fmt.Sprintf(`
resource "sentry_team" "test_team" {
organization = "%s"
name = "Test team"
}
resource "sentry_project" "test_project_remove" {
organization = "%s"
team = "${sentry_team.test_team.id}"
name = "Test project"
remove_default_key = true
}
`, testOrganization, testOrganization)

0 comments on commit 7004a88

Please sign in to comment.