Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add email sending account #8626

Closed
wants to merge 2 commits into from

Conversation

SantoDE
Copy link
Contributor

@SantoDE SantoDE commented May 14, 2019

Community Note

  • Please vote on this pull request by adding a 👍 reaction to the original pull request comment to help the community and maintainers prioritize this request
  • Please do not leave "+1" comments, they generate extra noise for pull request followers and do not help prioritize the request

Fixes #8434

Release note for CHANGELOG:

Adds an option to set the email_sending_account for the cognito email configuration

Output from acceptance testing:

$ make testacc TESTARGS='-run=TestAccAWSCognitoUserPool_withEmailConfiguration'
=> Checking that code complies with gofmt requirements...
TF_ACC=1 go test ./... -v -parallel 20 -run=TestAccAWSCognitoUserPool_withEmailConfiguration -timeout 120m
?   	github.com/terraform-providers/terraform-provider-aws	[no test files]
=== RUN   TestAccAWSCognitoUserPool_withEmailConfiguration
=== PAUSE TestAccAWSCognitoUserPool_withEmailConfiguration
=== CONT  TestAccAWSCognitoUserPool_withEmailConfiguration
--- FAIL: TestAccAWSCognitoUserPool_withEmailConfiguration (14.04s)
    testing.go:568: Step 0 error: After applying this step, the plan was not empty:

        DIFF:

        UPDATE: aws_cognito_user_pool.pool
          admin_create_user_config.#:                              "1" => "1"
          admin_create_user_config.0.allow_admin_create_user_only: "false" => "false"
          admin_create_user_config.0.invite_message_template.#:    "0" => "0"
          admin_create_user_config.0.unused_account_validity_days: "7" => "7"
          arn:                                                     "arn:aws:cognito-idp:us-west-2:304080159981:userpool/us-west-2_BVFzGb9lf" => "arn:aws:cognito-idp:us-west-2:304080159981:userpool/us-west-2_BVFzGb9lf"
          creation_date:                                           "2019-05-14T09:47:38Z" => "2019-05-14T09:47:38Z"
          device_configuration.#:                                  "0" => "0"
          email_configuration.#:                                   "1" => "0"
          email_configuration.0.email_sending_account:             "COGNITO_DEFAULT" => ""
          email_configuration.0.reply_to_email_address:            "" => ""
          email_configuration.0.source_arn:                        "" => ""
          endpoint:                                                "cognito-idp.us-west-2.amazonaws.com/us-west-2_BVFzGb9lf" => "cognito-idp.us-west-2.amazonaws.com/us-west-2_BVFzGb9lf"
          id:                                                      "us-west-2_BVFzGb9lf" => "us-west-2_BVFzGb9lf"
          lambda_config.#:                                         "0" => "0"
          last_modified_date:                                      "2019-05-14T09:47:38Z" => "2019-05-14T09:47:38Z"
          mfa_configuration:                                       "OFF" => "OFF"
          name:                                                    "terraform-test-pool-4jh1e" => "terraform-test-pool-4jh1e"
          password_policy.#:                                       "1" => "1"
          password_policy.0.minimum_length:                        "8" => "8"
          password_policy.0.require_lowercase:                     "true" => "true"
          password_policy.0.require_numbers:                       "true" => "true"
          password_policy.0.require_symbols:                       "true" => "true"
          password_policy.0.require_uppercase:                     "true" => "true"
          schema.#:                                                "0" => "0"
          sms_configuration.#:                                     "0" => "0"
          user_pool_add_ons.#:                                     "0" => "0"
          verification_message_template.#:                         "1" => "1"
          verification_message_template.0.default_email_option:    "CONFIRM_WITH_CODE" => "CONFIRM_WITH_CODE"
          verification_message_template.0.email_message:           "" => ""
          verification_message_template.0.email_message_by_link:   "" => ""
          verification_message_template.0.email_subject:           "" => ""
          verification_message_template.0.email_subject_by_link:   "" => ""
          verification_message_template.0.sms_message:             "" => ""



        STATE:

        aws_cognito_user_pool.pool:
          ID = us-west-2_BVFzGb9lf
          provider = provider.aws
          admin_create_user_config.# = 1
          admin_create_user_config.0.allow_admin_create_user_only = false
          admin_create_user_config.0.unused_account_validity_days = 7
          arn = arn:aws:cognito-idp:us-west-2:304080159981:userpool/us-west-2_BVFzGb9lf
          creation_date = 2019-05-14T09:47:38Z
          email_configuration.# = 1
          email_configuration.0.email_sending_account = COGNITO_DEFAULT
          email_configuration.0.reply_to_email_address =
          email_configuration.0.source_arn =
          endpoint = cognito-idp.us-west-2.amazonaws.com/us-west-2_BVFzGb9lf
          last_modified_date = 2019-05-14T09:47:38Z
          mfa_configuration = OFF
          name = terraform-test-pool-4jh1e
          password_policy.# = 1
          password_policy.0.minimum_length = 8
          password_policy.0.require_lowercase = true
          password_policy.0.require_numbers = true
          password_policy.0.require_symbols = true
          password_policy.0.require_uppercase = true
          verification_message_template.# = 1
          verification_message_template.0.default_email_option = CONFIRM_WITH_CODE
          verification_message_template.0.email_message =
          verification_message_template.0.email_message_by_link =
          verification_message_template.0.email_subject =
          verification_message_template.0.email_subject_by_link =
          verification_message_template.0.sms_message =
    testing.go:629: Error destroying resource! WARNING: Dangling resources
        may exist. The full state and error is shown below.

        Error: Argument or block definition required: On /var/folders/q3/x4rq343n57x5v8pccndssw3r0000gn/T/tf-test921011959/main.tf line 6: An argument or block definition is required here. To set an argument, use the equals sign "=" to introduce the argument value.

        State: aws_cognito_user_pool.pool:
          ID = us-west-2_BVFzGb9lf
          provider = provider.aws
          admin_create_user_config.# = 1
          admin_create_user_config.0.allow_admin_create_user_only = false
          admin_create_user_config.0.invite_message_template.# = 0
          admin_create_user_config.0.unused_account_validity_days = 7
          arn = arn:aws:cognito-idp:us-west-2:304080159981:userpool/us-west-2_BVFzGb9lf
          creation_date = 2019-05-14T09:47:38Z
          device_configuration.# = 0
          email_configuration.# = 1
          email_configuration.0.email_sending_account = COGNITO_DEFAULT
          email_configuration.0.reply_to_email_address =
          email_configuration.0.source_arn =
          endpoint = cognito-idp.us-west-2.amazonaws.com/us-west-2_BVFzGb9lf
          lambda_config.# = 0
          last_modified_date = 2019-05-14T09:47:38Z
          mfa_configuration = OFF
          name = terraform-test-pool-4jh1e
          password_policy.# = 1
          password_policy.0.minimum_length = 8
          password_policy.0.require_lowercase = true
          password_policy.0.require_numbers = true
          password_policy.0.require_symbols = true
          password_policy.0.require_uppercase = true
          schema.# = 0
          sms_configuration.# = 0
          user_pool_add_ons.# = 0
          verification_message_template.# = 1
          verification_message_template.0.default_email_option = CONFIRM_WITH_CODE
          verification_message_template.0.email_message =
          verification_message_template.0.email_message_by_link =
          verification_message_template.0.email_subject =
          verification_message_template.0.email_subject_by_link =
          verification_message_template.0.sms_message =
