Skip to content

Commit 92b9c5e

Browse files
committed
feat(security-email): implementation of security email resource, missing tests
Signed-off-by: Michal Wasilewski <[email protected]>
1 parent 5e07ea6 commit 92b9c5e

File tree

4 files changed

+59
-4
lines changed

4 files changed

+59
-4
lines changed

docs/resources/security_email.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "spacelift_security_email Resource - terraform-provider-spacelift"
4+
subcategory: ""
5+
description: |-
6+
spacelift_security_email represents a security email address that receives notifications about security issues in Spacelift.
7+
---
8+
9+
# spacelift_security_email (Resource)
10+
11+
`spacelift_security_email` represents a security email address that receives notifications about security issues in Spacelift.
12+
13+
## Example Usage
14+
15+
```terraform
16+
resource "spacelift_security_email" "example" {
17+
18+
}
19+
```
20+
21+
<!-- schema generated by tfplugindocs -->
22+
## Schema
23+
24+
### Required
25+
26+
- `email` (String) Email address to which the security notifications are sent
27+
28+
### Read-Only
29+
30+
- `id` (String) The ID of this resource.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
resource "spacelift_security_email" "example" {
2+
3+
}
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package structs
22

33
type SecurityEmail struct {
4-
ID string `json:"id"`
54
Email string `json:"email"`
65
}

spacelift/resource_security_email.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package spacelift
22

33
import (
44
"context"
5+
"time"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -36,7 +37,19 @@ func resourceSecurityEmail() *schema.Resource {
3637
}
3738

3839
func resourceSecurityEmailCreate(ctx context.Context, data *schema.ResourceData, i interface{}) diag.Diagnostics {
39-
return nil
40+
var mutation struct {
41+
SecurityEmail *structs.SecurityEmail `graphql:"accountUpdateSecurityEmail(securityEmail: $email)"`
42+
}
43+
variables := map[string]interface{}{
44+
"email": toString(data.Get("email")),
45+
}
46+
if err := i.(*internal.Client).Mutate(ctx, "AccountUpdateSecurityEmail", &mutation, variables); err != nil {
47+
return diag.Errorf("could not create security email: %v", err)
48+
}
49+
50+
data.SetId(time.Now().String())
51+
52+
return resourceSecurityEmailRead(ctx, data, i)
4053
}
4154

4255
func resourceSecurityEmailRead(ctx context.Context, data *schema.ResourceData, i interface{}) diag.Diagnostics {
@@ -58,9 +71,19 @@ func resourceSecurityEmailRead(ctx context.Context, data *schema.ResourceData, i
5871
}
5972

6073
func resourceSecurityEmailUpdate(ctx context.Context, data *schema.ResourceData, i interface{}) diag.Diagnostics {
61-
return nil
74+
var mutation struct {
75+
SecurityEmail *structs.SecurityEmail `graphql:"accountUpdateSecurityEmail(securityEmail: $email)"`
76+
}
77+
variables := map[string]interface{}{
78+
"email": toString(data.Get("email")),
79+
}
80+
if err := i.(*internal.Client).Mutate(ctx, "AccountUpdateSecurityEmail", &mutation, variables); err != nil {
81+
return diag.Errorf("could not create security email: %v", err)
82+
}
83+
84+
return resourceSecurityEmailRead(ctx, data, i)
6285
}
6386

6487
func resourceSecurityEmailDelete(ctx context.Context, data *schema.ResourceData, i interface{}) diag.Diagnostics {
65-
return nil
88+
return diag.Errorf("deleting security email is not supported")
6689
}

0 commit comments

Comments
 (0)