Skip to content

Commit 489f236

Browse files
Spec addition
1 parent 19f083d commit 489f236

File tree

1 file changed

+362
-0
lines changed

1 file changed

+362
-0
lines changed

test/unit/bin/commands/runs.js

Lines changed: 362 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ describe("runs", () => {
1515
let args = testObjects.runSampleArgs;
1616
let rawArgs = testObjects.runSampleRawArgs;
1717
let bsConfig = testObjects.sampleBsConfig;
18+
let bsConfigWithEnforceSettings = testObjects.sampleBsConfig;
19+
bsConfigWithEnforceSettings.enforce_settings = true;
1820

1921
describe("handle browserstack.json not valid", () => {
2022
var sandbox;
@@ -901,6 +903,170 @@ describe("runs", () => {
901903
);
902904
});
903905
});
906+
it("send error report with enforce_settings", () => {
907+
let message = `random-error`;
908+
let messageType = Constants.messageTypes.ERROR;
909+
let errorCode = "build_failed";
910+
911+
const runs = proxyquire('../../../../bin/commands/runs', {
912+
'../helpers/utils': {
913+
validateBstackJson: validateBstackJsonStub,
914+
sendUsageReport: sendUsageReportStub,
915+
getParallels: getParallelsStub,
916+
setParallels: setParallelsStub,
917+
warnSpecLimit: warnSpecLimitStub,
918+
setUsername: setUsernameStub,
919+
setAccessKey: setAccessKeyStub,
920+
setBuildName: setBuildNameStub,
921+
setCypressConfigFilename: setCypressConfigFilenameStub,
922+
setCypressTestSuiteType: setCypressTestSuiteTypeStub,
923+
setUserSpecs: setUserSpecsStub,
924+
setTestEnvs: setTestEnvsStub,
925+
setSystemEnvs: setSystemEnvsStub,
926+
setUsageReportingFlag: setUsageReportingFlagStub,
927+
getConfigPath: getConfigPathStub,
928+
setLocal: setLocalStub,
929+
setLocalMode: setLocalModeStub,
930+
setupLocalTesting: setupLocalTestingStub,
931+
setLocalIdentifier: setLocalIdentifierStub,
932+
setHeaded: setHeadedStub,
933+
setNoWrap: setNoWrapStub,
934+
setOtherConfigs: setOtherConfigsStub,
935+
deleteResults: deleteResultsStub,
936+
getNumberOfSpecFiles: getNumberOfSpecFilesStub,
937+
setDefaults: setDefaultsStub,
938+
stopLocalBinary: stopLocalBinaryStub,
939+
setLocalConfigFile: setLocalConfigFileStub,
940+
setBrowsers: setBrowsersStub,
941+
setConfig: setConfigStub,
942+
setEnforceSettingsConfig: setEnforceSettingsConfigStub,
943+
isUndefinedOrFalse: isUndefinedOrFalseStub,
944+
setCLIMode: setCLIModeStub,
945+
fetchZipSize: fetchZipSizeStub,
946+
setGeolocation: setGeolocationStub,
947+
getVideoConfig: getVideoConfigStub,
948+
setSpecTimeout: setSpecTimeoutStub,
949+
setRecordCaps: setRecordCapsStub,
950+
setDebugMode: setDebugModeStub,
951+
setNodeVersion: setNodeVersionStub,
952+
setBuildTags: setBuildTagsStub,
953+
setNetworkLogs: setNetworkLogsStub,
954+
setInteractiveCapability: setInteractiveCapabilityStub,
955+
setTimezone: setTimezoneStub,
956+
setCypressNpmDependency: setCypressNpmDependencyStub,
957+
fetchFolderSize: fetchFolderSizeStub
958+
},
959+
'../helpers/capabilityHelper': {
960+
validate: capabilityValidatorStub,
961+
},
962+
'../helpers/archiver': {
963+
archive: archiverStub,
964+
},
965+
'../helpers/fileHelpers': {
966+
deleteZip: deleteZipStub,
967+
deletePackageArchieve: deletePackageArchieveStub
968+
},
969+
'../helpers/zipUpload': {
970+
zipUpload: zipUploadStub,
971+
},
972+
'../helpers/build': {
973+
createBuild: createBuildStub,
974+
},
975+
'../helpers/checkUploaded': {
976+
checkUploadedMd5: checkUploadedStub,
977+
},
978+
'../helpers/packageInstaller': {
979+
packageWrapper: packageInstallerStub,
980+
packageSetupAndInstaller: packageSetupAndInstallerStub
981+
},
982+
'../helpers/getInitialDetails': {
983+
getInitialDetails: getInitialDetailsStub,
984+
}
985+
});
986+
987+
validateBstackJsonStub.returns(Promise.resolve(bsConfigWithEnforceSettings));
988+
setupLocalTestingStub.returns(Promise.resolve("nothing"));
989+
capabilityValidatorStub.returns(
990+
Promise.resolve(Constants.validationMessages.VALIDATED)
991+
);
992+
archiverStub.returns(Promise.resolve("Zipping completed"));
993+
checkUploadedStub.returns(Promise.resolve({ zipUrlPresent: false }));
994+
packageInstallerStub.returns(Promise.resolve({ packageArchieveCreated: false }));
995+
zipUploadStub.returns(Promise.resolve("zip uploaded"));
996+
stopLocalBinaryStub.returns(Promise.resolve("nothing"));
997+
createBuildStub.returns(Promise.reject("random-error"));
998+
fetchZipSizeStub.returns(123);
999+
getInitialDetailsStub.returns(Promise.resolve({}));
1000+
fetchFolderSizeStub.returns(123);
1001+
packageSetupAndInstallerStub.returns(true)
1002+
isUndefinedOrFalseStub.returns(false);
1003+
1004+
return runs(args, rawArgs)
1005+
.then(function (_bsConfig) {
1006+
chai.assert.fail("Promise error");
1007+
})
1008+
.catch((error) => {
1009+
sinon.assert.calledOnce(setDebugModeStub);
1010+
sinon.assert.calledOnce(getConfigPathStub);
1011+
sinon.assert.calledOnce(getConfigPathStub);
1012+
sinon.assert.calledOnce(deleteResultsStub);
1013+
sinon.assert.calledOnce(validateBstackJsonStub);
1014+
sinon.assert.calledOnce(setUsageReportingFlagStub);
1015+
sinon.assert.calledOnce(setDefaultsStub);
1016+
sinon.assert.calledOnce(setUsernameStub);
1017+
sinon.assert.calledOnce(setAccessKeyStub);
1018+
sinon.assert.calledOnce(getInitialDetailsStub);
1019+
sinon.assert.calledOnce(setBuildNameStub);
1020+
sinon.assert.calledOnce(setCypressConfigFilenameStub);
1021+
sinon.assert.calledOnce(setCypressTestSuiteTypeStub);
1022+
sinon.assert.calledOnce(setGeolocationStub);
1023+
sinon.assert.calledOnce(setTimezoneStub);
1024+
sinon.assert.calledOnce(setSpecTimeoutStub);
1025+
sinon.assert.calledOnce(setUserSpecsStub);
1026+
sinon.assert.calledOnce(setTestEnvsStub);
1027+
sinon.assert.calledOnce(setBuildTagsStub);
1028+
sinon.assert.calledOnce(setSystemEnvsStub);
1029+
sinon.assert.calledOnce(setLocalStub);
1030+
sinon.assert.calledOnce(setNetworkLogsStub);
1031+
sinon.assert.calledOnce(setLocalModeStub);
1032+
sinon.assert.calledOnce(setLocalIdentifierStub);
1033+
sinon.assert.calledOnce(setLocalConfigFileStub);
1034+
sinon.assert.calledOnce(setHeadedStub);
1035+
sinon.assert.calledOnce(setNoWrapStub);
1036+
sinon.assert.calledOnce(setCypressNpmDependencyStub);
1037+
sinon.assert.calledOnce(setNodeVersionStub);
1038+
sinon.assert.calledOnce(setConfigStub);
1039+
sinon.assert.calledOnce(setCLIModeStub);
1040+
sinon.assert.calledOnce(setOtherConfigsStub);
1041+
sinon.assert.calledOnce(capabilityValidatorStub);
1042+
sinon.assert.calledOnce(getNumberOfSpecFilesStub);
1043+
sinon.assert.calledOnce(getVideoConfigStub);
1044+
sinon.assert.calledOnce(getParallelsStub);
1045+
sinon.assert.calledOnce(setParallelsStub);
1046+
sinon.assert.calledOnce(setRecordCapsStub);
1047+
sinon.assert.calledOnce(setInteractiveCapabilityStub);
1048+
sinon.assert.calledOnce(warnSpecLimitStub);
1049+
sinon.assert.calledOnce(packageInstallerStub);
1050+
sinon.assert.calledOnce(archiverStub);
1051+
sinon.assert.calledTwice(fetchZipSizeStub);
1052+
sinon.assert.calledOnce(fetchFolderSizeStub);
1053+
sinon.assert.calledOnce(zipUploadStub);
1054+
sinon.assert.calledOnce(isUndefinedOrFalseStub);
1055+
sinon.assert.calledOnce(setEnforceSettingsConfigStub);
1056+
sinon.assert.calledOnce(createBuildStub);
1057+
sinon.assert.calledOnce(stopLocalBinaryStub);
1058+
sinon.assert.calledOnceWithExactly(
1059+
sendUsageReportStub,
1060+
bsConfig,
1061+
args,
1062+
message,
1063+
messageType,
1064+
errorCode,
1065+
{},
1066+
rawArgs
1067+
);
1068+
});
1069+
});
9041070
});
9051071

