Merge branch 'develop'
This commit is contained in:
commit
a7b18d8151
@ -49,7 +49,7 @@ export class Account {
|
|||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "datetime" })
|
||||||
deleted_at: Date | null;
|
deleted_at: Date | null;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
created_by: string | null;
|
created_by: string | null;
|
||||||
|
|
||||||
@CreateDateColumn({
|
@CreateDateColumn({
|
||||||
@ -58,7 +58,7 @@ export class Account {
|
|||||||
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
|
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar"})
|
||||||
updated_by: string | null;
|
updated_by: string | null;
|
||||||
|
|
||||||
@UpdateDateColumn({
|
@UpdateDateColumn({
|
||||||
|
|||||||
@ -40,7 +40,7 @@ export class License {
|
|||||||
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
|
@Column({ nullable: true, type: "bigint", transformer: bigintTransformer })
|
||||||
delete_order_id: number | null;
|
delete_order_id: number | null;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
created_by: string | null;
|
created_by: string | null;
|
||||||
|
|
||||||
@CreateDateColumn({
|
@CreateDateColumn({
|
||||||
@ -49,7 +49,7 @@ export class License {
|
|||||||
})
|
})
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
updated_by: string | null;
|
updated_by: string | null;
|
||||||
|
|
||||||
@UpdateDateColumn({
|
@UpdateDateColumn({
|
||||||
@ -89,7 +89,7 @@ export class LicenseAllocationHistory {
|
|||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "datetime" })
|
||||||
deleted_at: Date | null;
|
deleted_at: Date | null;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
created_by: string | null;
|
created_by: string | null;
|
||||||
|
|
||||||
@CreateDateColumn({
|
@CreateDateColumn({
|
||||||
@ -98,7 +98,7 @@ export class LicenseAllocationHistory {
|
|||||||
})
|
})
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
updated_by: string | null;
|
updated_by: string | null;
|
||||||
|
|
||||||
@UpdateDateColumn({
|
@UpdateDateColumn({
|
||||||
|
|||||||
@ -31,6 +31,9 @@ export class User {
|
|||||||
@Column({ nullable: true, type: "varchar" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
accepted_eula_version: string | null;
|
accepted_eula_version: string | null;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "varchar" })
|
||||||
|
accepted_privacy_notice_version: string | null;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "varchar" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
accepted_dpa_version: string | null;
|
accepted_dpa_version: string | null;
|
||||||
|
|
||||||
@ -55,7 +58,7 @@ export class User {
|
|||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "datetime" })
|
||||||
deleted_at: Date | null;
|
deleted_at: Date | null;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
created_by: string | null;
|
created_by: string | null;
|
||||||
|
|
||||||
@CreateDateColumn({
|
@CreateDateColumn({
|
||||||
@ -64,7 +67,7 @@ export class User {
|
|||||||
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
|
}) // defaultはSQLite用設定値.本番用は別途migrationで設定
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "varchar" })
|
||||||
updated_by: string | null;
|
updated_by: string | null;
|
||||||
|
|
||||||
@UpdateDateColumn({
|
@UpdateDateColumn({
|
||||||
|
|||||||
@ -167,9 +167,17 @@ async function getAlertMailTargetAccount(
|
|||||||
|
|
||||||
// 第五のアカウントを取得
|
// 第五のアカウントを取得
|
||||||
const accountRepository = datasource.getRepository(Account);
|
const accountRepository = datasource.getRepository(Account);
|
||||||
|
// 管理者ユーザーが規約に同意しているアカウントのみを取得
|
||||||
|
// 第五階層が同意する規約はeulaとprivacy_noticeのみであるため、それらがnullでないことを条件に追加
|
||||||
|
// 管理者が規約同意していない = 一度もログインしていないアカウントであるため、そのアカウントにはアラートメールを送信しない
|
||||||
|
// プロダクト バックログ項目 4073: [保守]システムに一度もログインしていないユーザーにはライセンスアラートメールを送信しないようにしたい の対応
|
||||||
const accounts = await accountRepository.find({
|
const accounts = await accountRepository.find({
|
||||||
where: {
|
where: {
|
||||||
tier: TIERS.TIER5,
|
tier: TIERS.TIER5,
|
||||||
|
primaryAdminUser: {
|
||||||
|
accepted_eula_version: Not(IsNull()),
|
||||||
|
accepted_privacy_notice_version: Not(IsNull()),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
relations: {
|
relations: {
|
||||||
primaryAdminUser: true,
|
primaryAdminUser: true,
|
||||||
|
|||||||
@ -96,7 +96,7 @@ export const makeTestAccount = async (
|
|||||||
locked: d?.locked ?? false,
|
locked: d?.locked ?? false,
|
||||||
company_name: d?.company_name ?? "test inc.",
|
company_name: d?.company_name ?? "test inc.",
|
||||||
verified: d?.verified ?? true,
|
verified: d?.verified ?? true,
|
||||||
deleted_at: d?.deleted_at ?? "",
|
deleted_at: d?.deleted_at ?? null,
|
||||||
created_by: d?.created_by ?? "test_runner",
|
created_by: d?.created_by ?? "test_runner",
|
||||||
created_at: d?.created_at ?? new Date(),
|
created_at: d?.created_at ?? new Date(),
|
||||||
updated_by: d?.updated_by ?? "updater",
|
updated_by: d?.updated_by ?? "updater",
|
||||||
@ -112,8 +112,16 @@ export const makeTestAccount = async (
|
|||||||
account_id: accountId,
|
account_id: accountId,
|
||||||
role: d?.role ?? "admin none",
|
role: d?.role ?? "admin none",
|
||||||
author_id: d?.author_id ?? undefined,
|
author_id: d?.author_id ?? undefined,
|
||||||
accepted_eula_version: d?.accepted_eula_version ?? "1.0",
|
accepted_eula_version:
|
||||||
accepted_dpa_version: d?.accepted_dpa_version ?? "1.0",
|
d?.accepted_eula_version !== undefined
|
||||||
|
? d.accepted_eula_version
|
||||||
|
: "1.0",
|
||||||
|
accepted_privacy_notice_version:
|
||||||
|
d?.accepted_privacy_notice_version !== undefined
|
||||||
|
? d.accepted_privacy_notice_version
|
||||||
|
: "1.0",
|
||||||
|
accepted_dpa_version:
|
||||||
|
d?.accepted_dpa_version !== undefined ? d.accepted_dpa_version : "1.0",
|
||||||
email_verified: d?.email_verified ?? true,
|
email_verified: d?.email_verified ?? true,
|
||||||
auto_renew: d?.auto_renew ?? true,
|
auto_renew: d?.auto_renew ?? true,
|
||||||
notification: d?.notification ?? true,
|
notification: d?.notification ?? true,
|
||||||
|
|||||||
@ -54,7 +54,7 @@ describe("licenseAlert", () => {
|
|||||||
const { account, admin } = await makeTestAccount(
|
const { account, admin } = await makeTestAccount(
|
||||||
source,
|
source,
|
||||||
{ tier: 5 },
|
{ tier: 5 },
|
||||||
{ external_id: "external_id1" }
|
{ external_id: "external_id1", accepted_dpa_version: null }
|
||||||
);
|
);
|
||||||
await createLicense(
|
await createLicense(
|
||||||
source,
|
source,
|
||||||
@ -97,7 +97,11 @@ describe("licenseAlert", () => {
|
|||||||
const { account, admin } = await makeTestAccount(
|
const { account, admin } = await makeTestAccount(
|
||||||
source,
|
source,
|
||||||
{ tier: 5 },
|
{ tier: 5 },
|
||||||
{ external_id: "external_id2", auto_renew: false }
|
{
|
||||||
|
external_id: "external_id2",
|
||||||
|
auto_renew: false,
|
||||||
|
accepted_dpa_version: null,
|
||||||
|
}
|
||||||
);
|
);
|
||||||
await createLicense(
|
await createLicense(
|
||||||
source,
|
source,
|
||||||
@ -141,7 +145,7 @@ describe("licenseAlert", () => {
|
|||||||
const { account, admin } = await makeTestAccount(
|
const { account, admin } = await makeTestAccount(
|
||||||
source,
|
source,
|
||||||
{ tier: 5 },
|
{ tier: 5 },
|
||||||
{ external_id: "external_id3" }
|
{ external_id: "external_id3", accepted_dpa_version: null }
|
||||||
);
|
);
|
||||||
await createLicense(
|
await createLicense(
|
||||||
source,
|
source,
|
||||||
@ -196,7 +200,11 @@ describe("licenseAlert", () => {
|
|||||||
const { account, admin } = await makeTestAccount(
|
const { account, admin } = await makeTestAccount(
|
||||||
source,
|
source,
|
||||||
{ tier: 5 },
|
{ tier: 5 },
|
||||||
{ external_id: "external_id4", auto_renew: true }
|
{
|
||||||
|
external_id: "external_id4",
|
||||||
|
auto_renew: true,
|
||||||
|
accepted_dpa_version: null,
|
||||||
|
}
|
||||||
);
|
);
|
||||||
await createLicense(
|
await createLicense(
|
||||||
source,
|
source,
|
||||||
@ -224,6 +232,50 @@ describe("licenseAlert", () => {
|
|||||||
const keys = await getAsync(`*`);
|
const keys = await getAsync(`*`);
|
||||||
expect(keys).toHaveLength(0);
|
expect(keys).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("規約同意していない管理者ユーザーに対して、ライセンス失効警告メール・在庫不足メールが送信されないこと", async () => {
|
||||||
|
if (!source) fail();
|
||||||
|
const context = new InvocationContext();
|
||||||
|
const sendgridMock = new SendGridServiceMock() as SendGridService;
|
||||||
|
const adb2cMock = new AdB2cServiceMock() as AdB2cService;
|
||||||
|
|
||||||
|
// 呼び出し回数でテスト成否を判定
|
||||||
|
const spySend = jest.spyOn(sendgridMock, "sendMail");
|
||||||
|
|
||||||
|
const currentDate = new DateWithZeroTime();
|
||||||
|
const expiringSoonDate = new DateWithDayEndTime(currentDate.getTime());
|
||||||
|
const { account, admin } = await makeTestAccount(
|
||||||
|
source,
|
||||||
|
{ tier: 5 },
|
||||||
|
{
|
||||||
|
external_id: "external_id5",
|
||||||
|
auto_renew: false,
|
||||||
|
accepted_eula_version: null,
|
||||||
|
accepted_privacy_notice_version: null,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
await createLicense(
|
||||||
|
source,
|
||||||
|
1,
|
||||||
|
expiringSoonDate,
|
||||||
|
account.id,
|
||||||
|
"NORMAL",
|
||||||
|
"Allocated",
|
||||||
|
admin.id,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
await licenseAlertProcessing(
|
||||||
|
context,
|
||||||
|
source,
|
||||||
|
redisClient,
|
||||||
|
sendgridMock,
|
||||||
|
adb2cMock
|
||||||
|
);
|
||||||
|
// メール送信がされていないことを確認
|
||||||
|
expect(spySend.mock.calls).toHaveLength(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// テスト用sendgrid
|
// テスト用sendgrid
|
||||||
@ -305,6 +357,17 @@ export class AdB2cServiceMock {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "external_id5",
|
||||||
|
displayName: "test5",
|
||||||
|
identities: [
|
||||||
|
{
|
||||||
|
signInType: ADB2C_SIGN_IN_TYPE.EMAILADDRESS,
|
||||||
|
issuer: "issuer",
|
||||||
|
issuerAssignedId: "test5@mail.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
return AdB2cMockUsers;
|
return AdB2cMockUsers;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user