FAIL
FAIL	github.com/terraform-providers/terraform-provider-aws/aws	14.088s

Looks like the tests can not clean up. Probably an issue with my account? I also don't know how to add that case to the AcceptanceTests (as sourceArn is also not included yet), but I did a manual test. See screenshot attached.

image

If someone has a guiding to get that into the Acceptance Tests, I'm happy to help :)

@ghost ghost added size/XS Managed by automation to categorize the size of a PR. documentation Introduces or discusses updates to documentation. service/cognito tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure. labels May 14, 2019
@SantoDE SantoDE force-pushed the add_email_sending_account branch from 54e977e to 5d2e8dd Compare May 14, 2019 09:57
Copy link
Contributor

@nywilken nywilken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SantoDE thanks for submitting this. The updates look go so far. I left a few suggestions to help push this through and would like to ask that you update the existing test to account for the new account_sending_attributes. Please see our CONTRIBUTING guide for information on updating acceptance tests.

"email_sending_account": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validateCognitoEmailSendingAccount,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can drop the function for an inline validation func

Suggested change
ValidateFunc: validateCognitoEmailSendingAccount,
ValidateFunc: validation.StringInSlice([]string{
cognitoidentityprovider.EmailSendingAccountTypeCognitoDefault,
cognitoidentityprovider.EmailSendingAccountTypeDeveloper,
},false),

