juice-shop

Форк
0
/
last-login-ip.component.spec.ts 
60 строк · 2.3 Кб
1
/*
2
 * Copyright (c) 2014-2024 Bjoern Kimminich & the OWASP Juice Shop contributors.
3
 * SPDX-License-Identifier: MIT
4
 */
5

6
import { type ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'
7
import { LastLoginIpComponent } from './last-login-ip.component'
8
import { MatCardModule } from '@angular/material/card'
9
import { DomSanitizer } from '@angular/platform-browser'
10

11
describe('LastLoginIpComponent', () => {
12
  let component: LastLoginIpComponent
13
  let fixture: ComponentFixture<LastLoginIpComponent>
14
  let sanitizer
15

16
  beforeEach(waitForAsync(() => {
17
    sanitizer = jasmine.createSpyObj('DomSanitizer', ['bypassSecurityTrustHtml', 'sanitize'])
18
    sanitizer.bypassSecurityTrustHtml.and.callFake((args: any) => args)
19
    sanitizer.sanitize.and.returnValue({})
20

21
    TestBed.configureTestingModule({
22
      declarations: [LastLoginIpComponent],
23
      providers: [
24
        { provide: DomSanitizer, useValue: sanitizer }
25
      ],
26
      imports: [
27
        MatCardModule
28
      ]
29
    }).compileComponents()
30
  }))
31

32
  beforeEach(() => {
33
    fixture = TestBed.createComponent(LastLoginIpComponent)
34
    component = fixture.componentInstance
35
    fixture.detectChanges()
36
  })
37

38
  it('should compile', () => {
39
    expect(component).toBeTruthy()
40
  })
41

42
  it('should log JWT parsing error to console', () => {
43
    console.log = jasmine.createSpy('log')
44
    localStorage.setItem('token', 'definitelyInvalidJWT')
45
    component.ngOnInit()
46
    expect(console.log).toHaveBeenCalled()
47
  })
48

49
  xit('should set Last-Login IP from JWT as trusted HTML', () => { // FIXME Expected state seems to leak over from previous test case occasionally
50
    localStorage.setItem('token', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7Imxhc3RMb2dpbklwIjoiMS4yLjMuNCJ9fQ.RAkmdqwNypuOxv3SDjPO4xMKvd1CddKvDFYDBfUt3bg')
51
    component.ngOnInit()
52
    expect(sanitizer.bypassSecurityTrustHtml).toHaveBeenCalledWith('<small>1.2.3.4</small>')
53
  })
54

55
  xit('should not set Last-Login IP if none is present in JWT', () => { // FIXME Expected state seems to leak over from previous test case occasionally
56
    localStorage.setItem('token', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7fX0.bVBhvll6IaeR3aUdoOeyR8YZe2S2DfhGAxTGfd9enLw')
57
    component.ngOnInit()
58
    expect(sanitizer.bypassSecurityTrustHtml).not.toHaveBeenCalled()
59
  })
60
})
61

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.