TestFallbackRuleValidation tests that SOURCE_UNSPECIFIED rules can only use resource.project_id in conditions.
(t *testing.T)
| 431 | // TestFallbackRuleValidation tests that SOURCE_UNSPECIFIED rules |
| 432 | // can only use resource.project_id in conditions. |
| 433 | func TestFallbackRuleValidation(t *testing.T) { |
| 434 | t.Parallel() |
| 435 | a := require.New(t) |
| 436 | ctx := context.Background() |
| 437 | ctl := &controller{} |
| 438 | |
| 439 | ctx, err := ctl.StartServerWithExternalPg(ctx) |
| 440 | a.NoError(err) |
| 441 | defer ctl.Close(ctx) |
| 442 | |
| 443 | // Test 1: Valid fallback rule with project_id should succeed |
| 444 | _, err = ctl.settingServiceClient.UpdateSetting(ctx, connect.NewRequest(&v1pb.UpdateSettingRequest{ |
| 445 | AllowMissing: true, |
| 446 | Setting: &v1pb.Setting{ |
| 447 | Name: "settings/WORKSPACE_APPROVAL", |
| 448 | Value: &v1pb.SettingValue{ |
| 449 | Value: &v1pb.SettingValue_WorkspaceApproval{ |
| 450 | WorkspaceApproval: &v1pb.WorkspaceApprovalSetting{ |
| 451 | Rules: []*v1pb.WorkspaceApprovalSetting_Rule{ |
| 452 | { |
| 453 | Source: v1pb.WorkspaceApprovalSetting_Rule_SOURCE_UNSPECIFIED, |
| 454 | Condition: &expr.Expr{ |
| 455 | Expression: `resource.project_id == "proj-123"`, |
| 456 | }, |
| 457 | Template: &v1pb.ApprovalTemplate{ |
| 458 | Title: "Valid Fallback Rule", |
| 459 | Flow: &v1pb.ApprovalFlow{Roles: []string{"roles/workspaceOwner"}}, |
| 460 | }, |
| 461 | }, |
| 462 | }, |
| 463 | }, |
| 464 | }, |
| 465 | }, |
| 466 | }, |
| 467 | })) |
| 468 | a.NoError(err, "Fallback rule with project_id should be valid") |
| 469 | |
| 470 | // Test 2: Invalid fallback rule with environment_id should fail |
| 471 | _, err = ctl.settingServiceClient.UpdateSetting(ctx, connect.NewRequest(&v1pb.UpdateSettingRequest{ |
| 472 | AllowMissing: true, |
| 473 | Setting: &v1pb.Setting{ |
| 474 | Name: "settings/WORKSPACE_APPROVAL", |
| 475 | Value: &v1pb.SettingValue{ |
| 476 | Value: &v1pb.SettingValue_WorkspaceApproval{ |
| 477 | WorkspaceApproval: &v1pb.WorkspaceApprovalSetting{ |
| 478 | Rules: []*v1pb.WorkspaceApprovalSetting_Rule{ |
| 479 | { |
| 480 | Source: v1pb.WorkspaceApprovalSetting_Rule_SOURCE_UNSPECIFIED, |
| 481 | Condition: &expr.Expr{ |
| 482 | Expression: `resource.environment_id == "prod"`, |
| 483 | }, |
| 484 | Template: &v1pb.ApprovalTemplate{ |
| 485 | Title: "Invalid Fallback Rule", |
| 486 | Flow: &v1pb.ApprovalFlow{Roles: []string{"roles/workspaceOwner"}}, |
| 487 | }, |
| 488 | }, |
| 489 | }, |
| 490 | }, |
nothing calls this directly
no test coverage detected