@@ -35,6 +35,7 @@ func TestInitSelinuxOpts(t *testing.T) {
3535 selinuxOpt * runtime.SELinuxOption
3636 processLabel string
3737 mountLabels []string
38+ expectErr bool
3839 }{
3940 "Should return empty strings for processLabel and mountLabel when selinuxOpt is nil" : {
4041 selinuxOpt : nil ,
@@ -61,12 +62,91 @@ func TestInitSelinuxOpts(t *testing.T) {
6162 processLabel : "user_u:user_r:user_t:s0:c1,c2" ,
6263 mountLabels : []string {"user_u:object_r:container_file_t:s0:c1,c2" , "user_u:object_r:svirt_sandbox_file_t:s0:c1,c2" },
6364 },
65+ "Should return error when the format of 'level' is not correct" : {
66+ selinuxOpt : & runtime.SELinuxOption {
67+ User : "user_u" ,
68+ Role : "user_r" ,
69+ Type : "user_t" ,
70+ Level : "s0,c1,c2" ,
71+ },
72+ expectErr : true ,
73+ },
6474 } {
6575 t .Run (desc , func (t * testing.T ) {
6676 processLabel , mountLabel , err := initSelinuxOpts (test .selinuxOpt )
67- assert .NoError (t , err )
68- assert .Equal (t , test .processLabel , processLabel )
69- assert .Contains (t , test .mountLabels , mountLabel )
77+ if test .expectErr {
78+ assert .Error (t , err )
79+ } else {
80+ assert .NoError (t , err )
81+ assert .Equal (t , test .processLabel , processLabel )
82+ assert .Contains (t , test .mountLabels , mountLabel )
83+ }
84+ })
85+ }
86+ }
87+
88+ func TestCheckSelinuxLevel (t * testing.T ) {
89+ for desc , test := range map [string ]struct {
90+ level string
91+ expectErr bool
92+ }{
93+ "s0" : {
94+ level : "s0" ,
95+ },
96+ "s0-s0" : {
97+ level : "s0-s0" ,
98+ },
99+ "s0:c0" : {
100+ level : "s0:c0" ,
101+ },
102+ "s0:c0.c3" : {
103+ level : "s0:c0.c3" ,
104+ },
105+ "s0:c0,c3" : {
106+ level : "s0:c0,c3" ,
107+ },
108+ "s0-s0:c0,c3" : {
109+ level : "s0-s0:c0,c3" ,
110+ },
111+ "s0-s0:c0,c3.c6" : {
112+ level : "s0-s0:c0,c3.c6" ,
113+ },
114+ "s0-s0:c0,c3.c6,c8.c10" : {
115+ level : "s0-s0:c0,c3.c6,c8.c10" ,
116+ },
117+ "s0-s0:c0,c3.c6,c8,c10" : {
118+ level : "s0-s0:c0,c3.c6" ,
119+ },
120+ "s0,c0,c3" : {
121+ level : "s0,c0,c3" ,
122+ expectErr : true ,
123+ },
124+ "s0:c0.c3.c6" : {
125+ level : "s0:c0.c3.c6" ,
126+ expectErr : true ,
127+ },
128+ "s0-s0,c0,c3" : {
129+ level : "s0-s0,c0,c3" ,
130+ expectErr : true ,
131+ },
132+ "s0-s0:c0.c3.c6" : {
133+ level : "s0-s0:c0.c3.c6" ,
134+ expectErr : true ,
135+ },
136+ "s0-s0:c0,c3.c6.c8" : {
137+ level : "s0-s0:c0,c3.c6.c8" ,
138+ expectErr : true ,
139+ },
140+ } {
141+ t .Run (desc , func (t * testing.T ) {
142+ ok , err := checkSelinuxLevel (test .level )
143+ if test .expectErr {
144+ assert .Error (t , err )
145+ assert .False (t , ok )
146+ } else {
147+ assert .NoError (t , err )
148+ assert .True (t , ok )
149+ }
70150 })
71151 }
72152}
0 commit comments