@@ -7,8 +7,8 @@ describe('Environments Plugin test suite', () => {
7
7
let environmentName = ''
8
8
const org = 'bkeepers'
9
9
const repo = 'test'
10
- const PrimaryEnvironmentNamesBeingTested = [ 'wait-timer_environment' , 'wait-timer_2_environment' , 'reviewers_environment' , 'prevent-self-review_environment' , 'deployment-branch-policy_environment' , 'deployment-branch-policy-custom_environment' , 'variables_environment' , 'deployment-protection-rules_environment' , 'new_environment' , 'old_environment' ]
11
- const EnvironmentNamesForTheNewEnvironmentsTest = [ 'new-wait-timer' , 'new-reviewers' , 'new-prevent-self-review' , 'new-deployment-branch-policy' , 'new-deployment-branch-policy-custom' , 'new-variables' , 'new-deployment-protection-rules' ]
10
+ const PrimaryEnvironmentNamesBeingTested = [ 'wait-timer_environment' , 'wait-timer_2_environment' , 'reviewers_environment' , 'prevent-self-review_environment' , 'deployment-branch-policy_environment' , 'deployment-branch-policy-custom_environment' , 'deployment-branch-policy-custom_environment_legacy' , ' variables_environment', 'deployment-protection-rules_environment' , 'new_environment' , 'old_environment' ]
11
+ const EnvironmentNamesForTheNewEnvironmentsTest = [ 'new-wait-timer' , 'new-reviewers' , 'new-prevent-self-review' , 'new-deployment-branch-policy' , 'new-deployment-branch-policy-custom' , 'new-deployment-branch-policy-custom-legacy' , 'new- variables', 'new-deployment-protection-rules' ]
12
12
const AllEnvironmentNamesBeingTested = PrimaryEnvironmentNamesBeingTested . concat ( EnvironmentNamesForTheNewEnvironmentsTest )
13
13
const log = { debug : jest . fn ( ) , error : console . error }
14
14
const errors = [ ]
@@ -58,6 +58,15 @@ describe('Environments Plugin test suite', () => {
58
58
}
59
59
)
60
60
61
+ when ( github . request )
62
+ . calledWith ( 'GET /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , { org, repo, environment_name : 'deployment-branch-policy-custom_environment_legacy' } )
63
+ . mockResolvedValue ( {
64
+ data : {
65
+ branch_policies : [ ]
66
+ }
67
+ }
68
+ )
69
+
61
70
when ( github . request )
62
71
. calledWith ( 'DELETE /repos/:org/:repo/environments/:environment_name/deployment-branch-policies/:branch_policy_id' )
63
72
. mockResolvedValue ( { } )
@@ -369,6 +378,69 @@ describe('Environments Plugin test suite', () => {
369
378
} )
370
379
} )
371
380
381
+ // custom deployment branch policy with string array
382
+ describe ( 'When there is no existing deployment branch policy and the config sets a custom policy as a string array' , ( ) => {
383
+ it ( 'detect divergence and set the custom deployment branch policy from the config' , async ( ) => {
384
+ // arrange
385
+ environmentName = 'deployment-branch-policy-custom_environment_legacy'
386
+ // represent config with a custom branch policy
387
+ const plugin = new Environments ( undefined , github , { owner : org , repo } , [
388
+ {
389
+ name : environmentName ,
390
+ deployment_branch_policy : {
391
+ protected_branches : false ,
392
+ custom_branch_policies : [ "main" , "dev" ]
393
+ }
394
+ }
395
+ ] , log , errors )
396
+
397
+ // model an existing environment with no branch policies
398
+ when ( github . request )
399
+ . calledWith ( 'GET /repos/:org/:repo/environments' , { org, repo } )
400
+ . mockResolvedValue ( {
401
+ data : {
402
+ environments : [
403
+ fillEnvironment ( {
404
+ name : environmentName ,
405
+ deployment_branch_policy : null
406
+ } )
407
+ ]
408
+ }
409
+ } )
410
+
411
+ // act - run sync() in environments.js
412
+ await plugin . sync ( ) . then ( ( ) => {
413
+ // assert - update the custom branch policies
414
+ expect ( github . request ) . toHaveBeenCalledWith ( 'GET /repos/:org/:repo/environments' , { org, repo } )
415
+ expect ( github . request ) . toHaveBeenCalledWith ( 'GET /repos/:org/:repo/environments/:environment_name/variables' , { org, repo, environment_name : environmentName } )
416
+ expect ( github . request ) . toHaveBeenCalledWith ( 'GET /repos/:org/:repo/environments/:environment_name/deployment_protection_rules' , { org, repo, environment_name : environmentName } )
417
+ expect ( github . request ) . toHaveBeenCalledWith ( 'PUT /repos/:org/:repo/environments/:environment_name' , expect . objectContaining ( {
418
+ org,
419
+ repo,
420
+ environment_name : environmentName ,
421
+ deployment_branch_policy : {
422
+ protected_branches : false ,
423
+ custom_branch_policies : true
424
+ }
425
+ } ) )
426
+ expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , expect . objectContaining ( {
427
+ org,
428
+ repo,
429
+ environment_name : environmentName ,
430
+ name : 'main' ,
431
+ type : 'branch'
432
+ } ) )
433
+ expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , expect . objectContaining ( {
434
+ org,
435
+ repo,
436
+ environment_name : environmentName ,
437
+ name : 'dev' ,
438
+ type : 'branch'
439
+ } ) )
440
+ } )
441
+ } )
442
+ } )
443
+
372
444
// add variable
373
445
describe ( 'When there are no existing variables and config calls for one' , ( ) => {
374
446
it ( 'detect divergence and add the variable' , async ( ) => {
@@ -779,6 +851,13 @@ describe('Environments Plugin test suite', () => {
779
851
]
780
852
}
781
853
} ,
854
+ {
855
+ name : 'deployment-branch-policy-custom_environment_legacy' ,
856
+ deployment_branch_policy : {
857
+ protected_branches : false ,
858
+ custom_branch_policies : [ "main" , "dev" ]
859
+ }
860
+ } ,
782
861
{
783
862
name : 'variables_environment' ,
784
863
variables : [
@@ -826,6 +905,10 @@ describe('Environments Plugin test suite', () => {
826
905
name : 'deployment-branch-policy-custom_environment' ,
827
906
deployment_branch_policy : null
828
907
} ) ,
908
+ fillEnvironment ( {
909
+ name : 'deployment-branch-policy-custom_environment_legacy' ,
910
+ deployment_branch_policy : null
911
+ } ) ,
829
912
fillEnvironment ( {
830
913
name : 'variables_environment' ,
831
914
variables : [ ]
@@ -844,7 +927,7 @@ describe('Environments Plugin test suite', () => {
844
927
845
928
expect ( github . request ) . toHaveBeenCalledWith ( 'GET /repos/:org/:repo/environments' , { org, repo } ) ;
846
929
847
- [ 'wait-timer_environment' , 'reviewers_environment' , 'prevent-self-review_environment' , 'deployment-branch-policy_environment' , 'deployment-branch-policy-custom_environment' , 'variables_environment' , 'deployment-protection-rules_environment' ] . forEach ( ( environmentName ) => {
930
+ [ 'wait-timer_environment' , 'reviewers_environment' , 'prevent-self-review_environment' , 'deployment-branch-policy_environment' , 'deployment-branch-policy-custom_environment' , 'deployment-branch-policy-custom_environment_legacy' , ' variables_environment', 'deployment-protection-rules_environment' ] . forEach ( ( environmentName ) => {
848
931
expect ( github . request ) . toHaveBeenCalledWith ( 'GET /repos/:org/:repo/environments/:environment_name/variables' , { org, repo, environment_name : environmentName } )
849
932
850
933
expect ( github . request ) . toHaveBeenCalledWith ( 'GET /repos/:org/:repo/environments/:environment_name/deployment_protection_rules' , { org, repo, environment_name : environmentName } )
@@ -931,6 +1014,32 @@ describe('Environments Plugin test suite', () => {
931
1014
type : 'tag'
932
1015
} ) )
933
1016
1017
+ expect ( github . request ) . toHaveBeenCalledWith ( 'PUT /repos/:org/:repo/environments/:environment_name' , expect . objectContaining ( {
1018
+ org,
1019
+ repo,
1020
+ environment_name : 'deployment-branch-policy-custom_environment_legacy' ,
1021
+ deployment_branch_policy : {
1022
+ protected_branches : false ,
1023
+ custom_branch_policies : true
1024
+ }
1025
+ } ) )
1026
+
1027
+ expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , expect . objectContaining ( {
1028
+ org,
1029
+ repo,
1030
+ environment_name : 'deployment-branch-policy-custom_environment_legacy' ,
1031
+ name : 'main' ,
1032
+ type : 'branch'
1033
+ } ) )
1034
+
1035
+ expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , expect . objectContaining ( {
1036
+ org,
1037
+ repo,
1038
+ environment_name : 'deployment-branch-policy-custom_environment_legacy' ,
1039
+ name : 'dev' ,
1040
+ type : 'branch'
1041
+ } ) )
1042
+
934
1043
expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/variables' , expect . objectContaining ( {
935
1044
org,
936
1045
repo,
@@ -999,6 +1108,13 @@ describe('Environments Plugin test suite', () => {
999
1108
]
1000
1109
}
1001
1110
} ,
1111
+ {
1112
+ name : 'deployment-branch-policy-custom_environment_legacy' ,
1113
+ deployment_branch_policy : {
1114
+ protected_branches : false ,
1115
+ custom_branch_policies : [ "main" , "dev" ]
1116
+ }
1117
+ } ,
1002
1118
{
1003
1119
name : 'variables_environment' ,
1004
1120
variables : [
@@ -1060,6 +1176,13 @@ describe('Environments Plugin test suite', () => {
1060
1176
]
1061
1177
}
1062
1178
} ,
1179
+ {
1180
+ name : 'new-deployment-branch-policy-custom-legacy' ,
1181
+ deployment_branch_policy : {
1182
+ protected_branches : false ,
1183
+ custom_branch_policies : [ "main" , "dev" ]
1184
+ }
1185
+ } ,
1063
1186
{
1064
1187
name : 'new-variables' ,
1065
1188
variables : [
@@ -1107,6 +1230,10 @@ describe('Environments Plugin test suite', () => {
1107
1230
name : 'deployment-branch-policy-custom_environment' ,
1108
1231
deployment_branch_policy : null
1109
1232
} ) ,
1233
+ fillEnvironment ( {
1234
+ name : 'deployment-branch-policy-custom_environment_legacy' ,
1235
+ deployment_branch_policy : null
1236
+ } ) ,
1110
1237
fillEnvironment ( {
1111
1238
name : 'variables_environment' ,
1112
1239
variables : [ ]
@@ -1212,6 +1339,32 @@ describe('Environments Plugin test suite', () => {
1212
1339
type : 'tag'
1213
1340
} ) )
1214
1341
1342
+ expect ( github . request ) . toHaveBeenCalledWith ( 'PUT /repos/:org/:repo/environments/:environment_name' , expect . objectContaining ( {
1343
+ org,
1344
+ repo,
1345
+ environment_name : 'deployment-branch-policy-custom_environment_legacy' ,
1346
+ deployment_branch_policy : {
1347
+ protected_branches : false ,
1348
+ custom_branch_policies : true
1349
+ }
1350
+ } ) )
1351
+
1352
+ expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , expect . objectContaining ( {
1353
+ org,
1354
+ repo,
1355
+ environment_name : 'deployment-branch-policy-custom_environment_legacy' ,
1356
+ name : 'main' ,
1357
+ type : 'branch'
1358
+ } ) )
1359
+
1360
+ expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/deployment-branch-policies' , expect . objectContaining ( {
1361
+ org,
1362
+ repo,
1363
+ environment_name : 'deployment-branch-policy-custom_environment_legacy' ,
1364
+ name : 'dev' ,
1365
+ type : 'branch'
1366
+ } ) )
1367
+
1215
1368
expect ( github . request ) . toHaveBeenCalledWith ( 'POST /repos/:org/:repo/environments/:environment_name/variables' , expect . objectContaining ( {
1216
1369
org,
1217
1370
repo,
0 commit comments