2 HttpClientTestingModule,
5 } from '@angular/common/http/testing';
6 import { ComponentFixture, TestBed } from '@angular/core/testing';
7 import { ReactiveFormsModule } from '@angular/forms';
8 import { By } from '@angular/platform-browser';
9 import { RouterTestingModule } from '@angular/router/testing';
11 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
12 import { ToastrModule } from 'ngx-toastr';
19 } from '../../../../testing/unit-test-helper';
20 import { Permission } from '../../../shared/models/permissions';
21 import { SharedModule } from '../../../shared/shared.module';
22 import { IscsiTargetDiscoveryModalComponent } from './iscsi-target-discovery-modal.component';
24 describe('IscsiTargetDiscoveryModalComponent', () => {
25 let component: IscsiTargetDiscoveryModalComponent;
26 let fixture: ComponentFixture<IscsiTargetDiscoveryModalComponent>;
27 let httpTesting: HttpTestingController;
30 const elem = (css: string) => fixture.debugElement.query(By.css(css));
31 const elemDisabled = (css: string) => elem(css).nativeElement.disabled;
34 declarations: [IscsiTargetDiscoveryModalComponent],
36 HttpClientTestingModule,
39 ToastrModule.forRoot(),
42 providers: [i18nProviders, NgbActiveModal]
46 fixture = TestBed.createComponent(IscsiTargetDiscoveryModalComponent);
47 component = fixture.componentInstance;
48 httpTesting = TestBed.inject(HttpTestingController);
51 describe('with update permissions', () => {
53 component.permission = new Permission(['update']);
54 fixture.detectChanges();
55 req = httpTesting.expectOne('api/iscsi/discoveryauth');
58 it('should create', () => {
59 expect(component).toBeTruthy();
62 it('should create form', () => {
63 expect(component.discoveryForm.value).toEqual({
71 it('should patch form', () => {
75 mutual_user: 'mutual_foo',
76 mutual_password: 'mutual_bar'
78 expect(component.discoveryForm.value).toEqual({
81 mutual_user: 'mutual_foo',
82 mutual_password: 'mutual_bar'
86 it('should submit new values', () => {
87 component.discoveryForm.patchValue({
90 mutual_user: 'mutual_new_user',
91 mutual_password: 'mutual_new_pass'
93 component.submitAction();
95 const submit_req = httpTesting.expectOne('api/iscsi/discoveryauth');
96 expect(submit_req.request.method).toBe('PUT');
97 expect(submit_req.request.body).toEqual({
100 mutual_user: 'mutual_new_user',
101 mutual_password: 'mutual_new_pass'
105 it('should enable form if user has update permission', () => {
106 expect(elemDisabled('input#user')).toBeFalsy();
107 expect(elemDisabled('input#password')).toBeFalsy();
108 expect(elemDisabled('input#mutual_user')).toBeFalsy();
109 expect(elemDisabled('input#mutual_password')).toBeFalsy();
110 expect(elem('cd-submit-button')).toBeDefined();
114 it('should disabled form if user does not have update permission', () => {
115 component.permission = new Permission(['read', 'create', 'delete']);
116 fixture.detectChanges();
117 req = httpTesting.expectOne('api/iscsi/discoveryauth');
119 expect(elemDisabled('input#user')).toBeTruthy();
120 expect(elemDisabled('input#password')).toBeTruthy();
121 expect(elemDisabled('input#mutual_user')).toBeTruthy();
122 expect(elemDisabled('input#mutual_password')).toBeTruthy();
123 expect(elem('cd-submit-button')).toBeNull();
126 it('should validate authentication', () => {
127 component.permission = new Permission(['read', 'create', 'update', 'delete']);
128 fixture.detectChanges();
129 const control = component.discoveryForm;
130 const formHelper = new FormHelper(control);
131 formHelper.expectValid(control);
133 IscsiHelper.validateUser(formHelper, 'user');
134 IscsiHelper.validatePassword(formHelper, 'password');
135 IscsiHelper.validateUser(formHelper, 'mutual_user');
136 IscsiHelper.validatePassword(formHelper, 'mutual_password');