]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: fix cephfs form validator 53778/head
authorNizamudeen A <nia@redhat.com>
Wed, 27 Sep 2023 09:43:34 +0000 (15:13 +0530)
committerNizamudeen A <nia@redhat.com>
Tue, 3 Oct 2023 07:55:30 +0000 (13:25 +0530)
Number is not allowed as the starting character of the mds service

Fixes: https://tracker.ceph.com/issues/63005
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit fe8fa180d323500303f449be537ec2b7eae1a64a)

src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-form/cephfs-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-form/cephfs-form.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-form/cephfs-form.component.ts

index 8da9a74a50664486f16a2f23101e69013f98d7f8..f1bcd915571dbc0452e559bd2a3c377d76978491 100644 (file)
@@ -34,7 +34,7 @@
                   i18n>This field is required!</span>
             <span *ngIf="form.showError('name', formDir, 'pattern')"
                   class="invalid-feedback"
-                  i18n>File System name can only contain letters, numbers, '.', '-' or '_'</span>
+                  i18n>File System name should start with a letter and can only contain letters, numbers, '.', '-' or '_'</span>
           </div>
         </div>
 
index cf85a2128d770d156070b4df7fc0fc1ceebc69d8..5409131d97bbb9e485b6cee3069452bfac01f524 100644 (file)
@@ -1,15 +1,17 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
-import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { RouterTestingModule } from '@angular/router/testing';
 import { CephfsVolumeFormComponent } from './cephfs-form.component';
-import { configureTestBed } from '~/testing/unit-test-helper';
+import { FormHelper, configureTestBed } from '~/testing/unit-test-helper';
 import { SharedModule } from '~/app/shared/shared.module';
 import { ToastrModule } from 'ngx-toastr';
 import { ReactiveFormsModule } from '@angular/forms';
 describe('CephfsVolumeFormComponent', () => {
   let component: CephfsVolumeFormComponent;
   let fixture: ComponentFixture<CephfsVolumeFormComponent>;
+  let formHelper: FormHelper;
+
   configureTestBed({
     imports: [
       BrowserAnimationsModule,
@@ -24,9 +26,28 @@ describe('CephfsVolumeFormComponent', () => {
   beforeEach(() => {
     fixture = TestBed.createComponent(CephfsVolumeFormComponent);
     component = fixture.componentInstance;
+    formHelper = new FormHelper(component.form);
     fixture.detectChanges();
   });
+
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  it('should validate proper names', fakeAsync(() => {
+    const validNames = ['test', 'test1234', 'test_1234', 'test-1234', 'test.1234', 'test12test'];
+    const invalidNames = ['1234', 'test@', 'test)'];
+
+    for (const validName of validNames) {
+      formHelper.setValue('name', validName, true);
+      tick();
+      formHelper.expectValid('name');
+    }
+
+    for (const invalidName of invalidNames) {
+      formHelper.setValue('name', invalidName, true);
+      tick();
+      formHelper.expectError('name', 'pattern');
+    }
+  }));
 });
index 0e607e9a02b94df6dcf97807787b264e5d190fbd..7c607fa33d83e886f738f1fd5d42fcc3bdb72799 100644 (file)
@@ -80,7 +80,7 @@ export class CephfsVolumeFormComponent extends CdForm implements OnInit {
     });
     this.form = this.formBuilder.group({
       name: new FormControl('', {
-        validators: [Validators.pattern(/^[.A-Za-z0-9_-]+$/), Validators.required]
+        validators: [Validators.pattern(/^[a-zA-Z][.A-Za-z0-9_-]+$/), Validators.required]
       }),
       placement: ['hosts'],
       hosts: [[]],