Select Git revision
package-lock.json
auth.controller.spec.ts 2.30 KiB
import { JwtModule } from '@nestjs/jwt';
import { getModelToken } from '@nestjs/mongoose';
import { PassportModule } from '@nestjs/passport';
import { Test, TestingModule } from '@nestjs/testing';
import { ConfigurationModule } from '../configuration/configuration.module';
import { MailerModule } from '../mailer/mailer.module';
import { User } from '../users/schemas/user.schema';
import { UsersService } from '../users/users.service';
import { AuthController } from './auth.controller';
import { AuthService } from './auth.service';
import * as dotenv from 'dotenv';
import { LoginDto } from './login-dto';
import { HttpException, HttpStatus } from '@nestjs/common';
describe('AuthController', () => {
let controller: AuthController;
// let service: AuthService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
imports: [
PassportModule,
MailerModule,
ConfigurationModule,
JwtModule.register({
secret: process.env.JWT_SECRET,
signOptions: { expiresIn: '86400s' }, // 24h validity
}),
],
controllers: [AuthController],
providers: [
AuthService,
UsersService,
{
provide: getModelToken('User'),
useValue: User,
},
],
}).compile();
controller = module.get<AuthController>(AuthController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
it('should login valid user', async () => {
const result = { username: 'paula.dubois@mii.com', token: 'tok3N', name: 'paula', surname: 'dubois' };
jest.spyOn(controller, 'login').mockImplementation(async (): Promise<{ username; name; surname; token }> => result);
const loginCredentials: LoginDto = { email: 'paula.dubois@mii.com', password: process.env.USER_PWD };
expect(await controller.login(loginCredentials)).toBe(result);
});
it('should not login valid user', async () => {
const result: HttpException = new HttpException('Invalid credentials', HttpStatus.UNAUTHORIZED);
jest.spyOn(controller, 'login').mockImplementation(async (): Promise<any> => result);
const loginCredentials: LoginDto = { email: 'paula.dubois@mii.com', password: process.env.USER_PWD };
expect(await controller.login(loginCredentials)).toBe(result);
});
});