fix(auth): saving subscription plan name in session traces

This commit is contained in:
Karol Sójko
2022-12-20 08:04:11 +01:00
parent 6af6417ca2
commit 3064d03aa9
5 changed files with 27 additions and 3 deletions
@@ -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<Role>,
{
name: RoleName.FilesBetaUser,
} as jest.Mocked<Role>,
{
name: RoleName.PlusUser,
} as jest.Mocked<Role>,
]
expect(createMap().filterSubscriptionRoles(roles)).toEqual([
{
name: RoleName.PlusUser,
},
])
})
})
@@ -17,6 +17,10 @@ export class RoleToSubscriptionMap implements RoleToSubscriptionMapInterface {
return roles.filter((role) => this.nonSubscriptionRoles.includes(role.name as RoleName))
}
filterSubscriptionRoles(roles: Role[]): Array<Role> {
return roles.filter((role) => !this.nonSubscriptionRoles.includes(role.name as RoleName))
}
getSubscriptionNameForRoleName(roleName: RoleName): SubscriptionName | undefined {
return this.roleNameToSubscriptionNameMap.get(roleName)
}
@@ -3,6 +3,7 @@ import { Role } from './Role'
export interface RoleToSubscriptionMapInterface {
filterNonSubscriptionRoles(roles: Role[]): Array<Role>
filterSubscriptionRoles(roles: Role[]): Array<Role>
getSubscriptionNameForRoleName(roleName: RoleName): SubscriptionName | undefined
getRoleNameForSubscriptionName(subscriptionName: SubscriptionName): RoleName | undefined
}
@@ -67,7 +67,7 @@ describe('CreateCrossServiceToken', () => {
userRepository.findOneByUuid = jest.fn().mockReturnValue(user)
roleToSubscriptionMap = {} as jest.Mocked<RoleToSubscriptionMapInterface>
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,
@@ -102,7 +102,7 @@ export class CreateCrossServiceToken implements UseCaseInterface {
}
private getSubscriptionNameFromRoles(roles: Array<Role>): string | null {
const nonSubscriptionRoles = this.roleToSubscriptionMap.filterNonSubscriptionRoles(roles)
const nonSubscriptionRoles = this.roleToSubscriptionMap.filterSubscriptionRoles(roles)
if (nonSubscriptionRoles.length === 0) {
return null
}