From 6f62a016d4589688c4788229f9a8e1abbcf6251e Mon Sep 17 00:00:00 2001 From: "makabe.t" Date: Tue, 26 Dec 2023 07:24:10 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20663:=20develop=E4=B8=8D=E5=85=B7?= =?UTF-8?q?=E5=90=88=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task3404: develop不具合対応](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3404) - ライセンス割り当て通知メールのTOにAdminが入るように修正しました。 - 不要なメソッド`createMailContentFromEmailConfirm`を削除しました。 ## レビューポイント - 共有 ## UIの変更 - なし ## 動作確認状況 - ローカルで確認 --- dictation_server/src/common/test/overrides.ts | 12 ---- .../accounts/accounts.service.spec.ts | 41 +----------- .../accounts/test/accounts.service.mock.ts | 20 +----- .../features/users/test/users.service.mock.ts | 16 +---- .../src/features/users/users.service.ts | 5 +- .../src/gateways/sendgrid/sendgrid.service.ts | 64 +------------------ 6 files changed, 9 insertions(+), 149 deletions(-) diff --git a/dictation_server/src/common/test/overrides.ts b/dictation_server/src/common/test/overrides.ts index 0597bdd..0ac76f3 100644 --- a/dictation_server/src/common/test/overrides.ts +++ b/dictation_server/src/common/test/overrides.ts @@ -80,12 +80,6 @@ export const overrideAdB2cService = ( export const overrideSendgridService = ( service: TService, overrides: { - createMailContentFromEmailConfirm?: ( - context: Context, - accountId: number, - userId: number, - email: string, - ) => Promise<{ subject: string; text: string; html: string }>; createMailContentFromEmailConfirmForNormalUser?: ( accountId: number, userId: number, @@ -119,12 +113,6 @@ export const overrideSendgridService = ( writable: true, }); } - if (overrides.createMailContentFromEmailConfirm) { - Object.defineProperty(obj, obj.createMailContentFromEmailConfirm.name, { - value: overrides.createMailContentFromEmailConfirm, - writable: true, - }); - } if (overrides.createMailContentFromEmailConfirmForNormalUser) { Object.defineProperty( diff --git a/dictation_server/src/features/accounts/accounts.service.spec.ts b/dictation_server/src/features/accounts/accounts.service.spec.ts index 7fb4437..d2aa82b 100644 --- a/dictation_server/src/features/accounts/accounts.service.spec.ts +++ b/dictation_server/src/features/accounts/accounts.service.spec.ts @@ -121,14 +121,7 @@ describe('createAccount', () => { }, }); - overrideSendgridService(service, { - sendMail: async () => { - return; - }, - createMailContentFromEmailConfirm: async () => { - return { html: '', text: '', subject: '' }; - }, - }); + overrideSendgridService(service, {}); overrideBlobstorageService(service, { createContainer: async () => { return; @@ -183,14 +176,7 @@ describe('createAccount', () => { }, }); - overrideSendgridService(service, { - sendMail: async () => { - return; - }, - createMailContentFromEmailConfirm: async () => { - return { html: '', text: '', subject: '' }; - }, - }); + overrideSendgridService(service, {}); const companyName = 'test_company_name'; const country = 'US'; @@ -254,14 +240,7 @@ describe('createAccount', () => { }, }); - overrideSendgridService(service, { - sendMail: async () => { - return; - }, - createMailContentFromEmailConfirm: async () => { - return { html: '', text: '', subject: '' }; - }, - }); + overrideSendgridService(service, {}); const companyName = 'test_company_name'; const country = 'US'; @@ -632,13 +611,6 @@ describe('createAccount', () => { sendMail: async () => { throw new Error(); }, - createMailContentFromEmailConfirm: async () => { - return { - html: 'dummy_html', - subject: 'dummy_subject', - text: 'dummy_text', - }; - }, }); overrideBlobstorageService(service, { createContainer: async () => { @@ -721,13 +693,6 @@ describe('createAccount', () => { sendMail: async () => { throw new Error(); }, - createMailContentFromEmailConfirm: async () => { - return { - html: 'dummy_html', - subject: 'dummy_subject', - text: 'dummy_text', - }; - }, }); overrideBlobstorageService(service, { createContainer: async () => { diff --git a/dictation_server/src/features/accounts/test/accounts.service.mock.ts b/dictation_server/src/features/accounts/test/accounts.service.mock.ts index 8c5c68d..1e1c3b4 100644 --- a/dictation_server/src/features/accounts/test/accounts.service.mock.ts +++ b/dictation_server/src/features/accounts/test/accounts.service.mock.ts @@ -44,11 +44,6 @@ export type AdB2cMockValue = { getUsers: AdB2cUser[] | Error; }; export type SendGridMockValue = { - createMailContentFromEmailConfirm: { - subject: string; - text: string; - html: string; - }; createMailContentFromEmailConfirmForNormalUser: { subject: string; text: string; @@ -242,20 +237,8 @@ export const makeConfigMock = (value: ConfigMockValue) => { }; }; export const makeSendGridServiceMock = (value: SendGridMockValue) => { - const { - createMailContentFromEmailConfirm, - createMailContentFromEmailConfirmForNormalUser, - sendMail, - } = value; + const { createMailContentFromEmailConfirmForNormalUser, sendMail } = value; return { - createMailContentFromEmailConfirm: - createMailContentFromEmailConfirm instanceof Error - ? jest - .fn, []>() - .mockRejectedValue(createMailContentFromEmailConfirm) - : jest - .fn, []>() - .mockResolvedValue(createMailContentFromEmailConfirm), createMailContentFromEmailConfirmForNormalUser: createMailContentFromEmailConfirmForNormalUser instanceof Error ? jest @@ -475,7 +458,6 @@ export const makeDefaultAdB2cMockValue = (): AdB2cMockValue => { export const makeDefaultSendGridlValue = (): SendGridMockValue => { return { sendMail: undefined, - createMailContentFromEmailConfirm: { subject: '', text: '', html: '' }, createMailContentFromEmailConfirmForNormalUser: { subject: 'Verify your new account', text: `The verification URL.`, diff --git a/dictation_server/src/features/users/test/users.service.mock.ts b/dictation_server/src/features/users/test/users.service.mock.ts index d4ffaf8..6ca0723 100644 --- a/dictation_server/src/features/users/test/users.service.mock.ts +++ b/dictation_server/src/features/users/test/users.service.mock.ts @@ -48,11 +48,6 @@ export type AdB2cMockValue = { }; export type SendGridMockValue = { - createMailContentFromEmailConfirm: { - subject: string; - text: string; - html: string; - }; createMailContentFromEmailConfirmForNormalUser: | { subject: string; text: string; html: string } | Error; @@ -135,16 +130,8 @@ export const makeSortCriteriaRepositoryMock = ( }; export const makeSendGridServiceMock = (value: SendGridMockValue) => { - const { createMailContentFromEmailConfirm, sendMail } = value; + const { sendMail } = value; return { - createMailContentFromEmailConfirm: - createMailContentFromEmailConfirm instanceof Error - ? jest - .fn, []>() - .mockRejectedValue(createMailContentFromEmailConfirm) - : jest - .fn, []>() - .mockResolvedValue(createMailContentFromEmailConfirm), sendMail: sendMail instanceof Error ? jest.fn, []>().mockRejectedValue(sendMail) @@ -291,7 +278,6 @@ export const makeConfigMock = (value: ConfigMockValue) => { export const makeDefaultSendGridlValue = (): SendGridMockValue => { return { sendMail: undefined, - createMailContentFromEmailConfirm: { subject: '', text: '', html: '' }, createMailContentFromEmailConfirmForNormalUser: { subject: 'test', text: 'test', diff --git a/dictation_server/src/features/users/users.service.ts b/dictation_server/src/features/users/users.service.ts index c2e9912..84e54fc 100644 --- a/dictation_server/src/features/users/users.service.ts +++ b/dictation_server/src/features/users/users.service.ts @@ -1105,14 +1105,11 @@ export class UsersService { throw new Error(`emailAddress is null. externalId=${externalId}`); } - // 管理者に割り当てた場合にはTOに管理者のメールアドレスを設定するので、CCには管理者のメールアドレスを設定しない - const ccAdminEmails = adminEmails.filter((x) => x !== emailAddress); - await this.sendgridService.sendMailWithU108( context, displayName, emailAddress, - ccAdminEmails, + adminEmails, companyName, dealerName, ); diff --git a/dictation_server/src/gateways/sendgrid/sendgrid.service.ts b/dictation_server/src/gateways/sendgrid/sendgrid.service.ts index 631ea70..ab0ca1f 100644 --- a/dictation_server/src/gateways/sendgrid/sendgrid.service.ts +++ b/dictation_server/src/gateways/sendgrid/sendgrid.service.ts @@ -205,66 +205,6 @@ export class SendGridService { } } - /** - * Email認証用のメールコンテンツを作成する - * @param accountId 認証対象のユーザーが所属するアカウントのID - * @param userId 認証対象のユーザーのID - * @param email 認証対象のユーザーのメールアドレス - * @returns メールのサブジェクトとコンテンツ - */ - async createMailContentFromEmailConfirm( - context: Context, - accountId: number, - userId: number, - email: string, - ): Promise<{ subject: string; text: string; html: string }> { - this.logger.log( - `[IN] [${context.getTrackingId()}] ${ - this.createMailContentFromEmailConfirm.name - } | params: { ` + - `accountId: ${accountId},` + - `userId: ${userId} };`, - ); - try { - const privateKey = getPrivateKey(this.configService); - const token = sign<{ accountId: number; userId: number; email: string }>( - { - accountId, - userId, - email, - }, - this.emailConfirmLifetime, - privateKey, - ); - const path = 'mail-confirm/'; - - const html = this.templateEmailVerifyHtml - .replace('VERIFY_LINK', `${this.appDomain}${path}?verify=${token}`) - .replace( - 'VERIFY_LINK_TEXT', - `${this.appDomain}${path}?verify=${token}`, - ); - const text = this.templateEmailVerifyText - .replace('VERIFY_LINK', `${this.appDomain}${path}?verify=${token}`) - .replace( - 'VERIFY_LINK_TEXT', - `${this.appDomain}${path}?verify=${token}`, - ); - - return { - subject: 'Verify your new account', - text: text, - html: html, - }; - } finally { - this.logger.log( - `[OUT] [${context.getTrackingId()}] ${ - this.createMailContentFromEmailConfirm.name - }`, - ); - } - } - /** * Email認証用のメールコンテンツを作成する(一般ユーザ向け) * @param accountId 認証対象のユーザーが所属するアカウントのID @@ -655,11 +595,13 @@ export class SendGridService { .replaceAll(USER_EMAIL, userMail) .replaceAll(TOP_URL, this.appDomain); + const ccAddress = customerAdminMails.includes(userMail) ? [] : [userMail]; + // メールを送信する this.sendMail( context, - [userMail], customerAdminMails, + ccAddress, this.mailFrom, subject, text,