@@ -15,6 +15,8 @@ describe("runs", () => {
15
15
let args = testObjects . runSampleArgs ;
16
16
let rawArgs = testObjects . runSampleRawArgs ;
17
17
let bsConfig = testObjects . sampleBsConfig ;
18
+ let bsConfigWithEnforceSettings = testObjects . sampleBsConfig ;
19
+ bsConfigWithEnforceSettings . enforce_settings = true ;
18
20
19
21
describe ( "handle browserstack.json not valid" , ( ) => {
20
22
var sandbox ;
@@ -901,6 +903,170 @@ describe("runs", () => {
901
903
) ;
902
904
} ) ;
903
905
} ) ;
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
+ } ) ;
904
1070
} ) ;
905
1071
906
1072
@@ -1181,5 +1347,201 @@ describe("runs", () => {
1181
1347
) ;
1182
1348
} ) ;
1183
1349
} ) ;
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
+ } ) ;
1184
1546
} ) ;
1185
1547
} ) ;
0 commit comments