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
fix: use sender name with from email in ses provider #2226
fix: use sender name with from email in ses provider #2226
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Asking for an improvement in the test as the ice in the cake.
region: 'test-1', | ||
senderName: 'Test', | ||
accessKeyId: 'TEST', | ||
from: 'test@test.com', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the line 32 of this file when testing if the SES client has been called, could we also double check with what payload is being called? Right now we only check the spy is being called.
This would help to have more confidence that we are passing the sender name and the rest of values properly to the client. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @p-fernandez!!
Apparently who we called to actually send the message is a nodemailer transporter created on top of the SES client, I was in doubt about how this test could be done and I decided to add a false object as follows: expect(spySesSend).toHaveBeenCalledWith({});
for it to return what the nodemailer sends to the send
method of the SES client, I was surprised and found it strange when I came across the following return
What is strange about this object is its Source
property, this should contain the sender name like
Source: 'Sender Name'
, however, it is getting the data from from
.
I thought it was a bit bad to create the test this way, a suggestion I can give is that inside the ses.provider.ts
file the ses transporter becomes a property in the SESMailProvider class, after that we can check if its sendMail
method is called with the correct parameters
Example:
constructor(private readonly config: SESConfig) {
const ses = new SESClient({
region: this.config.region,
credentials: {
accessKeyId: this.config.accessKeyId,
secretAccessKey: this.config.secretAccessKey,
},
});
this.transporter = nodemailer.createTransport({
SES: { ses: this.ses, aws: { SendRawEmailCommand } },
});
}
const spySendMail = jest.spyOn(provider.transporter, 'sendMail');
expect(spySendMail).toHaveBeenCalledWith({
to,
html,
text,
subject,
attachments,
from: {
address: from,
name: this.config.senderName,
},
})
Thank you for your contribution @ArturHamannRonconi ! |
What change does this PR introduce?
Adds the sendername to the aws ses provider actually shown, which was previously ignored.
Why was this change needed?
Closes #2225