Skip to content

Commit

Permalink
Merge pull request #266 from 07souravkunda/force_upload_masking_error…
Browse files Browse the repository at this point in the history
…_fix

enable --force-upload to upload npm packages
  • Loading branch information
nagpalkaran95 committed Mar 9, 2022
2 parents 4847b2e + 6cf33d1 commit 98f6cdb
Show file tree
Hide file tree
Showing 13 changed files with 101 additions and 45 deletions.
3 changes: 3 additions & 0 deletions bin/commands/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ module.exports = function info(args, rawArgs) {
errorCode = 'api_failed_build_info';

logger.info(message);
logger.error(utils.formatRequest(err, resp, body));
} else {
let build = null;
try {
Expand All @@ -66,6 +67,7 @@ module.exports = function info(args, rawArgs) {
message = Constants.userMessages.API_DEPRECATED;
logger.info(message);
}
logger.info(utils.formatRequest(err, resp, body));
} else if (resp.statusCode != 200) {
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_info';
Expand All @@ -80,6 +82,7 @@ module.exports = function info(args, rawArgs) {
message = Constants.userMessages.BUILD_INFO_FAILED;
logger.error(message);
}
logger.error(utils.formatRequest(err, resp, body));
} else {
messageType = Constants.messageTypes.SUCCESS;
message = `Build info for build id: \n ${JSON.stringify(
Expand Down
6 changes: 5 additions & 1 deletion bin/helpers/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ const request = require('request');
const config = require('./config'),
capabilityHelper = require("../helpers/capabilityHelper"),
Constants = require('../helpers/constants'),
utils = require('../helpers/utils');
utils = require('../helpers/utils'),
logger = require('../helpers/logger').winstonLogger;

const createBuild = (bsConfig, zip) => {
return new Promise(function (resolve, reject) {
Expand All @@ -24,6 +25,7 @@ const createBuild = (bsConfig, zip) => {

request.post(options, function (err, resp, body) {
if (err) {
logger.error(utils.formatRequest(err, resp, body));
reject(err);
} else {
let build = null;
Expand All @@ -37,9 +39,11 @@ const createBuild = (bsConfig, zip) => {
if (build) {
resolve(build.message);
} else {
logger.error(utils.formatRequest(err, resp, body));
reject(Constants.userMessages.API_DEPRECATED);
}
} else if (resp.statusCode != 201) {
logger.error(utils.formatRequest(err, resp, body));
if (build) {
reject(`${Constants.userMessages.BUILD_FAILED} Error: ${build.message}`);
} else {
Expand Down
5 changes: 5 additions & 0 deletions bin/helpers/buildArtifacts.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ const sendUpdatesToBstack = async (bsConfig, buildId, args, options, rawArgs) =>
request.post(options, function (err, resp, data) {
if(err) {
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts_status_update', null, rawArgs);
logger.error(utils.formatRequest(err, resp, body));
reject(err);
} else {
try {
Expand Down Expand Up @@ -203,6 +204,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
let buildDetails = null;
request.get(options, async function (err, resp, body) {
if(err) {
logger.error(utils.formatRequest(err, resp, body));
utils.sendUsageReport(bsConfig, args, err, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
process.exitCode = Constants.ERROR_EXIT_CODE;
} else {
Expand All @@ -211,6 +213,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
if(resp.statusCode != 200) {
logger.error('Downloading the build artifacts failed.');
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
logger.error(utils.formatRequest(err, resp, body));
utils.sendUsageReport(bsConfig, args, buildDetails, Constants.messageTypes.ERROR, 'api_failed_build_artifacts', null, rawArgs);
process.exitCode = Constants.ERROR_EXIT_CODE;
} else {
Expand All @@ -220,6 +223,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
messageType = Constants.messageTypes.ERROR;
message = Constants.userMessages.DOWNLOAD_BUILD_ARTIFACTS_FAILED.replace('<build-id>', buildId).replace('<machine-count>', BUILD_ARTIFACTS_FAIL_COUNT);
logger.error(message);
logger.error(utils.formatRequest(err, resp, body));
process.exitCode = Constants.ERROR_EXIT_CODE;
} else {
messageType = Constants.messageTypes.SUCCESS;
Expand All @@ -241,6 +245,7 @@ exports.downloadBuildArtifacts = async (bsConfig, buildId, args, rawArgs) => {
}
utils.sendUsageReport(bsConfig, args, err, messageType, errorCode, null, rawArgs);
logger.error(`Error: Request failed with status code ${resp.statusCode}`)
logger.error(utils.formatRequest(err, resp, body));
process.exitCode = Constants.ERROR_EXIT_CODE;
}
}
Expand Down
2 changes: 1 addition & 1 deletion bin/helpers/checkUploaded.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ const checkUploadedMd5 = (bsConfig, args, instrumentBlocks) => {
zipUrlPresent: false,
packageUrlPresent: false,
};
if (args["force-upload"] && !utils.isTrueString(bsConfig.run_settings.cache_dependencies)) {
if (args["force-upload"]) {
return resolve(obj);
}

Expand Down
8 changes: 4 additions & 4 deletions bin/helpers/reporterHTML.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
let messageType = null;
let errorCode = null;
let build;

if (err) {
message = err;
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_report';

logger.error('Generating the build report failed.');
logger.error(message);
logger.error(utils.formatRequest(err, resp, body));

utils.sendUsageReport(bsConfig, args, message, messageType, errorCode, null, rawArgs);
return;
Expand Down Expand Up @@ -145,7 +145,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
logger.error(`Error generating the report: ${error}`);
response = {message: message};
}
logger.error(response.message);
logger.error(utils.formatRequest(err, resp, body));
} else if (resp.statusCode != 200) {
messageType = Constants.messageTypes.ERROR;
errorCode = 'api_failed_build_generate_report';
Expand All @@ -158,7 +158,7 @@ let reportGenerator = (bsConfig, buildId, args, rawArgs, cb) => {
if (build.message === 'Unauthorized') errorCode = 'api_auth_failed';
} else {
message = Constants.userMessages.BUILD_GENERATE_REPORT_FAILED.replace('<build-id>', buildId);
logger.error(message);
logger.error(utils.formatRequest(err, resp, body));
}
} else {
messageType = Constants.messageTypes.SUCCESS;
Expand Down
9 changes: 9 additions & 0 deletions bin/helpers/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const getmac = require('getmac').default;
const { v4: uuidv4 } = require('uuid');
const browserstack = require('browserstack-local');
const crypto = require('crypto');
const util = require('util');

const usageReporting = require("./usageReporting"),
logger = require("./logger").winstonLogger,
Expand Down Expand Up @@ -969,6 +970,14 @@ exports.setCLIMode = (bsConfig, args) => {
}
}

exports.formatRequest = (err, resp, body) => {
return {
err,
status: resp ? resp.statusCode : null,
body: body ? util.format('%j', body) : null
}
}

exports.stopBrowserStackBuild = async (bsConfig, args, buildId, rawArgs) => {
let that = this;
return new Promise(function (resolve, reject) {
Expand Down
19 changes: 10 additions & 9 deletions bin/helpers/zipUpload.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
var r = request.post(options, function (err, resp, body) {

if (err) {
reject(err);
reject({message: err, stacktrace: utils.formatRequest(err, resp, body)});
} else {
try {
responseData = JSON.parse(body);
Expand All @@ -63,22 +63,22 @@ const uploadSuits = (bsConfig, filePath, opts, obj) => {
if (resp.statusCode == 401) {
if (responseData && responseData["error"]) {
responseData["time"] = Date.now() - obj.startTime;
return reject(responseData["error"]);
return reject({message: responseData["error"], stacktrace: utils.formatRequest(err, resp, body)});
} else {
return reject(Constants.validationMessages.INVALID_DEFAULT_AUTH_PARAMS);
return reject({message: Constants.validationMessages.INVALID_DEFAULT_AUTH_PARAMS, stacktrace: utils.formatRequest(err, resp, body)});
}
}
if (!opts.propogateError){
return resolve({});
}
if(responseData && responseData["error"]){
responseData["time"] = Date.now() - obj.startTime;
reject(responseData["error"]);
reject({message: responseData["error"], stacktrace: utils.formatRequest(err, resp, body)});
} else {
if (resp.statusCode == 413) {
reject(Constants.userMessages.ZIP_UPLOAD_LIMIT_EXCEEDED);
reject({message: Constants.userMessages.ZIP_UPLOAD_LIMIT_EXCEEDED, stacktrace: utils.formatRequest(err, resp, body)});
} else {
reject(Constants.userMessages.ZIP_UPLOADER_NOT_REACHABLE);
reject({message: Constants.userMessages.ZIP_UPLOADER_NOT_REACHABLE, stacktrace: utils.formatRequest(err, resp, body)});
}
}
} else {
Expand Down Expand Up @@ -147,9 +147,10 @@ const uploadCypressZip = (bsConfig, md5data, packageData) => {
});
return resolve(obj);
}).catch((error) => {
purgeUploadBar(testZipUploadObj);
purgeUploadBar(npmPackageZipUploadObj);
return reject(error);
testZipUploadObj.bar1 && purgeUploadBar(testZipUploadObj);
npmPackageZipUploadObj.bar1 && purgeUploadBar(npmPackageZipUploadObj);
logger.error(error.stacktrace)
return reject(error.message);
})
})
}
Expand Down
18 changes: 12 additions & 6 deletions test/unit/bin/commands/info.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const chai = require("chai"),

const Constants = require("../../../../bin/helpers/constants"),
logger = require("../../../../bin/helpers/logger").winstonLogger,
testObjects = require("../../support/fixtures/testObjects");
testObjects = require("../../support/fixtures/testObjects"),
formatRequest = require('../../../../bin/helpers/utils').formatRequest;

const proxyquire = require("proxyquire").noCallThru();

Expand Down Expand Up @@ -60,7 +61,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -98,7 +100,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -160,7 +163,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -204,7 +208,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down Expand Up @@ -243,7 +248,8 @@ describe("buildInfo", () => {
setCypressConfigFilename: setCypressConfigFilenameStub,
getUserAgent: getUserAgentStub,
getConfigPath: getConfigPathStub,
setDefaults: setDefaultsStub
setDefaults: setDefaultsStub,
formatRequest,
},
request: {get: requestStub},
});
Expand Down
7 changes: 6 additions & 1 deletion test/unit/bin/helpers/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const chai = require("chai"),

const Constants = require("../../../../bin/helpers/constants"),
logger = require("../../../../bin/helpers/logger").winstonLogger,
testObjects = require("../../support/fixtures/testObjects");
testObjects = require("../../support/fixtures/testObjects"),
formatRequest = require("../../../../bin/helpers/utils").formatRequest;

const proxyquire = require("proxyquire").noCallThru();

Expand Down Expand Up @@ -37,6 +38,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down Expand Up @@ -64,6 +66,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down Expand Up @@ -121,6 +124,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down Expand Up @@ -153,6 +157,7 @@ describe("build", () => {
const build = proxyquire("../../../../bin/helpers/build", {
"../helpers/utils": {
getUserAgent: getUserAgentStub,
formatRequest,
},
"../helpers/capabilityHelper": {
caps: capsStub,
Expand Down
9 changes: 5 additions & 4 deletions test/unit/bin/helpers/checkUploaded.js
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ describe("checkUploaded", () => {
});
});

it("resolves with zipUrlPresent false and packageUrlPresent true if force-upload enabled and cache_dependencies enabled", () => {
it("resolves with zipUrlPresent false and packageUrlPresent false if force-upload enabled and cache_dependencies enabled", () => {
let requestStub = sandbox
.stub(request, "post")
.yields(null, { statusCode: 200 }, '{"npmPackageUrl":"bs://random_hashid2"}');
Expand All @@ -219,11 +219,12 @@ describe("checkUploaded", () => {
bsConfig.run_settings.cache_dependencies = true
return checkUploadedMd5rewire(bsConfig, {"force-upload": true}, instrumentBlocks)
.then((data) => {
chai.assert.deepEqual(data, { zipUrlPresent: false, packageUrlPresent: true, npm_package_md5sum: 'random_md5sum', npmPackageUrl: 'bs://random_hashid2' })
sinon.assert.calledOnce(requestStub);
sinon.assert.calledOnce(checkSpecsMd5Stub);
chai.assert.deepEqual(data, { zipUrlPresent: false, packageUrlPresent: false })
sinon.assert.notCalled(requestStub);
sinon.assert.notCalled(checkSpecsMd5Stub);
})
.catch((_error) => {
console.log(_error)
chai.assert.fail("Promise error");
});
});
Expand Down
Loading

0 comments on commit 98f6cdb

Please sign in to comment.