From 3064d03aa9a2ac9ca3acfff30480ea8629faeb14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Tue, 20 Dec 2022 08:04:02 +0100 Subject: [PATCH] fix(auth): saving subscription plan name in session traces --- .../Domain/Role/RoleToSubscriptionMap.spec.ts | 19 +++++++++++++++++++ .../src/Domain/Role/RoleToSubscriptionMap.ts | 4 ++++ .../Role/RoleToSubscriptionMapInterface.ts | 1 + .../CreateCrossServiceToken.spec.ts | 4 ++-- .../CreateCrossServiceToken.ts | 2 +- 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/auth/src/Domain/Role/RoleToSubscriptionMap.spec.ts b/packages/auth/src/Domain/Role/RoleToSubscriptionMap.spec.ts index 8ccfa7890..1fcfd7ea4 100644 --- a/packages/auth/src/Domain/Role/RoleToSubscriptionMap.spec.ts +++ b/packages/auth/src/Domain/Role/RoleToSubscriptionMap.spec.ts @@ -41,4 +41,23 @@ describe('RoleToSubscriptionMap', () => { }, ]) }) + + it('should filter our subscription roles from an array of roles', () => { + const roles = [ + { + name: RoleName.CoreUser, + } as jest.Mocked, + { + name: RoleName.FilesBetaUser, + } as jest.Mocked, + { + name: RoleName.PlusUser, + } as jest.Mocked, + ] + expect(createMap().filterSubscriptionRoles(roles)).toEqual([ + { + name: RoleName.PlusUser, + }, + ]) + }) }) diff --git a/packages/auth/src/Domain/Role/RoleToSubscriptionMap.ts b/packages/auth/src/Domain/Role/RoleToSubscriptionMap.ts index 89221fd6d..5b22fdaad 100644 --- a/packages/auth/src/Domain/Role/RoleToSubscriptionMap.ts +++ b/packages/auth/src/Domain/Role/RoleToSubscriptionMap.ts @@ -17,6 +17,10 @@ export class RoleToSubscriptionMap implements RoleToSubscriptionMapInterface { return roles.filter((role) => this.nonSubscriptionRoles.includes(role.name as RoleName)) } + filterSubscriptionRoles(roles: Role[]): Array { + return roles.filter((role) => !this.nonSubscriptionRoles.includes(role.name as RoleName)) + } + getSubscriptionNameForRoleName(roleName: RoleName): SubscriptionName | undefined { return this.roleNameToSubscriptionNameMap.get(roleName) } diff --git a/packages/auth/src/Domain/Role/RoleToSubscriptionMapInterface.ts b/packages/auth/src/Domain/Role/RoleToSubscriptionMapInterface.ts index 6b5da66a4..56b5623c1 100644 --- a/packages/auth/src/Domain/Role/RoleToSubscriptionMapInterface.ts +++ b/packages/auth/src/Domain/Role/RoleToSubscriptionMapInterface.ts @@ -3,6 +3,7 @@ import { Role } from './Role' export interface RoleToSubscriptionMapInterface { filterNonSubscriptionRoles(roles: Role[]): Array + filterSubscriptionRoles(roles: Role[]): Array getSubscriptionNameForRoleName(roleName: RoleName): SubscriptionName | undefined getRoleNameForSubscriptionName(subscriptionName: SubscriptionName): RoleName | undefined } diff --git a/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.spec.ts b/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.spec.ts index a78371005..055a031ce 100644 --- a/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.spec.ts +++ b/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.spec.ts @@ -67,7 +67,7 @@ describe('CreateCrossServiceToken', () => { userRepository.findOneByUuid = jest.fn().mockReturnValue(user) roleToSubscriptionMap = {} as jest.Mocked - roleToSubscriptionMap.filterNonSubscriptionRoles = jest.fn().mockReturnValue([RoleName.NAMES.PlusUser]) + roleToSubscriptionMap.filterSubscriptionRoles = jest.fn().mockReturnValue([RoleName.NAMES.PlusUser]) roleToSubscriptionMap.getSubscriptionNameForRoleName = jest .fn() .mockReturnValue(SubscriptionPlanName.NAMES.PlusPlan) @@ -170,7 +170,7 @@ describe('CreateCrossServiceToken', () => { }) it('should trace session without a subscription role', async () => { - roleToSubscriptionMap.filterNonSubscriptionRoles = jest.fn().mockReturnValue([]) + roleToSubscriptionMap.filterSubscriptionRoles = jest.fn().mockReturnValue([]) await createUseCase().execute({ user, diff --git a/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.ts b/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.ts index 87fec31f2..26fb7c0a6 100644 --- a/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.ts +++ b/packages/auth/src/Domain/UseCase/CreateCrossServiceToken/CreateCrossServiceToken.ts @@ -102,7 +102,7 @@ export class CreateCrossServiceToken implements UseCaseInterface { } private getSubscriptionNameFromRoles(roles: Array): string | null { - const nonSubscriptionRoles = this.roleToSubscriptionMap.filterNonSubscriptionRoles(roles) + const nonSubscriptionRoles = this.roleToSubscriptionMap.filterSubscriptionRoles(roles) if (nonSubscriptionRoles.length === 0) { return null }