1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import 'reflect-metadata'
- import * as express from 'express'
- import { FeaturesController } from './FeaturesController'
- import { results } from 'inversify-express-utils'
- import { User } from '../Domain/User/User'
- import { GetUserFeatures } from '../Domain/UseCase/GetUserFeatures/GetUserFeatures'
- import { ControllerContainerInterface } from '@standardnotes/domain-core'
- describe('FeaturesController', () => {
- let getUserFeatures: GetUserFeatures
- let request: express.Request
- let response: express.Response
- let user: User
- let controllerContainer: ControllerContainerInterface
- const createController = () => new FeaturesController(getUserFeatures, controllerContainer)
- beforeEach(() => {
- controllerContainer = {} as jest.Mocked<ControllerContainerInterface>
- controllerContainer.register = jest.fn()
- user = {} as jest.Mocked<User>
- user.uuid = '123'
- getUserFeatures = {} as jest.Mocked<GetUserFeatures>
- getUserFeatures.execute = jest.fn()
- request = {
- headers: {},
- body: {},
- params: {},
- } as jest.Mocked<express.Request>
- response = {
- locals: {},
- } as jest.Mocked<express.Response>
- })
- it('should get authenticated user features', async () => {
- request.params.userUuid = '1-2-3'
- response.locals.user = {
- uuid: '1-2-3',
- }
- getUserFeatures.execute = jest.fn().mockReturnValue({ success: true })
- const httpResponse = <results.JsonResult>await createController().getFeatures(request, response)
- const result = await httpResponse.executeAsync()
- expect(getUserFeatures.execute).toHaveBeenCalledWith({
- userUuid: '1-2-3',
- offline: false,
- })
- expect(result.statusCode).toEqual(200)
- })
- it('should not get user features if the user with provided uuid does not exist', async () => {
- request.params.userUuid = '1-2-3'
- response.locals.user = {
- uuid: '1-2-3',
- }
- getUserFeatures.execute = jest.fn().mockReturnValue({ success: false })
- const httpResponse = <results.JsonResult>await createController().getFeatures(request, response)
- const result = await httpResponse.executeAsync()
- expect(getUserFeatures.execute).toHaveBeenCalledWith({ userUuid: '1-2-3', offline: false })
- expect(result.statusCode).toEqual(400)
- })
- it('should not get user features if not allowed', async () => {
- request.params.userUuid = '1-2-3'
- response.locals.user = {
- uuid: '2-3-4',
- }
- getUserFeatures.execute = jest.fn()
- const httpResponse = <results.JsonResult>await createController().getFeatures(request, response)
- const result = await httpResponse.executeAsync()
- expect(getUserFeatures.execute).not.toHaveBeenCalled()
- expect(result.statusCode).toEqual(401)
- })
- })
|