Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 78 additions & 45 deletions lib/Utils/CommonUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
Expand All @@ -32,7 +42,44 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAllFileErrors = exports.validateTestRunParamsFromPipeline = exports.getDefaultRunDescription = exports.getDefaultTestRunName = exports.getDefaultTestName = exports.inValidEngineInstances = exports.invalidName = exports.validateUrlcert = exports.validateUrl = exports.validateOutputParametervariableName = exports.validateOverRideParameters = exports.validateAndGetSegregatedManagedIdentities = exports.validateAutoStop = exports.getSubscriptionIdFromResourceId = exports.getResourceGroupFromResourceId = exports.getResourceNameFromResourceId = exports.getResourceTypeFromResourceId = exports.invalidDescription = exports.invalidDisplayName = exports.getFileName = exports.getResultObj = exports.isStatusFailed = exports.isTerminalFileStatusSucceeded = exports.isTerminalFileStatus = exports.isTerminalTestStatus = exports.removeUnits = exports.indexOfFirstDigit = exports.getReportFolder = exports.getResultFolder = exports.getUniqueId = exports.sleep = exports.printClientMetrics = exports.errorCorrection = exports.printCriteria = exports.printTestDuration = exports.checkFileTypes = exports.checkFileType = void 0;
exports.checkFileType = checkFileType;
exports.checkFileTypes = checkFileTypes;
exports.printTestDuration = printTestDuration;
exports.printCriteria = printCriteria;
exports.errorCorrection = errorCorrection;
exports.printClientMetrics = printClientMetrics;
exports.sleep = sleep;
exports.getUniqueId = getUniqueId;
exports.getResultFolder = getResultFolder;
exports.getReportFolder = getReportFolder;
exports.indexOfFirstDigit = indexOfFirstDigit;
exports.removeUnits = removeUnits;
exports.isTerminalTestStatus = isTerminalTestStatus;
exports.isTerminalFileStatus = isTerminalFileStatus;
exports.isTerminalFileStatusSucceeded = isTerminalFileStatusSucceeded;
exports.isStatusFailed = isStatusFailed;
exports.getResultObj = getResultObj;
exports.getFileName = getFileName;
exports.invalidDisplayName = invalidDisplayName;
exports.invalidDescription = invalidDescription;
exports.getResourceTypeFromResourceId = getResourceTypeFromResourceId;
exports.getResourceNameFromResourceId = getResourceNameFromResourceId;
exports.getResourceGroupFromResourceId = getResourceGroupFromResourceId;
exports.getSubscriptionIdFromResourceId = getSubscriptionIdFromResourceId;
exports.validateAutoStop = validateAutoStop;
exports.validateAndGetSegregatedManagedIdentities = validateAndGetSegregatedManagedIdentities;
exports.validateOverRideParameters = validateOverRideParameters;
exports.validateOutputParametervariableName = validateOutputParametervariableName;
exports.validateUrl = validateUrl;
exports.validateUrlcert = validateUrlcert;
exports.invalidName = invalidName;
exports.inValidEngineInstances = inValidEngineInstances;
exports.getDefaultTestName = getDefaultTestName;
exports.getDefaultTestRunName = getDefaultTestRunName;
exports.getDefaultRunDescription = getDefaultRunDescription;
exports.validateTestRunParamsFromPipeline = validateTestRunParamsFromPipeline;
exports.getAllFileErrors = getAllFileErrors;
exports.sanitisePipelineNameHeader = sanitisePipelineNameHeader;
const { v4: uuidv4 } = require('uuid');
const util_1 = require("util");
const GeneralConstants_1 = require("../Constants/GeneralConstants");
Expand All @@ -47,7 +94,6 @@ function checkFileType(filePath, fileExtToValidate) {
let split = filePath.split('.');
return split[split.length - 1].toLowerCase() == fileExtToValidate.toLowerCase();
}
exports.checkFileType = checkFileType;
function checkFileTypes(filePath, fileExtsToValidate) {
var _a;
if ((0, util_1.isNullOrUndefined)(filePath)) {
Expand All @@ -57,7 +103,6 @@ function checkFileTypes(filePath, fileExtsToValidate) {
let fileExtsToValidateLower = fileExtsToValidate.map(ext => ext.toLowerCase());
return fileExtsToValidateLower.includes((_a = split[split.length - 1]) === null || _a === void 0 ? void 0 : _a.toLowerCase());
}
exports.checkFileTypes = checkFileTypes;
function printTestDuration(testRunObj) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b;
Expand All @@ -70,7 +115,6 @@ function printTestDuration(testRunObj) {
return;
});
}
exports.printTestDuration = printTestDuration;
function printCriteria(criteria) {
if (Object.keys(criteria).length == 0)
return;
Expand Down Expand Up @@ -99,11 +143,9 @@ function printCriteria(criteria) {
}
console.log("\n");
}
exports.printCriteria = printCriteria;
function errorCorrection(result) {
return "Unable to fetch the response. Please re-run or contact support if the issue persists. " + "Status code :" + result.message.statusCode;
}
exports.errorCorrection = errorCorrection;
function printTestResult(criteria) {
var _a, _b;
let pass = 0;
Expand Down Expand Up @@ -142,7 +184,6 @@ function printClientMetrics(obj) {
}
});
}
exports.printClientMetrics = printClientMetrics;
function getAbsVal(data) {
if ((0, util_1.isNullOrUndefined)(data)) {
return "undefined";
Expand All @@ -156,69 +197,59 @@ function sleep(ms) {
setTimeout(resolve, ms);
});
}
exports.sleep = sleep;
function getUniqueId() {
return uuidv4();
}
exports.getUniqueId = getUniqueId;
function getResultFolder(testArtifacts) {
if ((0, util_1.isNullOrUndefined)(testArtifacts) || (0, util_1.isNullOrUndefined)(testArtifacts.outputArtifacts))
return null;
var outputurl = testArtifacts.outputArtifacts;
return !(0, util_1.isNullOrUndefined)(outputurl.resultFileInfo) ? outputurl.resultFileInfo.url : null;
}
exports.getResultFolder = getResultFolder;
function getReportFolder(testArtifacts) {
if ((0, util_1.isNullOrUndefined)(testArtifacts) || (0, util_1.isNullOrUndefined)(testArtifacts.outputArtifacts))
return null;
var outputurl = testArtifacts.outputArtifacts;
return !(0, util_1.isNullOrUndefined)(outputurl.reportFileInfo) ? outputurl.reportFileInfo.url : null;
}
exports.getReportFolder = getReportFolder;
function indexOfFirstDigit(input) {
let i = 0;
for (; input[i] < '0' || input[i] > '9'; i++)
;
return i == input.length ? -1 : i;
}
exports.indexOfFirstDigit = indexOfFirstDigit;
function removeUnits(input) {
let i = 0;
for (; input[i] >= '0' && input[i] <= '9'; i++)
;
return i == input.length ? input : input.substring(0, i);
}
exports.removeUnits = removeUnits;
function isTerminalTestStatus(testStatus) {
if (testStatus == "DONE" || testStatus === "FAILED" || testStatus === "CANCELLED") {
return true;
}
return false;
}
exports.isTerminalTestStatus = isTerminalTestStatus;
function isTerminalFileStatus(fileStatus) {
let fileStatusEnum = fileStatus;
if (fileStatusEnum == PayloadModels_1.FileStatus.VALIDATION_INITIATED) {
return false;
}
return true;
}
exports.isTerminalFileStatus = isTerminalFileStatus;
function isTerminalFileStatusSucceeded(fileStatus) {
let fileStatusEnum = fileStatus;
if ((0, util_1.isNullOrUndefined)(fileStatusEnum) || fileStatusEnum == PayloadModels_1.FileStatus.VALIDATION_SUCCESS || fileStatusEnum == PayloadModels_1.FileStatus.NOT_VALIDATED) {
return true;
}
return false;
}
exports.isTerminalFileStatusSucceeded = isTerminalFileStatusSucceeded;
function isStatusFailed(testStatus) {
if (testStatus === "FAILED" || testStatus === "CANCELLED") {
return true;
}
return false;
}
exports.isStatusFailed = isStatusFailed;
function getResultObj(data) {
return __awaiter(this, void 0, void 0, function* () {
let dataString;
Expand All @@ -233,40 +264,32 @@ function getResultObj(data) {
}
});
}
exports.getResultObj = getResultObj;
function getFileName(filepath) {
const filename = path.basename(filepath);
return filename;
}
exports.getFileName = getFileName;
function invalidDisplayName(value) {
if (value.length < 2 || value.length > 50)
return true;
return false;
}
exports.invalidDisplayName = invalidDisplayName;
function invalidDescription(value) {
if (value.length > 100)
return true;
return false;
}
exports.invalidDescription = invalidDescription;
function getResourceTypeFromResourceId(resourceId) {
return resourceId && resourceId.split("/").length > 7 ? resourceId.split("/")[6] + "/" + resourceId.split("/")[7] : null;
}
exports.getResourceTypeFromResourceId = getResourceTypeFromResourceId;
function getResourceNameFromResourceId(resourceId) {
return resourceId && resourceId.split("/").length > 8 ? resourceId.split("/")[8] : null;
}
exports.getResourceNameFromResourceId = getResourceNameFromResourceId;
function getResourceGroupFromResourceId(resourceId) {
return resourceId && resourceId.split("/").length > 4 ? resourceId.split("/")[4] : null;
}
exports.getResourceGroupFromResourceId = getResourceGroupFromResourceId;
function getSubscriptionIdFromResourceId(resourceId) {
return resourceId && resourceId.split("/").length > 2 ? resourceId.split("/")[2] : null;
}
exports.getSubscriptionIdFromResourceId = getSubscriptionIdFromResourceId;
function validateAutoStop(autoStop, isPipelineParam = false) {
if (typeof autoStop != 'string') {
if ((0, util_1.isNullOrUndefined)(autoStop.errorPercentage) || isNaN(autoStop.errorPercentage) || autoStop.errorPercentage > 100 || autoStop.errorPercentage < 0) {
Expand All @@ -290,7 +313,6 @@ function validateAutoStop(autoStop, isPipelineParam = false) {
}
return { valid: true, error: "" };
}
exports.validateAutoStop = validateAutoStop;
function validateAndGetSegregatedManagedIdentities(referenceIdentities, keyVaultGivenOutOfReferenceIdentities = false) {
let referenceIdentityValuesUAMIMap = {
[UtilModels_1.ReferenceIdentityKinds.KeyVault]: [],
Expand Down Expand Up @@ -337,7 +359,6 @@ function validateAndGetSegregatedManagedIdentities(referenceIdentities, keyVault
}
return { referenceIdentityValuesUAMIMap, referenceIdentiesSystemAssignedCount };
}
exports.validateAndGetSegregatedManagedIdentities = validateAndGetSegregatedManagedIdentities;
function validateOverRideParameters(overRideParams) {
try {
if (!(0, util_1.isNullOrUndefined)(overRideParams)) {
Expand Down Expand Up @@ -393,64 +414,54 @@ function validateOverRideParameters(overRideParams) {
}
return { valid: true, error: "" };
}
exports.validateOverRideParameters = validateOverRideParameters;
function validateOutputParametervariableName(outputVarName) {
if ((0, util_1.isNullOrUndefined)(outputVarName) || typeof outputVarName != 'string' || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(outputVarName)) {
return { valid: false, error: `Invalid output variable name '${outputVarName}'. Use only letters, numbers, and underscores.` };
}
return { valid: true, error: "" };
}
exports.validateOutputParametervariableName = validateOutputParametervariableName;
function validateUrl(url) {
var r = new RegExp(/(http|https):\/\/.*\/secrets\/.+$/);
return r.test(url);
}
exports.validateUrl = validateUrl;
function validateUrlcert(url) {
var r = new RegExp(/(http|https):\/\/.*\/certificates\/.+$/);
return r.test(url);
}
exports.validateUrlcert = validateUrlcert;
function invalidName(value) {
if (value.length < 2 || value.length > 50)
return true;
var r = new RegExp(/[^a-z0-9_-]+/);
return r.test(value);
}
exports.invalidName = invalidName;
function inValidEngineInstances(engines) {
if (engines > 400 || engines < 1) {
return true;
}
return false;
}
exports.inValidEngineInstances = inValidEngineInstances;
function getDefaultTestName() {
const a = (new Date(Date.now())).toLocaleString();
const b = a.split(", ");
const c = a.split(" ");
return "Test_" + b[0] + "_" + c[1] + c[2];
}
exports.getDefaultTestName = getDefaultTestName;
function getDefaultTestRunName() {
const a = (new Date(Date.now())).toLocaleString();
const b = a.split(", ");
const c = a.split(" ");
return "TestRun_" + b[0] + "_" + c[1] + c[2];
}
exports.getDefaultTestRunName = getDefaultTestRunName;
function getDefaultRunDescription() {
const pipelineName = process.env.GITHUB_WORKFLOW || "Unknown Pipeline";
return "Started using GH workflows" + (pipelineName ? "-" + pipelineName : "");
}
exports.getDefaultRunDescription = getDefaultRunDescription;
function validateTestRunParamsFromPipeline(runTimeParams) {
if (runTimeParams.runDisplayName && invalidDisplayName(runTimeParams.runDisplayName))
throw new Error("Invalid test run name. Test run name must be between 2 to 50 characters.");
if (runTimeParams.runDescription && invalidDescription(runTimeParams.runDescription))
throw new Error("Invalid test run description. Test run description must be less than 100 characters.");
}
exports.validateTestRunParamsFromPipeline = validateTestRunParamsFromPipeline;
function getAllFileErrors(testObj) {
var _a, _b, _c, _d, _e, _f;
let allArtifacts = [];
Expand All @@ -474,4 +485,26 @@ function getAllFileErrors(testObj) {
}
return fileErrors;
}
exports.getAllFileErrors = getAllFileErrors;
/**
* This function returns the string with only ascii charaters, removing the non-ascii characters.
* @param pipelineName - original pipeline name
* @returns sanitised pipeline name with only ascii characters
*/
function sanitisePipelineNameHeader(pipelineName) {
if (!pipelineName) {
return pipelineName;
}
let result = "";
for (const ch of pipelineName) {
const code = ch.codePointAt(0);
const allowed = (code >= 32 && code <= 126); // ASCII characters range, the only allowed characters in headers.
if (allowed) {
result += ch;
}
}
result = result.trim();
if (result.length == 0) {
result = "-"; // this is what GH does when i try to give all non-ascii characters in the repo name.
}
return result;
}
Loading
Loading