From f11f44d032fb6f46247cc3152aa033a437987725 Mon Sep 17 00:00:00 2001 From: Boris Le Meec Date: Wed, 29 Dec 2021 14:09:20 +0100 Subject: [PATCH 1/3] feat: add support for custom email sender --- events/cognito.go | 21 +++++++++++++++ events/cognito_test.go | 26 +++++++++++++++++++ ...ito-event-userpools-customemailsender.json | 26 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 events/testdata/cognito-event-userpools-customemailsender.json diff --git a/events/cognito.go b/events/cognito.go index c24a3e3e..270ac73a 100644 --- a/events/cognito.go +++ b/events/cognito.go @@ -266,3 +266,24 @@ type CognitoEventUserPoolsCustomMessageResponse struct { EmailMessage string `json:"emailMessage"` EmailSubject string `json:"emailSubject"` } + +// CognitoEventUserPoolsCustomEmailSender is sent by AWS Cognito User Pools before each mail to send. +type CognitoEventUserPoolsCustomEmailSender struct { + CognitoEventUserPoolsHeader + Request CognitoEventUserPoolsCustomMessageRequest `json:"request"` + Response CognitoEventUserPoolsCustomMessageResponse `json:"response"` +} + +// CognitoEventUserPoolsCustomEmailSenderRequest contains the request portion of a CustomEmailSender event +type CognitoEventUserPoolsCustomEmailSenderRequest struct { + UserAttributes map[string]interface{} `json:"userAttributes"` + Code string `json:"code"` + ClientMetadata map[string]string `json:"clientMetadata"` + Type string `json:"type"` +} + +// CognitoEventUserPoolsCustomEmailSenderResponse contains the response portion of a CustomEmailSender event +type CognitoEventUserPoolsCustomEmailSenderResponse struct { + EmailMessage string `json:"emailMessage"` + EmailSubject string `json:"emailSubject"` +} diff --git a/events/cognito_test.go b/events/cognito_test.go index fdb1d437..a0fbab91 100644 --- a/events/cognito_test.go +++ b/events/cognito_test.go @@ -240,3 +240,29 @@ func TestCognitoEventUserPoolsCustomMessageMarshaling(t *testing.T) { func TestCognitoUserPoolsCustomMessageMarshalingMalformedJson(t *testing.T) { test.TestMalformedJson(t, CognitoEventUserPoolsCustomMessage{}) } + +func TestCognitoEventUserPoolsCustomEmailSenderMarshaling(t *testing.T) { + // read json from file + inputJSON, err := ioutil.ReadFile("./testdata/cognito-event-userpools-customemailsender.json") + if err != nil { + t.Errorf("could not open test file. details: %v", err) + } + + // de-serialize into CognitoEvent + var inputEvent CognitoEventUserPoolsCustomEmailSender + if err := json.Unmarshal(inputJSON, &inputEvent); err != nil { + t.Errorf("could not unmarshal event. details: %v", err) + } + + // serialize to json + outputJSON, err := json.Marshal(inputEvent) + if err != nil { + t.Errorf("could not marshal event. details: %v", err) + } + + assert.JSONEq(t, string(inputJSON), string(outputJSON)) +} + +func TestCognitoUserPoolsCustomEmailSenderMarshalingMalformedJson(t *testing.T) { + test.TestMalformedJson(t, CognitoEventUserPoolsCustomEmailSender{}) +} diff --git a/events/testdata/cognito-event-userpools-customemailsender.json b/events/testdata/cognito-event-userpools-customemailsender.json new file mode 100644 index 00000000..1be4d21e --- /dev/null +++ b/events/testdata/cognito-event-userpools-customemailsender.json @@ -0,0 +1,26 @@ +{ + "version": "1", + "triggerSource": "CustomEmailSender_SignUp/CustomEmailSender_ResendCode/CustomEmailSender_ForgotPassword/CustomEmailSender_UpdateUserAttribute/CustomEmailSender_VerifyUserAttribute/CustomEmailSender_AdminCreateUser", + "region": "", + "userPoolId": "", + "userName": "", + "callerContext": { + "awsSdkVersion": "", + "clientId": "" + }, + "request": { + "userAttributes": { + "phone_number_verified": true, + "email_verified": false + }, + "code": "example code", + "usernameParameter": "{username}", + "clientMetadata": { + "exampleMetadataKey": "example metadata value" + } + }, + "response": { + "emailMessage": "", + "emailSubject": "" + } +} From 1bfd3f03ccb75da88195911f0bff91bcd7ca0722 Mon Sep 17 00:00:00 2001 From: Boris Le Meec Date: Wed, 29 Dec 2021 17:55:20 +0100 Subject: [PATCH 2/3] missing refacto --- events/cognito.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events/cognito.go b/events/cognito.go index 270ac73a..a61b03d9 100644 --- a/events/cognito.go +++ b/events/cognito.go @@ -270,8 +270,8 @@ type CognitoEventUserPoolsCustomMessageResponse struct { // CognitoEventUserPoolsCustomEmailSender is sent by AWS Cognito User Pools before each mail to send. type CognitoEventUserPoolsCustomEmailSender struct { CognitoEventUserPoolsHeader - Request CognitoEventUserPoolsCustomMessageRequest `json:"request"` - Response CognitoEventUserPoolsCustomMessageResponse `json:"response"` + Request CognitoEventUserPoolsCustomEmailSenderRequest `json:"request"` + Response CognitoEventUserPoolsCustomEmailSenderResponse `json:"response"` } // CognitoEventUserPoolsCustomEmailSenderRequest contains the request portion of a CustomEmailSender event From 1125b6065decd9f0e2029fe530af8eb5839ced4d Mon Sep 17 00:00:00 2001 From: Boris Le Meec Date: Tue, 4 Jan 2022 21:11:50 +0100 Subject: [PATCH 3/3] fix: fix test --- .../testdata/cognito-event-userpools-customemailsender.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events/testdata/cognito-event-userpools-customemailsender.json b/events/testdata/cognito-event-userpools-customemailsender.json index 1be4d21e..f9087f12 100644 --- a/events/testdata/cognito-event-userpools-customemailsender.json +++ b/events/testdata/cognito-event-userpools-customemailsender.json @@ -14,10 +14,10 @@ "email_verified": false }, "code": "example code", - "usernameParameter": "{username}", "clientMetadata": { "exampleMetadataKey": "example metadata value" - } + }, + "type": "example type" }, "response": { "emailMessage": "",