@@ -2,6 +2,7 @@ package main
22
33import (
44 "bytes"
5+ "os"
56 "os/exec"
67 "path/filepath"
78 "runtime"
@@ -66,6 +67,58 @@ rules:
6667 }
6768}
6869
70+ func TestSyncAggregatedRBAC_IncludesHelperImageDelegationRole (t * testing.T ) {
71+ inputDir := t .TempDir ()
72+ outputDir := t .TempDir ()
73+
74+ writeRole := func (filename , name string , verbs ... string ) {
75+ t .Helper ()
76+
77+ var builder strings.Builder
78+ builder .WriteString ("apiVersion: rbac.authorization.k8s.io/v1\n " )
79+ builder .WriteString ("kind: ClusterRole\n " )
80+ builder .WriteString ("metadata:\n " )
81+ builder .WriteString (" name: " + name + "\n " )
82+ builder .WriteString ("rules:\n " )
83+ builder .WriteString (" - apiGroups:\n " )
84+ builder .WriteString (" - openbao.org\n " )
85+ builder .WriteString (" resources:\n " )
86+ builder .WriteString (" - openbaoclusters\n " )
87+ builder .WriteString (" verbs:\n " )
88+ for _ , verb := range verbs {
89+ builder .WriteString (" - " + verb + "\n " )
90+ }
91+
92+ if err := os .WriteFile (filepath .Join (inputDir , filename ), []byte (builder .String ()), 0o600 ); err != nil {
93+ t .Fatalf ("write %s: %v" , filename , err )
94+ }
95+ }
96+
97+ writeRole ("openbaocluster_admin_role.yaml" , "openbaocluster-admin-role" , "*" )
98+ writeRole ("openbaocluster_editor_role.yaml" , "openbaocluster-editor-role" , "create" , "update" )
99+ writeRole ("openbaocluster_helper_image_role.yaml" , "openbaocluster-helper-image-role" , "get" , "usehelperimages" )
100+ writeRole ("openbaocluster_viewer_role.yaml" , "openbaocluster-viewer-role" , "get" , "list" )
101+ writeRole ("openbaotenant_editor_role.yaml" , "openbaotenant-editor-role" , "create" , "update" )
102+
103+ if err := syncAggregatedRBAC (options {rbacInputDir : inputDir , rbacOutputDir : outputDir }); err != nil {
104+ t .Fatalf ("syncAggregatedRBAC() failed: %v" , err )
105+ }
106+
107+ got , err := os .ReadFile (filepath .Join (outputDir , "aggregated-clusterroles.yaml" ))
108+ if err != nil {
109+ t .Fatalf ("read generated aggregated roles: %v" , err )
110+ }
111+ output := string (got )
112+ for _ , want := range []string {
113+ `{{ include "openbao-operator.fullname" . }}-openbaocluster-helper-image` ,
114+ "usehelperimages" ,
115+ } {
116+ if ! strings .Contains (output , want ) {
117+ t .Fatalf ("generated aggregated RBAC missing %q:\n %s" , want , output )
118+ }
119+ }
120+ }
121+
69122func TestAddNamespacePodSecurityLabelRBACMode_ConditionsNamespaceMutationVerbs (t * testing.T ) {
70123 input := `apiVersion: rbac.authorization.k8s.io/v1
71124kind: ClusterRole
0 commit comments