Skip to content

Commit 484771f

Browse files
committed
chore: Improve tests
1 parent d062646 commit 484771f

File tree

2 files changed

+245
-1
lines changed

2 files changed

+245
-1
lines changed

server/core/config/valid/global_cfg_test.go

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,6 +1198,250 @@ func TestGlobalCfg_MatchingRepo(t *testing.T) {
11981198
}
11991199
}
12001200

1201+
// #############################################################################################################
1202+
1203+
func TestGlobalCfg_PolicyCheckOverride(t *testing.T) {
1204+
var emptyPolicySets valid.PolicySets
1205+
1206+
defaultWorkflow := valid.Workflow{
1207+
Name: "default",
1208+
Apply: valid.DefaultApplyStage,
1209+
PolicyCheck: valid.DefaultPolicyCheckStage,
1210+
Plan: valid.DefaultPlanStage,
1211+
Import: valid.DefaultImportStage,
1212+
StateRm: valid.DefaultStateRmStage,
1213+
}
1214+
cases := map[string]struct {
1215+
gPolicyCheck bool
1216+
gCfg string
1217+
repoID string
1218+
proj valid.Project
1219+
repoWorkflows map[string]valid.Workflow
1220+
exp valid.MergedProjectCfg
1221+
}{
1222+
"global policy check disabled": {
1223+
gPolicyCheck: false,
1224+
gCfg: `
1225+
repos:
1226+
- id: /.*/
1227+
plan_requirements: [approved]
1228+
apply_requirements: [approved]
1229+
import_requirements: [approved]
1230+
- id: /github.com/.*/
1231+
plan_requirements: [mergeable]
1232+
apply_requirements: [mergeable]
1233+
import_requirements: [mergeable]
1234+
- id: github.com/owner/repo
1235+
plan_requirements: [approved, mergeable]
1236+
apply_requirements: [approved, mergeable]
1237+
import_requirements: [approved, mergeable]
1238+
`,
1239+
repoID: "github.com/owner/repo",
1240+
proj: valid.Project{
1241+
Dir: "mydir",
1242+
Workspace: "myworkspace",
1243+
Name: String("myname"),
1244+
PolicyCheck: Bool(false),
1245+
},
1246+
repoWorkflows: nil,
1247+
exp: valid.MergedProjectCfg{
1248+
PlanRequirements: []string{"approved", "mergeable"},
1249+
ApplyRequirements: []string{"approved", "mergeable"},
1250+
ImportRequirements: []string{"approved", "mergeable"},
1251+
Workflow: defaultWorkflow,
1252+
RepoRelDir: "mydir",
1253+
Workspace: "myworkspace",
1254+
Name: "myname",
1255+
AutoplanEnabled: false,
1256+
PolicySets: emptyPolicySets,
1257+
RepoLocking: true,
1258+
PolicyCheck: false,
1259+
},
1260+
},
1261+
"global policy check enabled": {
1262+
gPolicyCheck: true,
1263+
gCfg: `
1264+
repos:
1265+
- id: /.*/
1266+
plan_requirements: [approved]
1267+
apply_requirements: [approved]
1268+
import_requirements: [approved]
1269+
- id: /github.com/.*/
1270+
plan_requirements: [mergeable]
1271+
apply_requirements: [mergeable]
1272+
import_requirements: [mergeable]
1273+
- id: github.com/owner/repo
1274+
plan_requirements: [approved, mergeable]
1275+
apply_requirements: [approved, mergeable]
1276+
import_requirements: [approved, mergeable]
1277+
`,
1278+
repoID: "github.com/owner/repo",
1279+
proj: valid.Project{
1280+
Dir: "mydir",
1281+
Workspace: "myworkspace",
1282+
Name: String("myname"),
1283+
PolicyCheck: Bool(true),
1284+
},
1285+
repoWorkflows: nil,
1286+
exp: valid.MergedProjectCfg{
1287+
PlanRequirements: []string{"approved", "mergeable", "policies_passed"},
1288+
ApplyRequirements: []string{"approved", "mergeable", "policies_passed"},
1289+
ImportRequirements: []string{"approved", "mergeable", "policies_passed"},
1290+
Workflow: defaultWorkflow,
1291+
RepoRelDir: "mydir",
1292+
Workspace: "myworkspace",
1293+
Name: "myname",
1294+
AutoplanEnabled: false,
1295+
PolicySets: emptyPolicySets,
1296+
RepoLocking: true,
1297+
PolicyCheck: true,
1298+
},
1299+
},
1300+
"global policy check enabled except current repo": {
1301+
gPolicyCheck: true,
1302+
gCfg: `
1303+
repos:
1304+
- id: /.*/
1305+
plan_requirements: [approved]
1306+
apply_requirements: [approved]
1307+
import_requirements: [approved]
1308+
- id: /github.com/.*/
1309+
plan_requirements: [mergeable]
1310+
apply_requirements: [mergeable]
1311+
import_requirements: [mergeable]
1312+
- id: github.com/owner/repo
1313+
plan_requirements: [approved, mergeable]
1314+
apply_requirements: [approved, mergeable]
1315+
import_requirements: [approved, mergeable]
1316+
policy_check: false
1317+
`,
1318+
repoID: "github.com/owner/repo",
1319+
proj: valid.Project{
1320+
Dir: "mydir",
1321+
Workspace: "myworkspace",
1322+
Name: String("myname"),
1323+
PolicyCheck: Bool(false),
1324+
},
1325+
repoWorkflows: nil,
1326+
exp: valid.MergedProjectCfg{
1327+
PlanRequirements: []string{"approved", "mergeable"},
1328+
ApplyRequirements: []string{"approved", "mergeable"},
1329+
ImportRequirements: []string{"approved", "mergeable"},
1330+
Workflow: defaultWorkflow,
1331+
RepoRelDir: "mydir",
1332+
Workspace: "myworkspace",
1333+
Name: "myname",
1334+
AutoplanEnabled: false,
1335+
PolicySets: emptyPolicySets,
1336+
RepoLocking: true,
1337+
PolicyCheck: false,
1338+
},
1339+
},
1340+
"global policy check disabled and disabled on current repo": {
1341+
gPolicyCheck: false,
1342+
gCfg: `
1343+
repos:
1344+
- id: /.*/
1345+
plan_requirements: [approved]
1346+
apply_requirements: [approved]
1347+
import_requirements: [approved]
1348+
- id: /github.com/.*/
1349+
plan_requirements: [mergeable]
1350+
apply_requirements: [mergeable]
1351+
import_requirements: [mergeable]
1352+
- id: github.com/owner/repo
1353+
plan_requirements: [approved, mergeable]
1354+
apply_requirements: [approved, mergeable]
1355+
import_requirements: [approved, mergeable]
1356+
policy_check: false
1357+
`,
1358+
repoID: "github.com/owner/repo",
1359+
proj: valid.Project{
1360+
Dir: "mydir",
1361+
Workspace: "myworkspace",
1362+
Name: String("myname"),
1363+
PolicyCheck: Bool(false),
1364+
},
1365+
repoWorkflows: nil,
1366+
exp: valid.MergedProjectCfg{
1367+
PlanRequirements: []string{"approved", "mergeable"},
1368+
ApplyRequirements: []string{"approved", "mergeable"},
1369+
ImportRequirements: []string{"approved", "mergeable"},
1370+
Workflow: defaultWorkflow,
1371+
RepoRelDir: "mydir",
1372+
Workspace: "myworkspace",
1373+
Name: "myname",
1374+
AutoplanEnabled: false,
1375+
PolicySets: emptyPolicySets,
1376+
RepoLocking: true,
1377+
PolicyCheck: false,
1378+
},
1379+
},
1380+
"global policy check disabled and enabled on current repo": {
1381+
gPolicyCheck: false,
1382+
gCfg: `
1383+
repos:
1384+
- id: /.*/
1385+
plan_requirements: [approved]
1386+
apply_requirements: [approved]
1387+
import_requirements: [approved]
1388+
- id: /github.com/.*/
1389+
plan_requirements: [mergeable]
1390+
apply_requirements: [mergeable]
1391+
import_requirements: [mergeable]
1392+
- id: github.com/owner/repo
1393+
plan_requirements: [approved, mergeable]
1394+
apply_requirements: [approved, mergeable]
1395+
import_requirements: [approved, mergeable]
1396+
policy_check: true
1397+
`,
1398+
repoID: "github.com/owner/repo",
1399+
proj: valid.Project{
1400+
Dir: "mydir",
1401+
Workspace: "myworkspace",
1402+
Name: String("myname"),
1403+
PolicyCheck: Bool(false),
1404+
},
1405+
repoWorkflows: nil,
1406+
exp: valid.MergedProjectCfg{
1407+
PlanRequirements: []string{"approved", "mergeable"},
1408+
ApplyRequirements: []string{"approved", "mergeable"},
1409+
ImportRequirements: []string{"approved", "mergeable"},
1410+
Workflow: defaultWorkflow,
1411+
RepoRelDir: "mydir",
1412+
Workspace: "myworkspace",
1413+
Name: "myname",
1414+
AutoplanEnabled: false,
1415+
PolicySets: emptyPolicySets,
1416+
RepoLocking: true,
1417+
PolicyCheck: true, // Project will have policy check as true but since it is globally disable it wont actually run
1418+
},
1419+
},
1420+
}
1421+
for name, c := range cases {
1422+
t.Run(name, func(t *testing.T) {
1423+
tmp := t.TempDir()
1424+
var global valid.GlobalCfg
1425+
path := filepath.Join(tmp, "config.yaml")
1426+
Ok(t, os.WriteFile(path, []byte(c.gCfg), 0600))
1427+
var err error
1428+
globalCfgArgs := valid.GlobalCfgArgs{
1429+
AllowRepoCfg: false,
1430+
MergeableReq: false,
1431+
ApprovedReq: false,
1432+
UnDivergedReq: false,
1433+
PolicyCheckEnabled: c.gPolicyCheck,
1434+
}
1435+
1436+
global, err = (&config.ParserValidator{}).ParseGlobalCfg(path, valid.NewGlobalCfgFromArgs(globalCfgArgs))
1437+
Ok(t, err)
1438+
1439+
global.PolicySets = emptyPolicySets
1440+
Equals(t, c.exp, global.MergeProjectCfg(logging.NewNoopLogger(t), c.repoID, c.proj, valid.RepoCfg{Workflows: c.repoWorkflows}))
1441+
})
1442+
}
1443+
}
1444+
12011445
// String is a helper routine that allocates a new string value
12021446
// to store v and returns a pointer to it.
12031447
func String(v string) *string { return &v }

server/events/project_command_context_builder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ func (cb *PolicyCheckProjectCommandContextBuilder) BuildProjectContext(
166166
automerge, parallelApply, parallelPlan, verbose, abortOnExcecutionOrderFail bool,
167167
terraformClient terraform.Client,
168168
) (projectCmds []command.ProjectContext) {
169-
if prjCfg.PolicyCheck == true {
169+
if prjCfg.PolicyCheck {
170170
ctx.Log.Debug("PolicyChecks are enabled")
171171
} else {
172172
// PolicyCheck is disabled at repository level

0 commit comments

Comments
 (0)