UNPKG

@testlio/cli

Version:

Official Testlio platform command-line interface

95 lines (71 loc) 2.49 kB
#! /usr/bin/env node 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; } };