|
@@ -5,7 +5,7 @@ import { User } from '../User/User'
|
|
import { UserRepositoryInterface } from '../User/UserRepositoryInterface'
|
|
import { UserRepositoryInterface } from '../User/UserRepositoryInterface'
|
|
import { RoleRepositoryInterface } from '../Role/RoleRepositoryInterface'
|
|
import { RoleRepositoryInterface } from '../Role/RoleRepositoryInterface'
|
|
import { SubscriptionName } from '@standardnotes/common'
|
|
import { SubscriptionName } from '@standardnotes/common'
|
|
-import { RoleName } from '@standardnotes/domain-core'
|
|
|
|
|
|
+import { RoleName, Uuid } from '@standardnotes/domain-core'
|
|
import { Role } from '../Role/Role'
|
|
import { Role } from '../Role/Role'
|
|
|
|
|
|
import { ClientServiceInterface } from '../Client/ClientServiceInterface'
|
|
import { ClientServiceInterface } from '../Client/ClientServiceInterface'
|
|
@@ -81,9 +81,44 @@ describe('RoleService', () => {
|
|
logger = {} as jest.Mocked<Logger>
|
|
logger = {} as jest.Mocked<Logger>
|
|
logger.info = jest.fn()
|
|
logger.info = jest.fn()
|
|
logger.warn = jest.fn()
|
|
logger.warn = jest.fn()
|
|
|
|
+ logger.error = jest.fn()
|
|
})
|
|
})
|
|
|
|
|
|
describe('adding roles', () => {
|
|
describe('adding roles', () => {
|
|
|
|
+ beforeEach(() => {
|
|
|
|
+ user = {
|
|
|
|
+ uuid: '123',
|
|
|
|
+ email: 'test@test.com',
|
|
|
|
+ roles: Promise.resolve([basicRole]),
|
|
|
|
+ } as jest.Mocked<User>
|
|
|
|
+
|
|
|
|
+ userRepository.findOneByUuid = jest.fn().mockReturnValue(user)
|
|
|
|
+ userRepository.save = jest.fn().mockReturnValue(user)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ it('should add a role to a user', async () => {
|
|
|
|
+ await createService().addRoleToUser(
|
|
|
|
+ Uuid.create('00000000-0000-0000-0000-000000000000').getValue(),
|
|
|
|
+ RoleName.create(RoleName.NAMES.ProUser).getValue(),
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ user.roles = Promise.resolve([basicRole, proRole])
|
|
|
|
+ expect(userRepository.save).toHaveBeenCalledWith(user)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ it('should not add a role to a user if the user could not be found', async () => {
|
|
|
|
+ userRepository.findOneByUuid = jest.fn().mockReturnValue(null)
|
|
|
|
+
|
|
|
|
+ await createService().addRoleToUser(
|
|
|
|
+ Uuid.create('00000000-0000-0000-0000-000000000000').getValue(),
|
|
|
|
+ RoleName.create(RoleName.NAMES.ProUser).getValue(),
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ expect(userRepository.save).not.toHaveBeenCalled()
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ describe('adding roles based on subscription', () => {
|
|
beforeEach(() => {
|
|
beforeEach(() => {
|
|
user = {
|
|
user = {
|
|
uuid: '123',
|
|
uuid: '123',
|
|
@@ -96,7 +131,7 @@ describe('RoleService', () => {
|
|
})
|
|
})
|
|
|
|
|
|
it('should add role to user', async () => {
|
|
it('should add role to user', async () => {
|
|
- await createService().addUserRole(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
+ await createService().addUserRoleBasedOnSubscription(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
expect(roleRepository.findOneByName).toHaveBeenCalledWith(RoleName.NAMES.ProUser)
|
|
expect(roleRepository.findOneByName).toHaveBeenCalledWith(RoleName.NAMES.ProUser)
|
|
user.roles = Promise.resolve([basicRole, proRole])
|
|
user.roles = Promise.resolve([basicRole, proRole])
|
|
@@ -112,7 +147,7 @@ describe('RoleService', () => {
|
|
|
|
|
|
userRepository.findOneByUsernameOrEmail = jest.fn().mockReturnValue(user)
|
|
userRepository.findOneByUsernameOrEmail = jest.fn().mockReturnValue(user)
|
|
|
|
|
|
- await createService().addUserRole(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
+ await createService().addUserRoleBasedOnSubscription(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
expect(roleRepository.findOneByName).toHaveBeenCalledWith(RoleName.NAMES.ProUser)
|
|
expect(roleRepository.findOneByName).toHaveBeenCalledWith(RoleName.NAMES.ProUser)
|
|
expect(userRepository.save).toHaveBeenCalledWith(user)
|
|
expect(userRepository.save).toHaveBeenCalledWith(user)
|
|
@@ -120,7 +155,7 @@ describe('RoleService', () => {
|
|
})
|
|
})
|
|
|
|
|
|
it('should send websockets event', async () => {
|
|
it('should send websockets event', async () => {
|
|
- await createService().addUserRole(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
+ await createService().addUserRoleBasedOnSubscription(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
expect(webSocketsClientService.sendUserRolesChangedEvent).toHaveBeenCalledWith(user)
|
|
expect(webSocketsClientService.sendUserRolesChangedEvent).toHaveBeenCalledWith(user)
|
|
})
|
|
})
|
|
@@ -128,14 +163,14 @@ describe('RoleService', () => {
|
|
it('should not add role if no role name exists for subscription name', async () => {
|
|
it('should not add role if no role name exists for subscription name', async () => {
|
|
roleToSubscriptionMap.getRoleNameForSubscriptionName = jest.fn().mockReturnValue(undefined)
|
|
roleToSubscriptionMap.getRoleNameForSubscriptionName = jest.fn().mockReturnValue(undefined)
|
|
|
|
|
|
- await createService().addUserRole(user, 'test' as SubscriptionName)
|
|
|
|
|
|
+ await createService().addUserRoleBasedOnSubscription(user, 'test' as SubscriptionName)
|
|
|
|
|
|
expect(userRepository.save).not.toHaveBeenCalled()
|
|
expect(userRepository.save).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
|
|
|
|
it('should not add role if no role exists for role name', async () => {
|
|
it('should not add role if no role exists for role name', async () => {
|
|
roleRepository.findOneByName = jest.fn().mockReturnValue(null)
|
|
roleRepository.findOneByName = jest.fn().mockReturnValue(null)
|
|
- await createService().addUserRole(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
+ await createService().addUserRoleBasedOnSubscription(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
expect(userRepository.save).not.toHaveBeenCalled()
|
|
expect(userRepository.save).not.toHaveBeenCalled()
|
|
})
|
|
})
|
|
@@ -169,7 +204,7 @@ describe('RoleService', () => {
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
- describe('removing roles', () => {
|
|
|
|
|
|
+ describe('removing roles based on subscription', () => {
|
|
beforeEach(() => {
|
|
beforeEach(() => {
|
|
user = {
|
|
user = {
|
|
uuid: '123',
|
|
uuid: '123',
|
|
@@ -182,13 +217,13 @@ describe('RoleService', () => {
|
|
})
|
|
})
|
|
|
|
|
|
it('should remove role from user', async () => {
|
|
it('should remove role from user', async () => {
|
|
- await createService().removeUserRole(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
+ await createService().removeUserRoleBasedOnSubscription(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
expect(userRepository.save).toHaveBeenCalledWith(user)
|
|
expect(userRepository.save).toHaveBeenCalledWith(user)
|
|
})
|
|
})
|
|
|
|
|
|
it('should send websockets event', async () => {
|
|
it('should send websockets event', async () => {
|
|
- await createService().removeUserRole(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
+ await createService().removeUserRoleBasedOnSubscription(user, SubscriptionName.ProPlan)
|
|
|
|
|
|
expect(webSocketsClientService.sendUserRolesChangedEvent).toHaveBeenCalledWith(user)
|
|
expect(webSocketsClientService.sendUserRolesChangedEvent).toHaveBeenCalledWith(user)
|
|
})
|
|
})
|
|
@@ -196,7 +231,7 @@ describe('RoleService', () => {
|
|
it('should not remove role if role name does not exist for subscription name', async () => {
|
|
it('should not remove role if role name does not exist for subscription name', async () => {
|
|
roleToSubscriptionMap.getRoleNameForSubscriptionName = jest.fn().mockReturnValue(undefined)
|
|
roleToSubscriptionMap.getRoleNameForSubscriptionName = jest.fn().mockReturnValue(undefined)
|
|
|
|
|
|
- await createService().removeUserRole(user, 'test' as SubscriptionName)
|
|
|
|
|
|
+ await createService().removeUserRoleBasedOnSubscription(user, 'test' as SubscriptionName)
|
|
|
|
|
|
expect(userRepository.save).not.toHaveBeenCalled()
|
|
expect(userRepository.save).not.toHaveBeenCalled()
|
|
})
|
|
})
|