@@ -1762,6 +1762,16 @@ func validateCognitoResourceServerScopeName(v interface{}, k string) (ws []strin
return
}

func validateCognitoEmailSendingAccount(v interface{}, k string) (ws []string, errors []error) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can drop this function for and use the builtin validation.StringInSlice ValidateFunc to check against the provided constants.

aws/resource_aws_cognito_user_pool.go Show resolved Hide resolved
@@ -65,6 +65,7 @@ The following arguments are supported:

* `reply_to_email_address` (Optional) - The REPLY-TO email address.
* `source_arn` (Optional) - The ARN of the email source.
* `email_sending_account` (Optional) - Instruct Cognito to either use Cognito or SES to send out emails
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* `email_sending_account` (Optional) - Instruct Cognito to either use Cognito or SES to send out emails
* `email_sending_account` (Optional) - Instruct Cognito to either use its built-in functional or Amazon SES to send out emails.

@nywilken nywilken self-assigned this May 17, 2019
@nywilken nywilken added the waiting-response Maintainers are waiting on response from community or contributor. label May 17, 2019
@SantoDE
Copy link
Contributor Author

SantoDE commented May 20, 2019

Hey @nywilken ,

thanks for your feedback! the changes are applied. However, the acceptance test is not yet passing. Sadly, it's neither without my modifications so I'm a little lost on how to move forward. Will of course try to figure things out, but a helping hand would be awesome! :)

Log from the test:
https://pastebin.com/FZzRbJtd

@ghost ghost removed the waiting-response Maintainers are waiting on response from community or contributor. label May 20, 2019
@nywilken
Copy link
Contributor

nywilken commented May 23, 2019

@SantoDE thanks for the update. I haven't had a chance to revisit since you made updates, but I will take a look tomorrow, in the am, to see how I can best help with the tests. It looks like some state is not being persisted properly. The tests appear to be failing on master.

Copy link
Contributor

@nywilken nywilken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SantoDE there seems to be an quirk when using COGNITO_DEFAULT for the email_sending_account where the API does not return its value in its response so it never gets persisted to the state. Which is why the existing test results in the "non empty plan error". I need to think about this a little more. A sample of the configuration is below.

resource "aws_cognito_user_pool" "pool" {                                                                                                                                                                                                                                                                                
    name = "terraform-test-pool"                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                      
    email_configuration {                                                                                                                                                                                                                                                                             
      reply_to_email_address = "[email protected]"                                                                                                                                                                                                                                                                 
      email_sending_account = "COGNITO_DEFAULT"                                                                                                                                                                                                                                                                   
    }
}

In the meantime, I went ahead add made a few comments around the testing of the new attribute which should help you push this PR further. Below is the output after running all of the tests.

