Skip to content
Snippets Groups Projects
Select Git revision
  • 9df494ad747b23387715cf63007da430a8c5f875
  • dev default protected
  • renovate/bitnami-mongodb-8.x
  • renovate/ghcr.io-browserless-chromium-2.x
  • renovate/major-nest-monorepo
  • renovate/luxon-3.x
  • renovate/gouvfr-anct-timetable-to-osm-opening-hours-2.x
  • renovate/major-typescript-eslint-monorepo
  • renovate/npm-11.x
  • renovate/mysql-9.x
  • renovate/mongo-express-1.x
  • renovate/major-jest-monorepo
  • renovate/tsconfig-paths-4.x
  • renovate/jest-junit-16.x
  • renovate/express-5.x
  • renovate/elastic-elasticsearch-8.x
  • renovate/ghost-5.x
  • renovate/elasticsearch-7.x
  • renovate/devdependencies-(non-major)
  • 714-label-cafe-ia
  • master protected
  • v4.0.3
  • v4.0.1
  • v4.0.0
  • v3.4.3
  • v3.4.2
  • v3.4.1
  • v3.4.0
  • v3.3.1
  • v3.3.0
  • v3.2.0
  • v3.1.0
  • v3.0.1
  • v3.0.0
  • v2.5.0
  • v2.4.2
  • v2.4.1
  • v2.4.0
  • v2.3.2
  • v2.3.1
  • v2.3.0
41 results

auth.service.spec.ts

