]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-message.service.spec.ts
import 15.2.0 Octopus source
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / task-message.service.spec.ts
index a5c22bc8cfab1abdc23d8197c85479f556ef2ce4..667bef7da59033943ce332c7065ccf97f74f8433 100644 (file)
@@ -2,7 +2,9 @@ import { TestBed } from '@angular/core/testing';
 
 import * as _ from 'lodash';
 
+import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { configureTestBed, i18nProviders } from '../../../testing/unit-test-helper';
+import { RbdService } from '../api/rbd.service';
 import { FinishedTask } from '../models/finished-task';
 import { TaskException } from '../models/task-exception';
 import { TaskMessageOperation, TaskMessageService } from './task-message.service';
@@ -12,12 +14,14 @@ describe('TaskManagerMessageService', () => {
   let finishedTask: FinishedTask;
 
   configureTestBed({
-    providers: [TaskMessageService, i18nProviders]
+    providers: [TaskMessageService, i18nProviders, RbdService],
+    imports: [HttpClientTestingModule]
   });
 
   beforeEach(() => {
     service = TestBed.get(TaskMessageService);
     finishedTask = new FinishedTask();
+    finishedTask.duration = 30;
   });
 
   it('should be created', () => {
@@ -48,7 +52,7 @@ describe('TaskManagerMessageService', () => {
       expect(service.getErrorTitle(finishedTask)).toBe(
         'Failed to ' + operation.failure + ' ' + involves
       );
-      expect(service.getSuccessTitle(finishedTask)).toBe(operation.success + ' ' + involves);
+      expect(service.getSuccessTitle(finishedTask)).toBe(`${operation.success} ${involves}`);
     };
 
     const testCreate = (involves: string) => {
@@ -63,6 +67,10 @@ describe('TaskManagerMessageService', () => {
       testMessages(new TaskMessageOperation('Deleting', 'delete', 'Deleted'), involves);
     };
 
+    const testImport = (involves: string) => {
+      testMessages(new TaskMessageOperation('Importing', 'import', 'Imported'), involves);
+    };
+
     const testErrorCode = (code: number, msg: string) => {
       finishedTask.exception = _.assign(new TaskException(), {
         code: code
@@ -118,8 +126,29 @@ describe('TaskManagerMessageService', () => {
       });
     });
 
+    describe('crush rule tasks', () => {
+      beforeEach(() => {
+        const metadata = {
+          name: 'someRuleName'
+        };
+        defaultMsg = `crush rule '${metadata.name}'`;
+        finishedTask.metadata = metadata;
+      });
+
+      it('tests crushRule/create messages', () => {
+        finishedTask.name = 'crushRule/create';
+        testCreate(defaultMsg);
+        testErrorCode(17, `Name is already used by ${defaultMsg}.`);
+      });
+
+      it('tests crushRule/delete messages', () => {
+        finishedTask.name = 'crushRule/delete';
+        testDelete(defaultMsg);
+      });
+    });
+
     describe('rbd tasks', () => {
-      let metadata;
+      let metadata: Record<string, any>;
       let childMsg: string;
       let destinationMsg: string;
       let snapMsg: string;
@@ -128,20 +157,20 @@ describe('TaskManagerMessageService', () => {
         metadata = {
           pool_name: 'somePool',
           image_name: 'someImage',
+          image_id: '12345',
+          image_spec: 'somePool/someImage',
+          image_id_spec: 'somePool/12345',
           snapshot_name: 'someSnapShot',
           dest_pool_name: 'someDestinationPool',
           dest_image_name: 'someDestinationImage',
           child_pool_name: 'someChildPool',
           child_image_name: 'someChildImage',
-          new_image_name: 'newImage',
-          image_id: '12345'
+          new_image_name: 'someImage2'
         };
         defaultMsg = `RBD '${metadata.pool_name}/${metadata.image_name}'`;
         childMsg = `RBD '${metadata.child_pool_name}/${metadata.child_image_name}'`;
         destinationMsg = `RBD '${metadata.dest_pool_name}/${metadata.dest_image_name}'`;
-        snapMsg = `RBD snapshot '${metadata.pool_name}/${metadata.image_name}@${
-          metadata.snapshot_name
-        }'`;
+        snapMsg = `RBD snapshot '${metadata.pool_name}/${metadata.image_name}@${metadata.snapshot_name}'`;
         finishedTask.metadata = metadata;
       });
 
@@ -160,6 +189,7 @@ describe('TaskManagerMessageService', () => {
       it('tests rbd/delete messages', () => {
         finishedTask.name = 'rbd/delete';
         testDelete(defaultMsg);
+        testErrorCode(16, `${defaultMsg} is busy.`);
         testErrorCode(39, `${defaultMsg} contains snapshots.`);
       });
 
@@ -208,7 +238,7 @@ describe('TaskManagerMessageService', () => {
         finishedTask.name = 'rbd/trash/move';
         testMessages(
           new TaskMessageOperation('Moving', 'move', 'Moved'),
-          `image '${metadata.pool_name}/${metadata.image_name}' to trash`
+          `image '${metadata.image_spec}' to trash`
         );
         testErrorCode(2, `Could not find image.`);
       });
@@ -217,18 +247,14 @@ describe('TaskManagerMessageService', () => {
         finishedTask.name = 'rbd/trash/restore';
         testMessages(
           new TaskMessageOperation('Restoring', 'restore', 'Restored'),
-          `image '${metadata.pool_name}@${metadata.image_id}' ` +
-            `into '${metadata.pool_name}/${metadata.new_image_name}'`
-        );
-        testErrorCode(
-          17,
-          `Image name '${metadata.pool_name}/${metadata.new_image_name}' is already in use.`
+          `image '${metadata.image_id_spec}' ` + `into '${metadata.new_image_name}'`
         );
+        testErrorCode(17, `Image name '${metadata.new_image_name}' is already in use.`);
       });
 
       it('tests rbd/trash/remove messages', () => {
         finishedTask.name = 'rbd/trash/remove';
-        testDelete(`image '${metadata.pool_name}/${metadata.image_name}@${metadata.image_id}'`);
+        testDelete(`image '${metadata.image_id_spec}'`);
       });
 
       it('tests rbd/trash/purge messages', () => {
@@ -252,6 +278,18 @@ describe('TaskManagerMessageService', () => {
         peerMsg = `mirror peer for pool '${metadata.pool_name}'`;
         finishedTask.metadata = metadata;
       });
+      it('tests rbd/mirroring/site_name/edit messages', () => {
+        finishedTask.name = 'rbd/mirroring/site_name/edit';
+        testUpdate('mirroring site name');
+      });
+      it('tests rbd/mirroring/bootstrap/create messages', () => {
+        finishedTask.name = 'rbd/mirroring/bootstrap/create';
+        testCreate('bootstrap token');
+      });
+      it('tests rbd/mirroring/bootstrap/import messages', () => {
+        finishedTask.name = 'rbd/mirroring/bootstrap/import';
+        testImport('bootstrap token');
+      });
       it('tests rbd/mirroring/pool/edit messages', () => {
         finishedTask.name = 'rbd/mirroring/pool/edit';
         testUpdate(modeMsg);