--- PASS: TestAccAWSCognitoUserPoolDomain_basic (22.54s)
--- PASS: TestAccAWSCognitoUserPool_withVerificationMessageTemplate (27.53s)
--- PASS: TestAccAWSCognitoUserPool_withPasswordPolicy (27.56s)
--- PASS: TestAccAWSCognitoUserPool_withDeviceConfiguration (27.58s)
--- PASS: TestAccAWSCognitoUserPool_withEmailVerificationMessage (27.62s)
--- PASS: TestAccAWSCognitoUserPool_withSmsVerificationMessage (27.80s)
--- PASS: TestAccAWSCognitoUserPoolClient_allFieldsUpdatingOneField (29.15s)
--- PASS: TestAccAWSCognitoUserPoolClient_RefreshTokenValidity (31.00s)
--- PASS: TestAccAWSCognitoUserPool_withSmsConfiguration (31.32s)
--- PASS: TestAccAWSCognitoUserPool_withSchemaAttributes (33.06s)
--- PASS: TestAccAWSCognitoUserPool_withTags (33.77s)
--- PASS: TestAccAWSCognitoUserPool_EmailConfiguration (34.48s)
--- PASS: TestAccAWSCognitoUserPool_basic (18.45s)
--- PASS: TestAccAWSCognitoUserPool_withAdvancedSecurityMode (38.52s)
--- PASS: TestAccAWSCognitoUserPoolClient_importBasic (21.93s)
--- PASS: TestAccAWSCognitoUserPool_withSmsConfigurationUpdated (41.47s)
--- PASS: TestAccAWSCognitoUserPool_withAdminCreateUserConfiguration (26.55s)
--- PASS: TestAccAWSCognitoUserPool_withAliasAttributes (50.54s)
--- PASS: TestAccAWSCognitoUserPool_withLambdaConfig (51.31s)
--- PASS: TestAccAWSCognitoUserPool_update (61.56s)

Maybe this info can help you figure out how to best handle the COGNITO_DEFAULT case.

