| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { Test, TestingModule } from '@nestjs/testing';
- import * as request from 'supertest';
- import { AppModule } from '../src/app.module';
- import { HttpStatus, ValidationPipe } from '@nestjs/common';
- describe('App (e2e)', () => {
- let app;
- let accessTokenJwt: string;
- 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('AppController (e2e)', () => {
- it('should return the follwing message: "This is a simple example of item returned by your APIs." [GET /api]', () => {
- return request(app.getHttpServer())
- .get('/api')
- .expect({
- message: 'This is a simple example of item returned by your APIs.',
- })
- .expect(HttpStatus.OK);
- });
- describe('should sign in and get a "live" JWT', () => {
- 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 return the follwing message: "Access to protected resources granted! This protected resource is displayed when the token is successfully provided". - ( endpoint protected ) [GET /api/secure]', () => {
- return request(app.getHttpServer())
- .get('/api/secure')
- .set('Authorization', `Bearer ${accessTokenJwt}`)
- .expect({
- message:
- 'Access to protected resources granted! This protected resource is displayed when the token is successfully provided.',
- });
- });
- });
- });
- afterAll(async () => {
- await app.close();
- });
- });
|