| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import { Test, TestingModule } from '@nestjs/testing';
- import * as request from 'supertest';
- import { AppModule } from './../../src/app.module';
- import {
- BadRequestException,
- HttpStatus,
- ValidationPipe,
- } from '@nestjs/common';
- describe('App (e2e)', () => {
- let app;
- beforeAll(async () => {
- const moduleFixture: TestingModule = await Test.createTestingModule({
- imports: [AppModule],
- }).compile();
- app = moduleFixture.createNestApplication();
- app.setGlobalPrefix('api');
- app.useGlobalPipes(
- new ValidationPipe({
- whitelist: true,
- transform: true,
- forbidNonWhitelisted: true,
- transformOptions: {
- enableImplicitConversion: true,
- },
- }),
- );
- await app.init();
- });
- describe('LoginController (e2e) - [POST /api/auth/login]', () => {
- let accessTokenJwt: string;
- it('should authenticates user with valid credentials and provides a jwt token', () => {
- return request(app.getHttpServer())
- .post('/api/auth/login')
- .send({
- email: 'test@example.com',
- password: 'pass123',
- })
- .then(({ body }) => {
- accessTokenJwt = body.accessToken;
- expect(accessTokenJwt).toMatch(
- /^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/,
- );
- expect(body).toEqual({
- sub: 1,
- expiresIn: '3600',
- audience: '127.0.0.1:3001',
- issuer: '127.0.0.1:3001',
- accessToken: accessTokenJwt,
- user: { name: 'name #1', email: 'test@example.com', id: 1 },
- });
- expect(HttpStatus.OK);
- });
- });
- it('should fails to authenticate user with an incorrect password', async () => {
- const response = await request(app.getHttpServer())
- .post('/api/auth/login')
- .send({ email: 'test@example.com', password: 'wrong' })
- .expect(HttpStatus.BAD_REQUEST);
- expect(response.body.accessToken).not.toBeDefined();
- });
- it('should throw an error for a bad email', () => {
- return request(app.getHttpServer())
- .post('/api/auth/login')
- .send({
- password: 'pass123',
- })
- .then(({ body }) => {
- expect(body).toEqual({
- error: 'Bad Request',
- message: [
- 'email should not be empty',
- 'email must be a string',
- 'email must be an email',
- ],
- statusCode: 400,
- });
- expect(HttpStatus.BAD_REQUEST);
- expect(new BadRequestException());
- });
- });
- it('should throw an error for a bad password', () => {
- return request(app.getHttpServer())
- .post('/api/auth/login')
- .send({
- email: 'test@example.it',
- })
- .then(({ body }) => {
- expect(body).toEqual({
- error: 'Bad Request',
- message: [
- 'password must be shorter than or equal to 60 characters',
- 'password must be a string',
- 'password should not be empty',
- ],
- statusCode: 400,
- });
- expect(HttpStatus.BAD_REQUEST);
- expect(new BadRequestException());
- });
- });
- });
- afterAll(async () => {
- await app.close();
- });
- });
|