Merged PR 663: develop不具合対応

## 概要
[Task3404: develop不具合対応](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3404)

- ライセンス割り当て通知メールのTOにAdminが入るように修正しました。
- 不要なメソッド`createMailContentFromEmailConfirm`を削除しました。

## レビューポイント
- 共有

## UIの変更
- なし

## 動作確認状況
- ローカルで確認
This commit is contained in:
makabe.t 2023-12-26 07:24:10 +00:00
parent f2ef2228c3
commit 6f62a016d4
6 changed files with 9 additions and 149 deletions

View File

@ -80,12 +80,6 @@ export const overrideAdB2cService = <TService>(
export const overrideSendgridService = <TService>( export const overrideSendgridService = <TService>(
service: TService, service: TService,
overrides: { overrides: {
createMailContentFromEmailConfirm?: (
context: Context,
accountId: number,
userId: number,
email: string,
) => Promise<{ subject: string; text: string; html: string }>;
createMailContentFromEmailConfirmForNormalUser?: ( createMailContentFromEmailConfirmForNormalUser?: (
accountId: number, accountId: number,
userId: number, userId: number,
@ -119,12 +113,6 @@ export const overrideSendgridService = <TService>(
writable: true, writable: true,
}); });
} }
if (overrides.createMailContentFromEmailConfirm) {
Object.defineProperty(obj, obj.createMailContentFromEmailConfirm.name, {
value: overrides.createMailContentFromEmailConfirm,
writable: true,
});
}
if (overrides.createMailContentFromEmailConfirmForNormalUser) { if (overrides.createMailContentFromEmailConfirmForNormalUser) {
Object.defineProperty( Object.defineProperty(

View File

@ -121,14 +121,7 @@ describe('createAccount', () => {
}, },
}); });
overrideSendgridService(service, { overrideSendgridService(service, {});
sendMail: async () => {
return;
},
createMailContentFromEmailConfirm: async () => {
return { html: '', text: '', subject: '' };
},
});
overrideBlobstorageService(service, { overrideBlobstorageService(service, {
createContainer: async () => { createContainer: async () => {
return; return;
@ -183,14 +176,7 @@ describe('createAccount', () => {
}, },
}); });
overrideSendgridService(service, { overrideSendgridService(service, {});
sendMail: async () => {
return;
},
createMailContentFromEmailConfirm: async () => {
return { html: '', text: '', subject: '' };
},
});
const companyName = 'test_company_name'; const companyName = 'test_company_name';
const country = 'US'; const country = 'US';
@ -254,14 +240,7 @@ describe('createAccount', () => {
}, },
}); });
overrideSendgridService(service, { overrideSendgridService(service, {});
sendMail: async () => {
return;
},
createMailContentFromEmailConfirm: async () => {
return { html: '', text: '', subject: '' };
},
});
const companyName = 'test_company_name'; const companyName = 'test_company_name';
const country = 'US'; const country = 'US';
@ -632,13 +611,6 @@ describe('createAccount', () => {
sendMail: async () => { sendMail: async () => {
throw new Error(); throw new Error();
}, },
createMailContentFromEmailConfirm: async () => {
return {
html: 'dummy_html',
subject: 'dummy_subject',
text: 'dummy_text',
};
},
}); });
overrideBlobstorageService(service, { overrideBlobstorageService(service, {
createContainer: async () => { createContainer: async () => {
@ -721,13 +693,6 @@ describe('createAccount', () => {
sendMail: async () => { sendMail: async () => {
throw new Error(); throw new Error();
}, },
createMailContentFromEmailConfirm: async () => {
return {
html: 'dummy_html',
subject: 'dummy_subject',
text: 'dummy_text',
};
},
}); });
overrideBlobstorageService(service, { overrideBlobstorageService(service, {
createContainer: async () => { createContainer: async () => {

View File

@ -44,11 +44,6 @@ export type AdB2cMockValue = {
getUsers: AdB2cUser[] | Error; getUsers: AdB2cUser[] | Error;
}; };
export type SendGridMockValue = { export type SendGridMockValue = {
createMailContentFromEmailConfirm: {
subject: string;
text: string;
html: string;
};
createMailContentFromEmailConfirmForNormalUser: { createMailContentFromEmailConfirmForNormalUser: {
subject: string; subject: string;
text: string; text: string;
@ -242,20 +237,8 @@ export const makeConfigMock = (value: ConfigMockValue) => {
}; };
}; };
export const makeSendGridServiceMock = (value: SendGridMockValue) => { export const makeSendGridServiceMock = (value: SendGridMockValue) => {
const { const { createMailContentFromEmailConfirmForNormalUser, sendMail } = value;
createMailContentFromEmailConfirm,
createMailContentFromEmailConfirmForNormalUser,
sendMail,
} = value;
return { return {
createMailContentFromEmailConfirm:
createMailContentFromEmailConfirm instanceof Error
? jest
.fn<Promise<void>, []>()
.mockRejectedValue(createMailContentFromEmailConfirm)
: jest
.fn<Promise<{ subject: string; text: string; html: string }>, []>()
.mockResolvedValue(createMailContentFromEmailConfirm),
createMailContentFromEmailConfirmForNormalUser: createMailContentFromEmailConfirmForNormalUser:
createMailContentFromEmailConfirmForNormalUser instanceof Error createMailContentFromEmailConfirmForNormalUser instanceof Error
? jest ? jest
@ -475,7 +458,6 @@ export const makeDefaultAdB2cMockValue = (): AdB2cMockValue => {
export const makeDefaultSendGridlValue = (): SendGridMockValue => { export const makeDefaultSendGridlValue = (): SendGridMockValue => {
return { return {
sendMail: undefined, sendMail: undefined,
createMailContentFromEmailConfirm: { subject: '', text: '', html: '' },
createMailContentFromEmailConfirmForNormalUser: { createMailContentFromEmailConfirmForNormalUser: {
subject: 'Verify your new account', subject: 'Verify your new account',
text: `The verification URL.`, text: `The verification URL.`,

View File

@ -48,11 +48,6 @@ export type AdB2cMockValue = {
}; };
export type SendGridMockValue = { export type SendGridMockValue = {
createMailContentFromEmailConfirm: {
subject: string;
text: string;
html: string;
};
createMailContentFromEmailConfirmForNormalUser: createMailContentFromEmailConfirmForNormalUser:
| { subject: string; text: string; html: string } | { subject: string; text: string; html: string }
| Error; | Error;
@ -135,16 +130,8 @@ export const makeSortCriteriaRepositoryMock = (
}; };
export const makeSendGridServiceMock = (value: SendGridMockValue) => { export const makeSendGridServiceMock = (value: SendGridMockValue) => {
const { createMailContentFromEmailConfirm, sendMail } = value; const { sendMail } = value;
return { return {
createMailContentFromEmailConfirm:
createMailContentFromEmailConfirm instanceof Error
? jest
.fn<Promise<void>, []>()
.mockRejectedValue(createMailContentFromEmailConfirm)
: jest
.fn<Promise<{ subject: string; text: string; html: string }>, []>()
.mockResolvedValue(createMailContentFromEmailConfirm),
sendMail: sendMail:
sendMail instanceof Error sendMail instanceof Error
? jest.fn<Promise<void>, []>().mockRejectedValue(sendMail) ? jest.fn<Promise<void>, []>().mockRejectedValue(sendMail)
@ -291,7 +278,6 @@ export const makeConfigMock = (value: ConfigMockValue) => {
export const makeDefaultSendGridlValue = (): SendGridMockValue => { export const makeDefaultSendGridlValue = (): SendGridMockValue => {
return { return {
sendMail: undefined, sendMail: undefined,
createMailContentFromEmailConfirm: { subject: '', text: '', html: '' },
createMailContentFromEmailConfirmForNormalUser: { createMailContentFromEmailConfirmForNormalUser: {
subject: 'test', subject: 'test',
text: 'test', text: 'test',

View File

@ -1105,14 +1105,11 @@ export class UsersService {
throw new Error(`emailAddress is null. externalId=${externalId}`); throw new Error(`emailAddress is null. externalId=${externalId}`);
} }
// 管理者に割り当てた場合にはTOに管理者のメールアドレスを設定するので、CCには管理者のメールアドレスを設定しない
const ccAdminEmails = adminEmails.filter((x) => x !== emailAddress);
await this.sendgridService.sendMailWithU108( await this.sendgridService.sendMailWithU108(
context, context,
displayName, displayName,
emailAddress, emailAddress,
ccAdminEmails, adminEmails,
companyName, companyName,
dealerName, dealerName,
); );

View File

@ -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認証用のメールコンテンツを作成する() * Email認証用のメールコンテンツを作成する()
* @param accountId ID * @param accountId ID
@ -655,11 +595,13 @@ export class SendGridService {
.replaceAll(USER_EMAIL, userMail) .replaceAll(USER_EMAIL, userMail)
.replaceAll(TOP_URL, this.appDomain); .replaceAll(TOP_URL, this.appDomain);
const ccAddress = customerAdminMails.includes(userMail) ? [] : [userMail];
// メールを送信する // メールを送信する
this.sendMail( this.sendMail(
context, context,
[userMail],
customerAdminMails, customerAdminMails,
ccAddress,
this.mailFrom, this.mailFrom,
subject, subject,
text, text,