MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestFallbackRuleValidation

Function TestFallbackRuleValidation

backend/tests/approval_test.go:433–497  ·  view source on GitHub ↗

TestFallbackRuleValidation tests that SOURCE_UNSPECIFIED rules can only use resource.project_id in conditions.

(t *testing.T)

Source from the content-addressed store, hash-verified

431// TestFallbackRuleValidation tests that SOURCE_UNSPECIFIED rules
432// can only use resource.project_id in conditions.
433func 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 },

Callers

nothing calls this directly

Calls 4

CloseMethod · 0.95
UpdateSettingMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected