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';
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', () => {
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) => {
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
});
});
+ 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;
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;
});
it('tests rbd/delete messages', () => {
finishedTask.name = 'rbd/delete';
testDelete(defaultMsg);
+ testErrorCode(16, `${defaultMsg} is busy.`);
testErrorCode(39, `${defaultMsg} contains snapshots.`);
});
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.`);
});
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', () => {
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);