@@ -838,6 +839,8 @@ resource "aws_cognito_user_pool" "pool" {

email_configuration {
reply_to_email_address = "foo.bar@baz"
source_arn = "arn:aws:ses:eu-west-1:123456789101:identity/[email protected]"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets update testAccAWSCognitoUserPoolConfig_withEmailConfiguration to look like

func testAccAWSCognitoUserPoolConfig_withEmailConfiguration(name, email, arn, account string) string {                                                                                                                                                                                              
    return fmt.Sprintf(`
resource "aws_cognito_user_pool" "pool" {                                                                                                                                                                                                                                                                                
    name = "terraform-test-pool-%[1]s"                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                      
    email_configuration {                                                                                                                                                                                                                                                                             
      reply_to_email_address = %[2]q                                                                                                                                                                                                                                                                  
      source_arn = %[3]q                                                                                                                                                                                                                                                                              
      email_sending_account = %[4]q                                                                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                                                                                                 
  }`, name, email, arn, account)                                                                                                                                                                                                                                                                      
}

@@ -287,6 +287,7 @@ func TestAccAWSCognitoUserPool_withEmailConfiguration(t *testing.T) {
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("aws_cognito_user_pool.pool", "email_configuration.#", "1"),
resource.TestCheckResourceAttr("aws_cognito_user_pool.pool", "email_configuration.0.reply_to_email_address", "foo.bar@baz"),
resource.TestCheckResourceAttr("aws_cognito_user_pool.pool", "email_configuration.0.email_sending_account", "DEVELOPER"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks we need a slight more involved tests to handle this check as the tests require a verified SES email ARN in order to work as expected. Trying replacing the existing test TestAccAWSCognitoUserPool_withEmailConfiguration with the following updated test case.

  func TestAccAWSCognitoUserPool_EmailConfiguration(t *testing.T) {                                                                                                                                                                                                                                   
    name := acctest.RandString(5)                                                                                                                                                                                                                                                                     
    replyTo := fmt.Sprintf("tf-acc-reply-%[email protected]", name)                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                      
    sourceARN, ok := os.LookupEnv("TEST_AWS_SES_VERIFIED_EMAIL_ARN")                                                                                                                                                                                                                                      
    if !ok {                                                                                                                                                                                                                                                                                          
      t.Skip("'TEST_AWS_SES_VERIFIED_EMAIL_ARN' not set, skipping test.")                                                                                                                                                                                                                                 
    }                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                      
    resource.ParallelTest(t, resource.TestCase{                                                                                                                                                                                                                                                       
      PreCheck:     func() { testAccPreCheck(t) },                                                                                                                                                                                                                                                    
      Providers:    testAccProviders,                                                                                                                                                                                                                                                                 
      CheckDestroy: testAccCheckAWSCognitoUserPoolDestroy,                                                                                                                                                                                                                                            
      Steps: []resource.TestStep{                                                                                                                                                                                                                                                                     
        {                                                                                                                                                                                                                                                                                             
          Config: testAccAWSCognitoUserPoolConfig_basic(name),                                                                                                                                                                                                                                        
          Check: resource.ComposeAggregateTestCheckFunc(                                                                                                                                                                                                                                              
            testAccCheckAWSCognitoUserPoolExists("aws_cognito_user_pool.pool"),                                                                                                                                                                                                                       
          ),                                                                                                                                                                                                                                                                                          
        },                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
        {                                                                                                                                                                                                                                                                                             
          Config: testAccAWSCognitoUserPoolConfig_withEmailConfiguration(name, replyTo, sourceARN, "DEVELOPER"),                                                                                                                                                                                      
          Check: resource.ComposeAggregateTestCheckFunc(                                                                                                                                                                                                                                              
            resource.TestCheckResourceAttr("aws_cognito_user_pool.pool", "email_configuration.#", "1"),                                                                                                                                                                                               
            resource.TestCheckResourceAttr("aws_cognito_user_pool.pool", "email_configuration.0.reply_to_email_address", replyTo),                                                                                                                                                                    
            resource.TestCheckResourceAttr("aws_cognito_user_pool.pool", "email_configuration.0.email_sending_account", "DEVELOPER"),                                                                                                                                                                 
          ),                                                                                                                                                                                                                                                                                          
        },                                                                                                                                                                                                                                                                                            
      },                                                                                                                                                                                                                                                                                              
    })                                                                                                                                                                                                                                                                                                
  }                                                                                                                                                                                                                                                                                                   

@nywilken nywilken added the waiting-response Maintainers are waiting on response from community or contributor. label May 24, 2019
@SantoDE
Copy link
Contributor Author

SantoDE commented Jun 3, 2019

Hey @nywilken ,

thanks for the heads up! I was out for a couple days, but will have a look at this again tonight :)

@ghost ghost added size/S Managed by automation to categorize the size of a PR. and removed waiting-response Maintainers are waiting on response from community or contributor. size/XS Managed by automation to categorize the size of a PR. labels Jun 3, 2019
@SantoDE
Copy link
Contributor Author

SantoDE commented Jun 3, 2019

hey @nywilken,

I did some more fiddling around (setting a default for example) but I cant get it to work. Got to admin, I'm a little lost with the whole all of that works together so I guess Im not of a real help anymore :(

@SantoDE
Copy link
Contributor Author

SantoDE commented Jun 5, 2019

hey again @nywilken,

I finally fixed it!

see Acc Tests

=== RUN   TestAccAWSCognitoUserPool_withEmailConfiguration
=== PAUSE TestAccAWSCognitoUserPool_withEmailConfiguration
=== CONT  TestAccAWSCognitoUserPool_withEmailConfiguration
--- PASS: TestAccAWSCognitoUserPool_withEmailConfiguration (43.15s)
PASS

Please tell me whats left to get that baby shipped. :)

@ghost ghost added size/M Managed by automation to categorize the size of a PR. and removed size/S Managed by automation to categorize the size of a PR. labels Jun 5, 2019
@SantoDE SantoDE force-pushed the add_email_sending_account branch from d6bf69c to 10d0215 Compare June 5, 2019 11:23
@nywilken
Copy link
Contributor

nywilken commented Jun 7, 2019

@SantoDE thank you for sticking in there with me. I didn’t have a moment to follow up these past two weeks but I’m glad you were able to get the tests passing. I’ll do another review tomorrow to get this merged and lined up for the next release; I’m excited to see the fix.

Thanks again for the contribution.

@SantoDE SantoDE force-pushed the add_email_sending_account branch from ee2ae52 to 8a81511 Compare June 7, 2019 07:33
* Update validation for reply_to_address to allow for empty strings to
fix issues around drift detection.
* Replace email validation with an inline validation func within the
resource.
* Update email_configuration tests to test both Cognito Email constant
types.

Acceptance tests after change
```
--- PASS: TestAccAWSCognitoUserPool_basic (17.29s)
--- PASS: TestAccAWSCognitoUserPool_importBasic (19.75s)
--- PASS: TestAccAWSCognitoUserPool_withVerificationMessageTemplate
(28.54s)
--- PASS: TestAccAWSCognitoUserPool_withEmailConfiguration (29.14s)
--- PASS: TestAccAWSCognitoUserPool_withAdminCreateUserConfiguration
(29.14s)
--- PASS: TestAccAWSCognitoUserPool_withTags (29.93s)
--- PASS: TestAccAWSCognitoUserPool_withPasswordPolicy (29.96s)
--- PASS: TestAccAWSCognitoUserPool_withDeviceConfiguration (30.86s)
--- PASS: TestAccAWSCognitoUserPool_withEmailVerificationMessage
(30.90s)
--- PASS: TestAccAWSCognitoUserPool_withAliasAttributes (30.98s)
--- PASS: TestAccAWSCognitoUserPool_withSchemaAttributes (32.96s)
--- PASS: TestAccAWSCognitoUserPool_withSmsConfiguration (35.26s)
--- PASS: TestAccAWSCognitoUserPool_withSmsVerificationMessage (35.92s)
--- PASS: TestAccAWSCognitoUserPool_withAdvancedSecurityMode (41.35s)
--- PASS: TestAccAWSCognitoUserPool_withSmsConfigurationUpdated (46.93s)
--- PASS: TestAccAWSCognitoUserPool_withLambdaConfig (53.77s)
--- PASS: TestAccAWSCognitoUserPool_update (58.74s)
```
Copy link
Contributor

@nywilken nywilken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SantoDE thanks for the updates here. I'm going to approve this PR as is and check-in a few changes on top of your PR before merging. I left a brief description around my changes so that you can understand why they were made.

"email_sending_account": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we know the expected default value here, it is preferred that it not be computed and that a default be set

Suggested change
Computed: true,
Default: cognitoidentityprovider.EmailSendingAccountTypeCognitoDefault,

@@ -131,6 +131,7 @@ func resourceAwsCognitoUserPool() *schema.Resource {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Computed: true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting Computed for an attribute means that Terraform can't detect drift for unconfigured attributes. In this case the prefer schema change is to add a DiffSuppressFunc to ignore the case where Terraform thinks our schema default was a change when it's not, given the default API response.

Suggested change
Computed: true,
DiffSuppressFunc: suppressMissingOptionalConfigurationBlock,

@@ -131,6 +131,7 @@ func resourceAwsCognitoUserPool() *schema.Resource {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"reply_to_email_address": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In order to get our testing working I added "" as a valid value in the validation function.

@nywilken
Copy link
Contributor

nywilken commented Jun 7, 2019

This was merged manually. Oddly enough GitHub is not showing the correct status and it somehow has the latest changes I tried pushing to your branch which resulted in in a permission denied error locally 🤷‍♂️

Thanks again for your patience on this PR and for your contribution.

@nywilken nywilken closed this Jun 7, 2019
@nywilken nywilken added this to the v2.15.0 milestone Jun 7, 2019
nywilken added a commit that referenced this pull request Jun 7, 2019
@ghost
Copy link

ghost commented Nov 3, 2019

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you feel this issue should be reopened, we encourage creating a new issue linking back to this one for added context. Thanks!

@ghost ghost locked and limited conversation to collaborators Nov 3, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Introduces or discusses updates to documentation. size/M Managed by automation to categorize the size of a PR. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cognito user pool email sending account
3 participants