@testlio/cli
Version:
Official Testlio platform command-line interface
95 lines (71 loc) • 2.49 kB
JavaScript
const fs = require('fs');
const axios = require('axios');
const Joi = require('joi');
const FAILURE = 1;
const SUCCESS = 0;
const printHelp = () => {
console.log(`Finalize results
Usage:
testlio finalize-results
Options:
--projectConfig [path] path to project config (default: project-config.json)
`);
};
const setAuthorizationToken = (token) => {
axios.defaults.headers.common.Authorization = `Bearer ${token}`;
};
const setBaseUri = (baseURI) => {
axios.defaults.baseURL = baseURI;
};
const projectConfigSchema = Joi.object({
baseURI: Joi.string().required(),
resultCollectionGuid: Joi.string().required()
});
const parseRunResultsSchema = Joi.object({
projectConfig: Joi.string().default('project-config.json')
});
const finalizeResults = async (resultCollectionGuid, resultId) => {
const { data, status } = await axios.put(
`/result/v1/collections/${resultCollectionGuid}/results/${resultId}/finalize`
);
if (status !== 200) {
throw new Error(`Failed to finalize result with id ${resultId}`);
}
return data;
};
module.exports = async (params) => {
if (params.h || params.help) {
printHelp();
return;
}
const { projectConfig: projectConfigFilePath } = Joi.attempt(params, parseRunResultsSchema);
if (!fs.existsSync(projectConfigFilePath)) {
console.log(`File "${projectConfigFilePath}" not found!`);
return FAILURE;
}
try {
const projectConfig = JSON.parse(fs.readFileSync(projectConfigFilePath).toString());
const { baseURI, resultCollectionGuid } = Joi.attempt(projectConfig, projectConfigSchema.unknown());
if (!process.env.RUN_API_TOKEN) {
console.log('Please provide RUN API TOKEN');
return FAILURE;
}
if (!process.env.RESULT_ID) {
console.log('For finalizing results, RESULT_ID must be provided');
return FAILURE;
}
setBaseUri(baseURI);
setAuthorizationToken(process.env.RUN_API_TOKEN);
const result = await finalizeResults(resultCollectionGuid, process.env.RESULT_ID);
if (!result?.finalised) {
console.log('Run finalization failed');
return FAILURE;
}
console.log('Run finalized successfully');
return SUCCESS;
} catch (e) {
console.log('Something went wrong while finalizing results', e);
return FAILURE;
}
};