9061072

@@ -1181,5 +1347,201 @@ describe("runs", () => {
11811347
);
11821348
});
11831349
});
1350+
1351+
it("with enforce_settings", () => {
1352+
let messageType = Constants.messageTypes.SUCCESS;
1353+
let errorCode = null;
1354+
let message = `Success! ${Constants.userMessages.BUILD_CREATED} with build id: random_build_id`;
1355+
let dashboardLink = `${Constants.userMessages.VISIT_DASHBOARD} ${dashboardUrl}`;
1356+
let data = { user_id: 1234, parallels: 10, time_components: {}, unique_id: 'random_hash', package_error: 'test', checkmd5_error: 'test', build_id: 'random_build_id', test_zip_size: 123, npm_zip_size: 123, node_modules_size: 123, test_suite_zip_upload: 1, package_zip_upload: 1, is_package_diff: false}
1357+
1358+
const runs = proxyquire('../../../../bin/commands/runs', {
1359+
'../helpers/utils': {
1360+
validateBstackJson: validateBstackJsonStub,
1361+
sendUsageReport: sendUsageReportStub,
1362+
setUsername: setUsernameStub,
1363+
setAccessKey: setAccessKeyStub,
1364+
setBuildName: setBuildNameStub,
1365+
setCypressConfigFilename: setCypressConfigFilenameStub,
1366+
setCypressTestSuiteType: setCypressTestSuiteTypeStub,
1367+
setUserSpecs: setUserSpecsStub,
1368+
setTestEnvs: setTestEnvsStub,
1369+
setSystemEnvs: setSystemEnvsStub,
1370+
setUsageReportingFlag: setUsageReportingFlagStub,
1371+
getParallels: getParallelsStub,
1372+
setParallels: setParallelsStub,
1373+
warnSpecLimit: warnSpecLimitStub,
1374+
getConfigPath: getConfigPathStub,
1375+
setLocal: setLocalStub,
1376+
setLocalMode: setLocalModeStub,
1377+
setupLocalTesting: setupLocalTestingStub,
1378+
setLocalIdentifier: setLocalIdentifierStub,
1379+
setHeaded: setHeadedStub,
1380+
setNoWrap: setNoWrapStub,
1381+
setOtherConfigs: setOtherConfigsStub,
1382+
generateUniqueHash: generateUniqueHashStub,
1383+
exportResults: exportResultsStub,
1384+
deleteResults: deleteResultsStub,
1385+
setDefaults: setDefaultsStub,
1386+
isUndefined: isUndefinedStub,
1387+
getNumberOfSpecFiles: getNumberOfSpecFilesStub,
1388+
setLocalConfigFile: setLocalConfigFileStub,
1389+
setBrowsers: setBrowsersStub,
1390+
setConfig: setConfigStub,
1391+
setEnforceSettingsConfig: setEnforceSettingsConfigStub,
1392+
isUndefinedOrFalse: isUndefinedOrFalseStub,
1393+
stopLocalBinary: stopLocalBinaryStub,
1394+
nonEmptyArray: nonEmptyArrayStub,
1395+
checkError: checkErrorStub,
1396+
setCLIMode: setCLIModeStub,
1397+
setProcessHooks: setProcessHooksStub,
1398+
fetchZipSize: fetchZipSizeStub,
1399+
setGeolocation: setGeolocationStub,
1400+
getVideoConfig: getVideoConfigStub,
1401+
setSpecTimeout: setSpecTimeoutStub,
1402+
setRecordCaps: setRecordCapsStub,
1403+
setDebugMode: setDebugModeStub,
1404+
setNodeVersion: setNodeVersionStub,
1405+
setBuildTags: setBuildTagsStub,
1406+
setNetworkLogs: setNetworkLogsStub,
1407+
setInteractiveCapability: setInteractiveCapabilityStub,
1408+
setTimezone: setTimezoneStub,
1409+
setCypressNpmDependency: setCypressNpmDependencyStub,
1410+
fetchFolderSize: fetchFolderSizeStub
1411+
},
1412+
'../helpers/capabilityHelper': {
1413+
validate: capabilityValidatorStub,
1414+
},
1415+
'../helpers/archiver': {
1416+
archive: archiverStub,
1417+
},
1418+
'../helpers/fileHelpers': {
1419+
deleteZip: deleteZipStub,
1420+
deletePackageArchieve: deletePackageArchieveStub
1421+
},
1422+
'../helpers/zipUpload': {
1423+
zipUpload: zipUploadStub,
1424+
},
1425+
'../helpers/build': {
1426+
createBuild: createBuildStub,
1427+
},
1428+
'../helpers/config': {
1429+
dashboardUrl: dashboardUrl,
1430+
packageDirName: packageDirName,
1431+
packageFileName: packageFileName,
1432+
fileName: fileName,
1433+
},
1434+
'../helpers/checkUploaded': {
1435+
checkUploadedMd5: checkUploadedStub,
1436+
},
1437+
'../helpers/packageInstaller': {
1438+
packageWrapper: packageInstallerStub,
1439+
packageSetupAndInstaller: packageSetupAndInstallerStub
1440+
},
1441+
'../helpers/timeComponents': {
1442+
initTimeComponents: initTimeComponentsStub,
1443+
instrumentEventTime: instrumentEventTimeStub,
1444+
getTimeComponents: getTimeComponentsStub,
1445+
markBlockStart: markBlockStartStub,
1446+
markBlockEnd: markBlockEndStub,
1447+
},
1448+
'../helpers/getInitialDetails': {
1449+
getInitialDetails: getInitialDetailsStub,
1450+
}
1451+
});
1452+
1453+
validateBstackJsonStub.returns(Promise.resolve(bsConfigWithEnforceSettings));
1454+
setupLocalTestingStub.returns(Promise.resolve("nothing"));
1455+
capabilityValidatorStub.returns(
1456+
Promise.resolve(Constants.validationMessages.VALIDATED)
1457+
);
1458+
archiverStub.returns(Promise.resolve("Zipping completed"));
1459+
checkUploadedStub.returns(Promise.resolve({ zipUrlPresent: false }));
1460+
packageInstallerStub.returns(Promise.resolve({ packageArchieveCreated: false }));
1461+
zipUploadStub.returns(Promise.resolve("zip uploaded"));
1462+
stopLocalBinaryStub.returns(Promise.resolve("nothing"));
1463+
nonEmptyArrayStub.returns(false);
1464+
checkErrorStub.returns('test');
1465+
getParallelsStub.returns(10);
1466+
createBuildStub.returns(Promise.resolve({ message: 'Success', build_id: 'random_build_id', dashboard_url: dashboardUrl, user_id: 1234 }));
1467+
fetchZipSizeStub.returns(123);
1468+
getInitialDetailsStub.returns(Promise.resolve({user_id: 1234}));
1469+
fetchFolderSizeStub.returns(123);
1470+
packageSetupAndInstallerStub.returns(true);
1471+
isUndefinedOrFalseStub.returns(false);
1472+
1473+
return runs(args, rawArgs)
1474+
.then(function (_bsConfig) {
1475+
chai.assert.fail("Promise error");
1476+
})
1477+
.catch((error) => {
1478+
sinon.assert.calledOnce(setDebugModeStub);
1479+
sinon.assert.calledOnce(getConfigPathStub);
1480+
sinon.assert.calledOnce(getConfigPathStub);
1481+
sinon.assert.calledOnce(deleteResultsStub);
1482+
sinon.assert.calledOnce(validateBstackJsonStub);
1483+
sinon.assert.calledOnce(setUsageReportingFlagStub);
1484+
sinon.assert.calledOnce(setDefaultsStub);
1485+
sinon.assert.calledOnce(setUsernameStub);
1486+
sinon.assert.calledOnce(setAccessKeyStub);
1487+
sinon.assert.calledOnce(getInitialDetailsStub);
1488+
sinon.assert.calledOnce(setBuildNameStub);
1489+
sinon.assert.calledOnce(setCypressConfigFilenameStub);
1490+
sinon.assert.calledOnce(setCypressTestSuiteTypeStub);
1491+
sinon.assert.calledOnce(setGeolocationStub);
1492+
sinon.assert.calledOnce(setTimezoneStub);
1493+
sinon.assert.calledOnce(setSpecTimeoutStub);
1494+
sinon.assert.calledOnce(setUserSpecsStub);
1495+
sinon.assert.calledOnce(setTestEnvsStub);
1496+
sinon.assert.calledOnce(setBuildTagsStub);
1497+
sinon.assert.calledOnce(setSystemEnvsStub);
1498+
sinon.assert.calledOnce(setLocalStub);
1499+
sinon.assert.calledOnce(setNetworkLogsStub);
1500+
sinon.assert.calledOnce(setLocalModeStub);
1501+
sinon.assert.calledOnce(setLocalIdentifierStub);
1502+
sinon.assert.calledOnce(setLocalConfigFileStub);
1503+
sinon.assert.calledOnce(setHeadedStub);
1504+
sinon.assert.calledOnce(setNoWrapStub);
1505+
sinon.assert.calledOnce(setCypressNpmDependencyStub);
1506+
sinon.assert.calledOnce(setNodeVersionStub);
1507+
sinon.assert.calledOnce(setConfigStub);
1508+
sinon.assert.calledOnce(setCLIModeStub);
1509+
sinon.assert.calledOnce(setOtherConfigsStub);
1510+
sinon.assert.calledOnce(capabilityValidatorStub);
1511+
sinon.assert.calledOnce(getNumberOfSpecFilesStub);
1512+
sinon.assert.calledOnce(getVideoConfigStub);
1513+
sinon.assert.calledOnce(getParallelsStub);
1514+
sinon.assert.calledOnce(setParallelsStub);
1515+
sinon.assert.calledOnce(setRecordCapsStub);
1516+
sinon.assert.calledOnce(setInteractiveCapabilityStub);
1517+
sinon.assert.calledOnce(warnSpecLimitStub);
1518+
sinon.assert.calledOnce(packageInstallerStub);
1519+
sinon.assert.calledOnce(archiverStub);
1520+
sinon.assert.calledTwice(fetchZipSizeStub);
1521+
sinon.assert.calledOnce(fetchFolderSizeStub);
1522+
sinon.assert.calledOnce(zipUploadStub);
1523+
sinon.assert.calledOnce(isUndefinedOrFalseStub);
1524+
sinon.assert.calledOnce(setEnforceSettingsConfigStub);
1525+
sinon.assert.calledOnce(createBuildStub);
1526+
sinon.assert.calledOnce(setProcessHooksStub);
1527+
sinon.assert.calledOnce(exportResultsStub);
1528+
sinon.assert.calledTwice(isUndefinedStub);
1529+
sinon.assert.calledOnce(nonEmptyArrayStub);
1530+
sinon.assert.calledOnce(generateUniqueHashStub);
1531+
sinon.assert.calledTwice(checkErrorStub);
1532+
sinon.assert.match(
1533+
sendUsageReportStub.getCall(0).args,
1534+
[
1535+
bsConfig,
1536+
args,
1537+
`${message}\n${dashboardLink}`,
1538+
messageType,
1539+
errorCode,
1540+
data,
1541+
rawArgs
1542+
]
1543+
);
1544+
});
1545+
});
11841546
});
11851547
});

0 commit comments

Comments
 (0)