@@ -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