Blame
  • auth.service.spec.ts 5.70 KiB
    import { JwtService } from '@nestjs/jwt';
    import { PassportModule } from '@nestjs/passport';
    import { Test, TestingModule } from '@nestjs/testing';
    import { JwtServiceMock } from '../../test/mock/services/jwt.mock.service';
    import { UsersServiceMock } from '../../test/mock/services/user.mock.service';
    import { ConfigurationModule } from '../configuration/configuration.module';
    import { MailerModule } from '../mailer/mailer.module';
    import { UsersService } from '../users/services/users.service';
    import { AuthService } from './auth.service';
    import { LoginDto } from './login-dto';
    
    describe('AuthService', () => {
      let service: AuthService;
    
      beforeEach(async () => {
        const module: TestingModule = await Test.createTestingModule({
          imports: [PassportModule, MailerModule, ConfigurationModule],
          providers: [
            AuthService,
            {
              provide: UsersService,
              useClass: UsersServiceMock,
            },
            {
              provide: JwtService,
              useClass: JwtServiceMock,
            },
          ],
        }).compile();
    
        service = module.get<AuthService>(AuthService);
      });
    
      it('should be defined', () => {
        expect(service).toBeDefined();
      });
    
      describe('validateUser', () => {
        it('should validateUser', async () => {
          const result = {
            _id: 'tsfsf6296',
            validationToken:
              'cf1c74c22cedb6b575945098db42d2f493fb759c9142c6aff7980f252886f36ee086574ee99a06bc99119079257116c959c8ec870949cebdef2b293666dbca42',
            emailVerified: false,
            email: 'jacques.dupont@mii.com',
            role: 0,
            personalOffers: [],
          };
          const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
          expect(await service.validateUser(loginDto)).toStrictEqual(result);
        });
    
        it('should not validateUser', async () => {
          const loginDto: LoginDto = { email: 'tom.dupont@mii.com', password: 'test1A!!!' }; //NOSONAR
          expect(await service.validateUser(loginDto)).toBe(null);
        });
      });
    
      describe('login', () => {
        it('should login user pauline.dupont@mii.com', async () => {
          // Token creation mock
          const token = {
            accessToken:
              'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InBhdWxpbmUuZHVwb250QG1paS5jb20iLCJyb2xlIjowLCJpYXQiOjE2MjAwNDg5MDYsImV4cCI6MTYyMDEzNTMwNn0.jbLazQNJzU_X9Yp1S7XH1rYD5W7yyd1pdGebmkyTMB4',
            expiresAt: '2021-05-04T15:35:06.663+02:00',
          };
          const _createToken = jest.spyOn(AuthService.prototype as any, '_createToken');
          _createToken.mockImplementation(() => token);
    
          const loginDto: LoginDto = { email: 'pauline.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
          expect(await service.login(loginDto)).toStrictEqual({
            accessToken:
              'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InBhdWxpbmUuZHVwb250QG1paS5jb20iLCJyb2xlIjowLCJpYXQiOjE2MjAwNDg5MDYsImV4cCI6MTYyMDEzNTMwNn0.jbLazQNJzU_X9Yp1S7XH1rYD5W7yyd1pdGebmkyTMB4',
            expiresAt: '2021-05-04T15:35:06.663+02:00',
            username: 'pauline.dupont@mii.com',
            name: 'DUPONT',
            surname: 'Pauline',
          });
        });
    
        it('should login not login user jacques.dupont@mii.com because email is not verified', async () => {
          // Token creation mock
          const token = {
            accessToken:
              'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InBhdWxpbmUuZHVwb250QG1paS5jb20iLCJyb2xlIjowLCJpYXQiOjE2MjAwNDg5MDYsImV4cCI6MTYyMDEzNTMwNn0.jbLazQNJzU_X9Yp1S7XH1rYD5W7yyd1pdGebmkyTMB4',
            expiresAt: '2021-05-04T15:35:06.663+02:00',
          };
          const _createToken = jest.spyOn(AuthService.prototype as any, '_createToken');
          _createToken.mockImplementation(() => token);
    
          const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: 'test1A!!' }; //NOSONAR
          try {
            await service.login(loginDto);
          } catch (e) {
            expect(e.response).toBe('Invalid credentials');
            expect(e.message).toBe('Invalid credentials');
            expect(e.status).toBe(401);
          }
        });
    
        it('should login not login user toto@mii.com because email does not exist', async () => {
          // Token creation mock
          const token = {
            accessToken:
              'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InBhdWxpbmUuZHVwb250QG1paS5jb20iLCJyb2xlIjowLCJpYXQiOjE2MjAwNDg5MDYsImV4cCI6MTYyMDEzNTMwNn0.jbLazQNJzU_X9Yp1S7XH1rYD5W7yyd1pdGebmkyTMB4',
            expiresAt: '2021-05-04T15:35:06.663+02:00',
          };
          const _createToken = jest.spyOn(AuthService.prototype as any, '_createToken');
          _createToken.mockImplementation(() => token);
    
          const loginDto: LoginDto = { email: 'toto@mii.com', password: 'test1A!!' }; //NOSONAR
          try {
            await service.login(loginDto);
          } catch (e) {
            expect(e.response).toBe('Invalid credentials');
            expect(e.message).toBe('Invalid credentials');
            expect(e.status).toBe(401);
          }
        });
    
        it('should login not login user toto@mii.com because password is invalid', async () => {
          // Token creation mock
          const token = {
            accessToken:
              'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InBhdWxpbmUuZHVwb250QG1paS5jb20iLCJyb2xlIjowLCJpYXQiOjE2MjAwNDg5MDYsImV4cCI6MTYyMDEzNTMwNn0.jbLazQNJzU_X9Yp1S7XH1rYD5W7yyd1pdGebmkyTMB4',
            expiresAt: '2021-05-04T15:35:06.663+02:00',
          };
          const _createToken = jest.spyOn(AuthService.prototype as any, '_createToken');
          _createToken.mockImplementation(() => token);
    
          const loginDto: LoginDto = { email: 'jacques.dupont@mii.com', password: '1' }; //NOSONAR
          try {
            await service.login(loginDto);
          } catch (e) {
            expect(e.response).toBe('Invalid credentials');
            expect(e.message).toBe('Invalid credentials');
            expect(e.status).toBe(401);
          }
        });
      });
    });