]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/hosts/hosts.component.spec.ts
import 15.2.4
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / cluster / hosts / hosts.component.spec.ts
1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
4 import { RouterTestingModule } from '@angular/router/testing';
5
6 import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
7 import { TabsModule } from 'ngx-bootstrap/tabs';
8 import { ToastrModule } from 'ngx-toastr';
9 import { of } from 'rxjs';
10
11 import { configureTestBed, i18nProviders } from '../../../../testing/unit-test-helper';
12 import { CoreModule } from '../../../core/core.module';
13 import { HostService } from '../../../shared/api/host.service';
14 import { Permissions } from '../../../shared/models/permissions';
15 import { AuthStorageService } from '../../../shared/services/auth-storage.service';
16 import { SharedModule } from '../../../shared/shared.module';
17 import { CephModule } from '../../ceph.module';
18 import { CephSharedModule } from '../../shared/ceph-shared.module';
19 import { HostsComponent } from './hosts.component';
20
21 describe('HostsComponent', () => {
22 let component: HostsComponent;
23 let fixture: ComponentFixture<HostsComponent>;
24 let hostListSpy: jasmine.Spy;
25
26 const fakeAuthStorageService = {
27 getPermissions: () => {
28 return new Permissions({ hosts: ['read', 'update', 'create', 'delete'] });
29 }
30 };
31
32 configureTestBed({
33 imports: [
34 BrowserAnimationsModule,
35 CephSharedModule,
36 SharedModule,
37 HttpClientTestingModule,
38 TabsModule.forRoot(),
39 BsDropdownModule.forRoot(),
40 RouterTestingModule,
41 ToastrModule.forRoot(),
42 CephModule,
43 CoreModule
44 ],
45 providers: [{ provide: AuthStorageService, useValue: fakeAuthStorageService }, i18nProviders],
46 declarations: []
47 });
48
49 beforeEach(() => {
50 fixture = TestBed.createComponent(HostsComponent);
51 component = fixture.componentInstance;
52 hostListSpy = spyOn(TestBed.get(HostService), 'list');
53 fixture.detectChanges();
54 });
55
56 it('should create', () => {
57 expect(component).toBeTruthy();
58 });
59
60 it('should render hosts list even with not permission mapped services', async(() => {
61 const hostname = 'ceph.dev';
62 const payload = [
63 {
64 services: [
65 {
66 type: 'osd',
67 id: '0'
68 },
69 {
70 type: 'rgw',
71 id: 'rgw'
72 },
73 {
74 type: 'notPermissionMappedService',
75 id: '1'
76 }
77 ],
78 hostname: hostname,
79 ceph_version: 'ceph version Development',
80 labels: ['foo', 'bar']
81 }
82 ];
83
84 hostListSpy.and.callFake(() => of(payload));
85
86 fixture.whenStable().then(() => {
87 fixture.detectChanges();
88
89 const spans = fixture.debugElement.nativeElement.querySelectorAll(
90 '.datatable-body-cell-label span'
91 );
92 expect(spans[0].textContent).toBe(hostname);
93 });
94 }));
95 });