Skip to content

Commit

Permalink
fix: correct handling of smtp config
Browse files Browse the repository at this point in the history
  • Loading branch information
stebenz committed Aug 14, 2024
1 parent 2794b33 commit 79f3a17
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 36 deletions.
2 changes: 1 addition & 1 deletion acceptance/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ services:
test: ['CMD', '/app/zitadel', 'ready', "--config", "/zitadel.yaml"]
interval: '2s'
timeout: '30s'
retries: 5
retries: 60
depends_on:
db:
condition: 'service_healthy'
Expand Down
16 changes: 4 additions & 12 deletions zitadel/smtp_config/funcs.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func update(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Dia
return diag.FromErr(err)
}

if d.HasChanges(SenderAddressVar, SenderNameVar, tlsVar, hostVar, userVar, replyToAddressVar) {
if d.HasChanges(SenderAddressVar, SenderNameVar, tlsVar, hostVar, userVar, replyToAddressVar, PasswordVar) {
_, err = client.UpdateSMTPConfig(ctx, &admin.UpdateSMTPConfigRequest{
Id: d.Id(),
SenderAddress: d.Get(SenderAddressVar).(string),
Expand All @@ -93,23 +93,14 @@ func update(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Dia
Tls: d.Get(tlsVar).(bool),
User: d.Get(userVar).(string),
ReplyToAddress: d.Get(replyToAddressVar).(string),
Password: d.Get(PasswordVar).(string),
})
if err != nil {
return diag.Errorf("failed to update smtp config: %v", err)
}
}

if d.HasChange(PasswordVar) {
_, err = client.UpdateSMTPConfigPassword(ctx, &admin.UpdateSMTPConfigPasswordRequest{
Id: d.Id(),
Password: d.Get(PasswordVar).(string),
})
if err != nil {
return diag.Errorf("failed to update smtp config password: %v", err)
}
}

if d.HasChange(PasswordVar) && d.Get(SetActiveVar).(bool) {
if d.HasChange(SetActiveVar) && d.Get(SetActiveVar).(bool) {
if _, err := client.ActivateSMTPConfig(ctx, &admin.ActivateSMTPConfigRequest{Id: d.Id()}); err != nil {
return diag.Errorf("failed to activate smtp config: %v", err)
}
Expand Down Expand Up @@ -150,6 +141,7 @@ func read(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagn
userVar: resp.GetSmtpConfig().GetUser(),
PasswordVar: d.Get(PasswordVar).(string),
replyToAddressVar: resp.GetSmtpConfig().GetReplyToAddress(),
SetActiveVar: d.Get(SetActiveVar).(bool),
}
for k, v := range set {
if err := d.Set(k, v); err != nil {
Expand Down
37 changes: 14 additions & 23 deletions zitadel/smtp_config/resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
"github.com/zitadel/zitadel-go/v3/pkg/client/zitadel/admin"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"github.com/zitadel/terraform-provider-zitadel/zitadel/helper"
"github.com/zitadel/terraform-provider-zitadel/zitadel/helper/test_utils"
Expand All @@ -21,29 +19,32 @@ func TestAccSMTPConfig(t *testing.T) {
resourceExample, exampleAttributes := test_utils.ReadExample(t, test_utils.Resources, frame.ResourceType)
senderAddressProperty := test_utils.AttributeValue(t, smtp_config.SenderAddressVar, exampleAttributes).AsString()
resourceExample = strings.Replace(resourceExample, senderAddressProperty, fmt.Sprintf("zitadel@%s", frame.InstanceDomain), 1)

exampleProperty := test_utils.AttributeValue(t, smtp_config.SenderNameVar, exampleAttributes).AsString()
updatedProperty := "updatedProperty"

exampleSecret := test_utils.AttributeValue(t, smtp_config.PasswordVar, exampleAttributes).AsString()
importParts := []resource.ImportStateIdFunc{
test_utils.ImportResourceId(frame.BaseTestFrame),
test_utils.ImportStateAttribute(frame.BaseTestFrame, smtp_config.PasswordVar),
}
updatedSecret := "updatedSecret"

test_utils.RunLifecyleTest(
t,
frame.BaseTestFrame,
nil,
test_utils.ReplaceAll(resourceExample, exampleProperty, exampleSecret),
exampleProperty, "updatedProperty",
smtp_config.PasswordVar, exampleSecret, "updatedSecret",
false,
checkRemoteProperty(*frame),
exampleProperty, updatedProperty,
smtp_config.PasswordVar, exampleSecret, updatedSecret,
true,
checkRemoteProperty(frame),
helper.ZitadelGeneratedIdOnlyRegex,
CheckDestroy(*frame),
test_utils.ChainImportStateIdFuncs(importParts...),
test_utils.CheckIsNotFoundFromPropertyCheck(checkRemoteProperty(frame), ""),
test_utils.ChainImportStateIdFuncs(
test_utils.ImportResourceId(frame.BaseTestFrame),
test_utils.ImportStateAttribute(frame.BaseTestFrame, smtp_config.PasswordVar),
),
)
}

func checkRemoteProperty(frame test_utils.InstanceTestFrame) func(string) resource.TestCheckFunc {
func checkRemoteProperty(frame *test_utils.InstanceTestFrame) func(string) resource.TestCheckFunc {
return func(expect string) resource.TestCheckFunc {
return func(state *terraform.State) error {
resp, err := frame.GetSMTPConfigById(frame, &admin.GetSMTPConfigByIdRequest{Id: frame.State(state).ID})
Expand All @@ -58,13 +59,3 @@ func checkRemoteProperty(frame test_utils.InstanceTestFrame) func(string) resour
}
}
}

func CheckDestroy(frame test_utils.InstanceTestFrame) resource.TestCheckFunc {
return func(state *terraform.State) error {
err := checkRemoteProperty(frame)("something")(state)
if status.Code(err) != codes.NotFound {
return fmt.Errorf("expected not found error but got: %w", err)
}
return nil
}
}

0 comments on commit 79f3a17

Please sign in to comment.