Completed
Push — master ( 7c7ab7...45cb8f )
by Mathieu
19s queued 11s
created

server/src/Infrastructure/HumanResource/User/Security/BearerStrategy.spec.ts   A

Complexity

Total Complexity 2
Complexity/F 0

Size

Lines of Code 54
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 45
mnd 2
bc 2
fnc 0
dl 0
loc 54
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 10
1
import {mock, instance, verify, when} from 'ts-mockito';
2
import {UnauthorizedException} from '@nestjs/common';
3
import {UserRepository} from 'src/Infrastructure/HumanResource/User/Repository/UserRepository';
4
import {BearerStrategy} from 'src/Infrastructure/HumanResource/User/Security/BearerStrategy';
5
import {User, UserRole} from 'src/Domain/HumanResource/User/User.entity';
6
7
describe('BearerStrategy', () => {
8
  let bearerStrategy: BearerStrategy;
9
  let userRepository: UserRepository;
10
11
  beforeEach(() => {
12
    userRepository = mock(UserRepository);
13
    bearerStrategy = new BearerStrategy(instance(userRepository));
14
  });
15
16
  it('testUserNotFound', async () => {
17
    when(userRepository.findOneByApiToken('apiToken')).thenResolve(undefined);
18
19
    try {
20
      await bearerStrategy.validate('apiToken');
21
    } catch (e) {
22
      expect(e instanceof UnauthorizedException).toBe(true);
23
      verify(userRepository.findOneByApiToken('apiToken')).once();
24
    }
25
  });
26
27
  it('testUserFound', async () => {
28
    const user = new User(
29
      'Mathieu',
30
      'MARCHOIS',
31
      '[email protected]',
32
      'token',
33
      'password',
34
      UserRole.COOPERATOR,
35
      '2019-09-12'
36
    );
37
38
    when(userRepository.findOneByApiToken('apiToken')).thenResolve(user);
39
    expect(await bearerStrategy.validate('apiToken')).toMatchObject(user);
40
    verify(userRepository.findOneByApiToken('apiToken')).once();
41
  });
42
43
  it('testUserNotFound', async () => {
44
    when(userRepository.findOneByApiToken('apiToken')).thenResolve(undefined);
45
46
    try {
47
      await bearerStrategy.validate('apiToken');
48
    } catch (e) {
49
      expect(e).toBeInstanceOf(UnauthorizedException);
50
      verify(userRepository.findOneByApiToken('apiToken')).once();
51
    }
52
  });
53
});
54