@@ -791,10 +791,12 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
791
791
{
792
792
Name : "policy1" ,
793
793
ApproveCount : 1 ,
794
+ SelfApprove : true ,
794
795
},
795
796
{
796
797
Name : "policy2" ,
797
798
ApproveCount : 2 ,
799
+ SelfApprove : true ,
798
800
},
799
801
},
800
802
},
@@ -823,10 +825,12 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
823
825
},
824
826
Name : "policy1" ,
825
827
ApproveCount : 1 ,
828
+ SelfApprove : true ,
826
829
},
827
830
{
828
831
Name : "policy2" ,
829
832
ApproveCount : 2 ,
833
+ SelfApprove : true ,
830
834
},
831
835
},
832
836
},
@@ -855,10 +859,12 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
855
859
{
856
860
Name : "policy1" ,
857
861
ApproveCount : 1 ,
862
+ SelfApprove : true ,
858
863
},
859
864
{
860
865
Name : "policy2" ,
861
866
ApproveCount : 1 ,
867
+ SelfApprove : true ,
862
868
},
863
869
},
864
870
},
@@ -888,10 +894,12 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
888
894
},
889
895
Name : "policy1" ,
890
896
ApproveCount : 1 ,
897
+ SelfApprove : true ,
891
898
},
892
899
{
893
900
Name : "policy2" ,
894
901
ApproveCount : 1 ,
902
+ SelfApprove : true ,
895
903
},
896
904
},
897
905
},
@@ -920,6 +928,7 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
920
928
},
921
929
Name : "policy1" ,
922
930
ApproveCount : 2 ,
931
+ SelfApprove : true ,
923
932
},
924
933
},
925
934
},
@@ -950,6 +959,7 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
950
959
},
951
960
Name : "policy1" ,
952
961
ApproveCount : 2 ,
962
+ SelfApprove : true ,
953
963
},
954
964
},
955
965
},
@@ -983,13 +993,15 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
983
993
},
984
994
Name : "policy1" ,
985
995
ApproveCount : 1 ,
996
+ SelfApprove : true ,
986
997
},
987
998
{
988
999
Owners : valid.PolicyOwners {
989
1000
Teams : []string {"someuserteam" },
990
1001
},
991
1002
Name : "policy2" ,
992
1003
ApproveCount : 1 ,
1004
+ SelfApprove : true ,
993
1005
},
994
1006
},
995
1007
},
@@ -1032,13 +1044,15 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
1032
1044
},
1033
1045
Name : "policy1" ,
1034
1046
ApproveCount : 1 ,
1047
+ SelfApprove : true ,
1035
1048
},
1036
1049
{
1037
1050
Owners : valid.PolicyOwners {
1038
1051
Teams : []string {"someuserteam" },
1039
1052
},
1040
1053
Name : "policy2" ,
1041
1054
ApproveCount : 2 ,
1055
+ SelfApprove : true ,
1042
1056
},
1043
1057
},
1044
1058
},
@@ -1081,13 +1095,15 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
1081
1095
},
1082
1096
Name : "policy1" ,
1083
1097
ApproveCount : 1 ,
1098
+ SelfApprove : true ,
1084
1099
},
1085
1100
{
1086
1101
Owners : valid.PolicyOwners {
1087
1102
Teams : []string {"someotheruserteam" },
1088
1103
},
1089
1104
Name : "policy2" ,
1090
1105
ApproveCount : 2 ,
1106
+ SelfApprove : true ,
1091
1107
},
1092
1108
},
1093
1109
},
@@ -1131,13 +1147,15 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
1131
1147
},
1132
1148
Name : "policy1" ,
1133
1149
ApproveCount : 1 ,
1150
+ SelfApprove : true ,
1134
1151
},
1135
1152
{
1136
1153
Owners : valid.PolicyOwners {
1137
1154
Teams : []string {"someuserteam" },
1138
1155
},
1139
1156
Name : "policy2" ,
1140
1157
ApproveCount : 2 ,
1158
+ SelfApprove : true ,
1141
1159
},
1142
1160
},
1143
1161
},
@@ -1168,6 +1186,56 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
1168
1186
expFailure : `One or more policy sets require additional approval.` ,
1169
1187
hasErr : false ,
1170
1188
},
1189
+ {
1190
+ description : "Policy Approval should not be the Author of the PR" ,
1191
+ userTeams : []string {"someuserteam" },
1192
+ clearPolicyApproval : false ,
1193
+ policySetCfg : valid.PolicySets {
1194
+ PolicySets : []valid.PolicySet {
1195
+ {
1196
+ Owners : valid.PolicyOwners {
1197
+ Users : []string {"lkysow" },
1198
+ },
1199
+ Name : "policy1" ,
1200
+ ApproveCount : 1 ,
1201
+ SelfApprove : true ,
1202
+ },
1203
+ {
1204
+ Owners : valid.PolicyOwners {
1205
+ Users : []string {"lkysow" },
1206
+ },
1207
+ Name : "policy2" ,
1208
+ ApproveCount : 1 ,
1209
+ },
1210
+ },
1211
+ },
1212
+ policySetStatus : []models.PolicySetStatus {
1213
+ {
1214
+ PolicySetName : "policy1" ,
1215
+ Approvals : 0 ,
1216
+ Passed : false ,
1217
+ },
1218
+ {
1219
+ PolicySetName : "policy2" ,
1220
+ Approvals : 0 ,
1221
+ Passed : false ,
1222
+ },
1223
+ },
1224
+ expOut : []models.PolicySetResult {
1225
+ {
1226
+ PolicySetName : "policy1" ,
1227
+ ReqApprovals : 1 ,
1228
+ CurApprovals : 1 ,
1229
+ },
1230
+ {
1231
+ PolicySetName : "policy2" ,
1232
+ ReqApprovals : 1 ,
1233
+ CurApprovals : 0 ,
1234
+ },
1235
+ },
1236
+ expFailure : `One or more policy sets require additional approval.` ,
1237
+ hasErr : true ,
1238
+ },
1171
1239
}
1172
1240
1173
1241
for _ , c := range cases {
@@ -1225,7 +1293,7 @@ func TestDefaultProjectCommandRunner_ApprovePolicies(t *testing.T) {
1225
1293
projPolicyStatus = c .policySetStatus
1226
1294
}
1227
1295
1228
- modelPull := models.PullRequest {BaseRepo : testdata .GithubRepo , State : models .OpenPullState , Num : testdata .Pull .Num }
1296
+ modelPull := models.PullRequest {BaseRepo : testdata .GithubRepo , State : models .OpenPullState , Num : testdata .Pull .Num , Author : testdata . User . Username }
1229
1297
When (runner .VcsClient .GetTeamNamesForUser (testdata .GithubRepo , testdata .User )).ThenReturn (c .userTeams , nil )
1230
1298
ctx := command.ProjectContext {
1231
1299
User : testdata .User ,
0 commit comments