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

Function TestDirectApprovalRuleMatching

backend/tests/approval_test.go:21–151  ·  view source on GitHub ↗

TestDirectApprovalRuleMatching tests the new direct approval rule API where rules are created via WorkspaceApprovalSetting without the risk layer.

(t *testing.T)

Source from the content-addressed store, hash-verified

19// TestDirectApprovalRuleMatching tests the new direct approval rule API
20// where rules are created via WorkspaceApprovalSetting without the risk layer.
21func TestDirectApprovalRuleMatching(t *testing.T) {
22 t.Parallel()
23 a := require.New(t)
24 ctx := context.Background()
25 ctl := &controller{}
26
27 ctx, err := ctl.StartServerWithExternalPg(ctx)
28 a.NoError(err)
29 defer ctl.Close(ctx)
30
31 // Create instance in prod environment
32 instanceDir := t.TempDir()
33 instanceResp, err := ctl.instanceServiceClient.CreateInstance(ctx, connect.NewRequest(&v1pb.CreateInstanceRequest{
34 InstanceId: generateRandomString("inst"),
35 Instance: &v1pb.Instance{
36 Title: "Prod Instance",
37 Engine: v1pb.Engine_SQLITE,
38 Environment: new("environments/prod"),
39 Activation: true,
40 DataSources: []*v1pb.DataSource{{
41 Type: v1pb.DataSourceType_ADMIN,
42 Host: instanceDir,
43 Id: "admin",
44 }},
45 },
46 }))
47 a.NoError(err)
48
49 // Create database
50 dbName := generateRandomString("db")
51 err = ctl.createDatabase(ctx, ctl.project, instanceResp.Msg, nil, dbName, "")
52 a.NoError(err)
53
54 // Create approval rule directly via WorkspaceApprovalSetting
55 // This tests the new direct approval rule API (without risk layer)
56 _, err = ctl.settingServiceClient.UpdateSetting(ctx, connect.NewRequest(&v1pb.UpdateSettingRequest{
57 AllowMissing: true,
58 Setting: &v1pb.Setting{
59 Name: "settings/WORKSPACE_APPROVAL",
60 Value: &v1pb.SettingValue{
61 Value: &v1pb.SettingValue_WorkspaceApproval{
62 WorkspaceApproval: &v1pb.WorkspaceApprovalSetting{
63 Rules: []*v1pb.WorkspaceApprovalSetting_Rule{
64 {
65 Source: v1pb.WorkspaceApprovalSetting_Rule_CHANGE_DATABASE,
66 Condition: &expr.Expr{
67 Expression: `resource.db_engine == "SQLITE"`, // Use db_engine to test CEL with variables
68 },
69 Template: &v1pb.ApprovalTemplate{
70 Title: "Prod Change Database Approval",
71 Description: "Requires workspace owner approval for database changes in prod",
72 Flow: &v1pb.ApprovalFlow{
73 Roles: []string{"roles/workspaceOwner"},
74 },
75 },
76 },
77 },
78 },

Callers

nothing calls this directly

Calls 13

CloseMethod · 0.95
createDatabaseMethod · 0.95
GetApprovalTemplateMethod · 0.95
generateRandomStringFunction · 0.85
CreateInstanceMethod · 0.65
UpdateSettingMethod · 0.65
CreateSheetMethod · 0.65
CreatePlanMethod · 0.65
CreateIssueMethod · 0.65
GetIssueMethod · 0.65
EqualMethod · 0.65

Tested by

no test coverage detected