| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- import { Test, TestingModule } from '@nestjs/testing';
- import * as request from 'supertest';
- import { AppModule } from './../../src/app.module';
- import { MailerService } from '../../src/shared/mailer/mailer.service';
- import {
- BadRequestException,
- HttpStatus,
- ValidationPipe,
- } from '@nestjs/common';
- import { UserCreateDto } from 'src/users/dto/user-create.dto';
- import { HashingService } from '../../src/shared/hashing/hashing.service';
- const user = {
- name: 'name #1',
- username: 'username #1',
- email: 'test@example.com',
- password: 'pass123',
- };
- describe('App (e2e)', () => {
- let app;
- beforeAll(async () => {
- const moduleFixture: TestingModule = await Test.createTestingModule({
- imports: [AppModule],
- providers: [
- {
- provide: HashingService,
- useValue: {
- hash: jest.fn(() => 'pass123'),
- },
- },
- ],
- })
- .overrideProvider(MailerService)
- .useValue({
- sendMail: jest.fn(() => true),
- })
- .compile();
- app = moduleFixture.createNestApplication();
- app.setGlobalPrefix('api');
- app.useGlobalPipes(
- new ValidationPipe({
- whitelist: true,
- transform: true,
- forbidNonWhitelisted: true,
- transformOptions: {
- enableImplicitConversion: true,
- },
- }),
- );
- await app.init();
- });
- describe('RegisterController (e2e) - [POST /api/auth/register]', () => {
- it('should register user', async () => {
- return await request(app.getHttpServer())
- .post('/api/auth/register')
- .send(user as UserCreateDto)
- .then(({ body }) => {
- expect(body).toEqual({
- message: 'User registration successfully!',
- status: 201,
- });
- expect(HttpStatus.CREATED);
- });
- });
- it('should throw an error for a bad email', async () => {
- return await request(app.getHttpServer())
- .post('/api/auth/register')
- .send({
- name: 'name#1 register',
- username: 'username#1 register',
- password: '123456789',
- })
- .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 name', async () => {
- return await request(app.getHttpServer())
- .post('/api/auth/register')
- .send({
- username: 'username#1 register',
- email: 'test@example.it',
- password: '123456789',
- })
- .expect(HttpStatus.BAD_REQUEST)
- .then(({ body }) => {
- expect(body).toEqual({
- error: 'Bad Request',
- message: [
- 'name must be shorter than or equal to 30 characters',
- 'name must be a string',
- ],
- statusCode: 400,
- });
- expect(new BadRequestException());
- });
- });
- it('should throw an error for a bad username', async () => {
- return await request(app.getHttpServer())
- .post('/api/auth/register')
- .send({
- name: 'name#1 register',
- email: 'test@example.it',
- password: '123456789',
- })
- .then(({ body }) => {
- expect(body).toEqual({
- error: 'Bad Request',
- message: [
- 'username must be shorter than or equal to 40 characters',
- 'username must be a string',
- ],
- statusCode: 400,
- });
- expect(HttpStatus.BAD_REQUEST);
- expect(new BadRequestException());
- });
- });
- it('should throw an error for a bad password', async () => {
- return await request(app.getHttpServer())
- .post('/api/auth/register')
- .send({
- name: 'name#1 register',
- username: 'username#1 register',
- 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();
- });
- });
|