1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { ComponentFixture, TestBed } from '@angular/core/testing';
3 import { ReactiveFormsModule } from '@angular/forms';
4 import { RouterTestingModule } from '@angular/router/testing';
6 import * as _ from 'lodash';
7 import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
8 import { ToastrModule } from 'ngx-toastr';
14 } from '../../../../../testing/unit-test-helper';
15 import { CephServiceService } from '../../../../shared/api/ceph-service.service';
16 import { CdFormGroup } from '../../../../shared/forms/cd-form-group';
17 import { SharedModule } from '../../../../shared/shared.module';
18 import { ServiceFormComponent } from './service-form.component';
20 describe('ServiceFormComponent', () => {
21 let component: ServiceFormComponent;
22 let fixture: ComponentFixture<ServiceFormComponent>;
23 let cephServiceService: CephServiceService;
24 let form: CdFormGroup;
25 let formHelper: FormHelper;
28 declarations: [ServiceFormComponent],
30 HttpClientTestingModule,
35 ToastrModule.forRoot()
37 providers: [i18nProviders]
41 fixture = TestBed.createComponent(ServiceFormComponent);
42 component = fixture.componentInstance;
43 form = component.serviceForm;
44 formHelper = new FormHelper(form);
45 fixture.detectChanges();
48 it('should create', () => {
49 expect(component).toBeTruthy();
52 describe('should test form', () => {
54 cephServiceService = TestBed.get(CephServiceService);
55 spyOn(cephServiceService, 'create').and.stub();
58 it('should test placement (host)', () => {
59 formHelper.setValue('service_type', 'crash');
60 formHelper.setValue('placement', 'hosts');
61 formHelper.setValue('hosts', ['mgr0', 'mon0', 'osd0']);
62 formHelper.setValue('count', 2);
64 expect(cephServiceService.create).toHaveBeenCalledWith({
65 service_type: 'crash',
67 hosts: ['mgr0', 'mon0', 'osd0'],
74 it('should test placement (label)', () => {
75 formHelper.setValue('service_type', 'mgr');
76 formHelper.setValue('placement', 'label');
77 formHelper.setValue('label', 'foo');
79 expect(cephServiceService.create).toHaveBeenCalledWith({
88 it('should submit valid count', () => {
89 formHelper.setValue('count', 1);
91 formHelper.expectValid('count');
94 it('should submit invalid count (1)', () => {
95 formHelper.setValue('count', 0);
97 formHelper.expectError('count', 'min');
100 it('should submit invalid count (2)', () => {
101 formHelper.setValue('count', 'abc');
102 component.onSubmit();
103 formHelper.expectError('count', 'pattern');
106 it('should test unmanaged', () => {
107 formHelper.setValue('service_type', 'rgw');
108 formHelper.setValue('placement', 'label');
109 formHelper.setValue('label', 'bar');
110 formHelper.setValue('rgw_frontend_port', 4567);
111 formHelper.setValue('unmanaged', true);
112 component.onSubmit();
113 expect(cephServiceService.create).toHaveBeenCalledWith({
120 it('should test various services', () => {
134 formHelper.setValue('service_type', serviceType);
135 component.onSubmit();
136 expect(cephServiceService.create).toHaveBeenCalledWith({
137 service_type: serviceType,
145 describe('should test service nfs', () => {
147 formHelper.setValue('service_type', 'nfs');
148 formHelper.setValue('pool', 'foo');
151 it('should submit nfs with namespace', () => {
152 formHelper.setValue('namespace', 'bar');
153 component.onSubmit();
154 expect(cephServiceService.create).toHaveBeenCalledWith({
163 it('should submit nfs w/o namespace', () => {
164 component.onSubmit();
165 expect(cephServiceService.create).toHaveBeenCalledWith({
174 describe('should test service rgw', () => {
176 formHelper.setValue('service_type', 'rgw');
179 it('should test rgw valid service id', () => {
180 formHelper.setValue('service_id', 'foo.bar');
181 formHelper.expectValid('service_id');
182 formHelper.setValue('service_id', 'foo.bar.bas');
183 formHelper.expectValid('service_id');
186 it('should test rgw invalid service id', () => {
187 formHelper.setValue('service_id', 'foo');
188 formHelper.expectError('service_id', 'rgwPattern');
189 formHelper.setValue('service_id', 'foo.');
190 formHelper.expectError('service_id', 'rgwPattern');
191 formHelper.setValue('service_id', 'foo.bar.');
192 formHelper.expectError('service_id', 'rgwPattern');
193 formHelper.setValue('service_id', 'foo.bar.bas.');
194 formHelper.expectError('service_id', 'rgwPattern');
197 it('should submit rgw with port', () => {
198 formHelper.setValue('rgw_frontend_port', 1234);
199 formHelper.setValue('ssl', true);
200 component.onSubmit();
201 expect(cephServiceService.create).toHaveBeenCalledWith({
205 rgw_frontend_port: 1234,
206 rgw_frontend_ssl_certificate: '',
207 rgw_frontend_ssl_key: '',
212 it('should submit valid rgw port (1)', () => {
213 formHelper.setValue('rgw_frontend_port', 1);
214 component.onSubmit();
215 formHelper.expectValid('rgw_frontend_port');
218 it('should submit valid rgw port (2)', () => {
219 formHelper.setValue('rgw_frontend_port', 65535);
220 component.onSubmit();
221 formHelper.expectValid('rgw_frontend_port');
224 it('should submit invalid rgw port (1)', () => {
225 formHelper.setValue('rgw_frontend_port', 0);
226 component.onSubmit();
227 formHelper.expectError('rgw_frontend_port', 'min');
230 it('should submit invalid rgw port (2)', () => {
231 formHelper.setValue('rgw_frontend_port', 65536);
232 component.onSubmit();
233 formHelper.expectError('rgw_frontend_port', 'max');
236 it('should submit invalid rgw port (3)', () => {
237 formHelper.setValue('rgw_frontend_port', 'abc');
238 component.onSubmit();
239 formHelper.expectError('rgw_frontend_port', 'pattern');
242 it('should submit rgw w/o port', () => {
243 formHelper.setValue('ssl', false);
244 component.onSubmit();
245 expect(cephServiceService.create).toHaveBeenCalledWith({
254 describe('should test service iscsi', () => {
256 formHelper.setValue('service_type', 'iscsi');
257 formHelper.setValue('pool', 'xyz');
258 formHelper.setValue('api_user', 'user');
259 formHelper.setValue('api_password', 'password');
260 formHelper.setValue('ssl', false);
263 it('should submit iscsi', () => {
264 component.onSubmit();
265 expect(cephServiceService.create).toHaveBeenCalledWith({
266 service_type: 'iscsi',
271 api_password: 'password',
276 it('should submit iscsi with trusted ips', () => {
277 formHelper.setValue('ssl', true);
278 formHelper.setValue('trusted_ip_list', ' 172.16.0.5, 192.1.1.10 ');
279 component.onSubmit();
280 expect(cephServiceService.create).toHaveBeenCalledWith({
281 service_type: 'iscsi',
286 api_password: 'password',
290 trusted_ip_list: ['172.16.0.5', '192.1.1.10']
294 it('should submit iscsi with port', () => {
295 formHelper.setValue('api_port', 456);
296 component.onSubmit();
297 expect(cephServiceService.create).toHaveBeenCalledWith({
298 service_type: 'iscsi',
303 api_password: 'password',
309 it('should submit valid iscsi port (1)', () => {
310 formHelper.setValue('api_port', 1);
311 component.onSubmit();
312 formHelper.expectValid('api_port');
315 it('should submit valid iscsi port (2)', () => {
316 formHelper.setValue('api_port', 65535);
317 component.onSubmit();
318 formHelper.expectValid('api_port');
321 it('should submit invalid iscsi port (1)', () => {
322 formHelper.setValue('api_port', 0);
323 component.onSubmit();
324 formHelper.expectError('api_port', 'min');
327 it('should submit invalid iscsi port (2)', () => {
328 formHelper.setValue('api_port', 65536);
329 component.onSubmit();
330 formHelper.expectError('api_port', 'max');
333 it('should submit invalid iscsi port (3)', () => {
334 formHelper.setValue('api_port', 'abc');
335 component.onSubmit();
336 formHelper.expectError('api_port', 'pattern');