@microfocus/alm-octane-js-rest-sdk
Version:
NodeJS wrapper for the Open Text ALM Octane API
145 lines (144 loc) • 6.71 kB
JavaScript
;
/*
* Copyright 2020-2023 Open Text.
*
* The only warranties for products and services of Open Text and
* its affiliates and licensors (“Open Text”) are as may be set forth
* in the express warranty statements accompanying such products and services.
* Nothing herein should be construed as constituting an additional warranty.
* Open Text shall not be liable for technical or editorial errors or
* omissions contained herein. The information contained herein is subject
* to change without notice.
*
* Except as specifically indicated otherwise, this document contains
* confidential information and a valid license is required for possession,
* use or copying. If this work is provided to the U.S. Government,
* consistent with FAR 12.211 and 12.212, Commercial Computer Software,
* Computer Software Documentation, and Technical Data for Commercial Items are
* licensed to the U.S. Government under vendor's standard commercial license.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Note: This can only be tested if tech preview is *on* since attachments need tech preview to work
* correctly
*/
/* eslint-env mocha */
const assert_1 = __importDefault(require("assert"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const query_1 = __importDefault(require("../../../lib/query"));
const reference_1 = __importDefault(require("../../../lib/generate-routes/models/reference"));
const initializeOctaneClient = require('./helper').initializeOctaneClient;
describe('[attachments - vanilla]', function () {
// @ts-ignore
this.timeout(60000);
// @ts-ignore
this.slow(250);
const attachmentName = 'attachment.txt';
const attachmentFile = path_1.default.join(__dirname, 'attachment-test.txt');
const attachmentFileContent = 'This is an attachment test file.';
let client;
let defectId;
let attachmentID;
before('initialize the Octane client', function (done) {
const self = this;
initializeOctaneClient(function (err, aClient) {
if (err) {
const msg = err.message;
console.log('Aborted - %s', typeof msg === 'string' ? msg : JSON.stringify(msg));
self.skip();
}
else {
client = aClient;
fs_1.default.writeFileSync(attachmentFile, attachmentFileContent);
// create a defect for attachments
client.workItemRoots.getAll({ limit: 1 }, function (err, workItemRoots) {
assert_1.default.strictEqual(err, null);
assert_1.default.strictEqual(workItemRoots.length, 1);
client.severities.getAll({}, function (err, severities) {
assert_1.default.strictEqual(err, null);
(0, assert_1.default)(severities.length > 0);
const q = query_1.default.field('entity').equal('defect');
client.phases.getAll({ query: q }, function (err, phases) {
assert_1.default.strictEqual(err, null);
(0, assert_1.default)(phases.length > 0);
const defect = {
name: 'defectforattachment',
parent: workItemRoots[0],
severity: severities[0],
phase: phases[0],
};
client.defects.create(defect, function (err, defect) {
assert_1.default.strictEqual(err, null);
(0, assert_1.default)(defect.id);
defectId = defect.id;
createAttachment(done);
});
});
});
});
}
});
});
function createAttachment(done) {
const attachment = {
name: attachmentName,
file: attachmentFile,
owner_work_item: new reference_1.default(defectId, 'work_item'),
};
client.attachments.create(attachment, function (err, attachment) {
assert_1.default.strictEqual(err, null);
(0, assert_1.default)(attachment.id);
attachmentID = attachment.id;
done();
});
}
after('delete the temporary test file', function (done) {
if (fs_1.default.existsSync(attachmentFile)) {
fs_1.default.unlinkSync(attachmentFile);
}
client.defects.delete({ id: defectId }, function () {
done();
});
});
it('should successfully get all attachments list', function (done) {
client.attachments.getAll({}, function (err, attachments) {
assert_1.default.strictEqual(err, null);
(0, assert_1.default)(attachments.meta.total_count > 0);
done();
});
});
it('should successfully get the attachment entity data', function (done) {
client.attachments.get({ id: attachmentID, fields: 'name' }, function (err, attachment) {
assert_1.default.strictEqual(err, null);
assert_1.default.strictEqual(attachment.name, attachmentName);
done();
});
});
it('should successfully get the attachment binary data', function (done) {
client.attachments.download({ id: attachmentID, filename: attachmentName }, function (err, data) {
assert_1.default.strictEqual(err, null);
assert_1.default.strictEqual(data.toString(), attachmentFileContent);
done();
});
});
it('should successfully delete the attachment', function (done) {
client.attachments.delete({ id: attachmentID }, function (err) {
assert_1.default.strictEqual(err, null);
done();
});
});
});