]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.spec.ts
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / cluster / logs / logs.component.spec.ts
1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { ComponentFixture, TestBed } from '@angular/core/testing';
3 import { FormsModule } from '@angular/forms';
4
5 import { NgbDatepickerModule, NgbNavModule, NgbTimepickerModule } from '@ng-bootstrap/ng-bootstrap';
6 import { ToastrModule } from 'ngx-toastr';
7 import { of } from 'rxjs';
8
9 import { LogsService } from '~/app/shared/api/logs.service';
10 import { SharedModule } from '~/app/shared/shared.module';
11 import { configureTestBed } from '~/testing/unit-test-helper';
12 import { LogsComponent } from './logs.component';
13
14 describe('LogsComponent', () => {
15 let component: LogsComponent;
16 let fixture: ComponentFixture<LogsComponent>;
17 let logsService: LogsService;
18 let logsServiceSpy: jasmine.Spy;
19
20 configureTestBed({
21 imports: [
22 HttpClientTestingModule,
23 NgbNavModule,
24 SharedModule,
25 FormsModule,
26 NgbDatepickerModule,
27 NgbTimepickerModule,
28 ToastrModule.forRoot()
29 ],
30 declarations: [LogsComponent]
31 });
32
33 beforeEach(() => {
34 logsService = TestBed.inject(LogsService);
35 logsServiceSpy = spyOn(logsService, 'getLogs');
36 logsServiceSpy.and.returnValue(of(null));
37 fixture = TestBed.createComponent(LogsComponent);
38 component = fixture.componentInstance;
39 });
40
41 it('should create', () => {
42 expect(component).toBeTruthy();
43 });
44
45 describe('abstractFilters', () => {
46 it('after initialized', () => {
47 const filters = component.abstractFilters();
48 expect(filters.priority).toBe('All');
49 expect(filters.key).toBe('');
50 expect(filters.yearMonthDay).toBe('');
51 expect(filters.sTime).toBe(0);
52 expect(filters.eTime).toBe(1439);
53 });
54 it('change date', () => {
55 component.selectedDate = { year: 2019, month: 1, day: 1 };
56 component.startTime = { hour: 1, minute: 10 };
57 component.endTime = { hour: 12, minute: 10 };
58 const filters = component.abstractFilters();
59 expect(filters.yearMonthDay).toBe('2019-01-01');
60 expect(filters.sTime).toBe(70);
61 expect(filters.eTime).toBe(730);
62 });
63 });
64
65 describe('filterLogs', () => {
66 const contentData: Record<string, any> = {
67 clog: [
68 {
69 name: 'priority',
70 stamp: '2019-02-21 09:39:49.572801',
71 message: 'Manager daemon localhost is now available',
72 priority: '[ERR]'
73 },
74 {
75 name: 'search',
76 stamp: '2019-02-21 09:39:49.572801',
77 message: 'Activating manager daemon localhost',
78 priority: '[INF]'
79 },
80 {
81 name: 'date',
82 stamp: '2019-01-21 09:39:49.572801',
83 message: 'Manager daemon localhost is now available',
84 priority: '[INF]'
85 },
86 {
87 name: 'time',
88 stamp: '2019-02-21 01:39:49.572801',
89 message: 'Manager daemon localhost is now available',
90 priority: '[INF]'
91 }
92 ],
93 audit_log: []
94 };
95 const resetFilter = () => {
96 component.selectedDate = null;
97 component.priority = 'All';
98 component.search = '';
99 component.startTime = { hour: 0, minute: 0 };
100 component.endTime = { hour: 23, minute: 59 };
101 };
102 beforeEach(() => {
103 component.contentData = contentData;
104 });
105
106 it('show all log', () => {
107 component.filterLogs();
108 expect(component.clog.length).toBe(4);
109 });
110
111 it('filter by search key', () => {
112 resetFilter();
113 component.search = 'Activating';
114 component.filterLogs();
115 expect(component.clog.length).toBe(1);
116 expect(component.clog[0].name).toBe('search');
117 });
118
119 it('filter by date', () => {
120 resetFilter();
121 component.selectedDate = { year: 2019, month: 1, day: 21 };
122 component.filterLogs();
123 expect(component.clog.length).toBe(1);
124 expect(component.clog[0].name).toBe('date');
125 });
126
127 it('filter by priority', () => {
128 resetFilter();
129 component.priority = '[ERR]';
130 component.filterLogs();
131 expect(component.clog.length).toBe(1);
132 expect(component.clog[0].name).toBe('priority');
133 });
134
135 it('filter by time range', () => {
136 resetFilter();
137 component.startTime = { hour: 1, minute: 0 };
138 component.endTime = { hour: 2, minute: 0 };
139 component.filterLogs();
140 expect(component.clog.length).toBe(1);
141 expect(component.clog[0].name).toBe('time');
142 });
143 });
144
145 describe('convert logs to text', () => {
146 it('convert cluster & audit logs to text', () => {
147 const logsPayload = {
148 clog: [
149 {
150 name: 'priority',
151 stamp: '2019-02-21 09:39:49.572801',
152 message: 'Manager daemon localhost is now available',
153 priority: '[ERR]'
154 }
155 ],
156 audit_log: [
157 {
158 stamp: '2020-12-22T11:18:13.896920+0000',
159 priority: '[INF]'
160 }
161 ]
162 };
163 logsServiceSpy.and.returnValue(of(logsPayload));
164 fixture.detectChanges();
165 expect(component.clogText).toContain(logsPayload.clog[0].message);
166 expect(component.auditLogText).toContain(logsPayload.audit_log[0].priority);
167 });
168 });
169 });