Skip to content

Commit 1d38f5c

Browse files
committed
chore: add test cases for repository
1 parent 4b092de commit 1d38f5c

File tree

1 file changed

+180
-0
lines changed

1 file changed

+180
-0
lines changed

api/v1alpha1/repository_test.go

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,18 @@ limitations under the License.
1717
package v1alpha1
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"os"
2223
"reflect"
2324
"testing"
2425

26+
v1 "k8s.io/api/rbac/v1"
2527
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28+
"k8s.io/apimachinery/pkg/runtime"
29+
"k8s.io/apimachinery/pkg/types"
30+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
31+
"sigs.k8s.io/controller-runtime/pkg/client/fake"
2632
)
2733

2834
// TestNamespacedName tests Repository.NamespacedName
@@ -259,3 +265,177 @@ func TestRepository_IsOCI(t *testing.T) {
259265
})
260266
}
261267
}
268+
269+
func TestRatingEnabled(t *testing.T) {
270+
os.Setenv(RatingEnableEnv, "true")
271+
if !RatingEnabled() {
272+
t.Fatalf("Test Failed. expect true get false")
273+
}
274+
os.Unsetenv(RatingEnableEnv)
275+
if RatingEnabled() {
276+
t.Fatalf("Test Failed. expect false get true")
277+
}
278+
}
279+
280+
func TestGetRatingServiceAccount(t *testing.T) {
281+
setSA := "serviceaccount"
282+
os.Setenv(RatingServiceAccountEnv, setSA)
283+
if r := GetRatingServiceAccount(); r != setSA {
284+
t.Fatalf("Test Failed. expect '%s' get '%s'", setSA, r)
285+
}
286+
os.Unsetenv(RatingServiceAccountEnv)
287+
if r := GetRatingServiceAccount(); r != DefaultRatingServiaceAccount {
288+
t.Fatalf("Test Failed. expect '%s' get '%s'", DefaultRatingServiaceAccount, r)
289+
}
290+
}
291+
292+
func TestGetRatingClusterRole(t *testing.T) {
293+
setRole := "clustrrole"
294+
os.Setenv(RatingClusterRoleEnv, setRole)
295+
if r := GetRatingClusterRole(); r != setRole {
296+
t.Fatalf("Test Failed. expec '%s' get '%s'", setRole, r)
297+
}
298+
os.Unsetenv(RatingClusterRoleEnv)
299+
if r := GetRatingClusterRole(); r != DefaultRatingClusterRole {
300+
t.Fatalf("Test Failed. expec '%s' get '%s'", DefaultRatingClusterRole, r)
301+
}
302+
}
303+
304+
func TestGetRatingClusterRoleBinding(t *testing.T) {
305+
setRolebinding := "clusterrolebinding"
306+
os.Setenv(RatingClusterRoleBindingEnv, setRolebinding)
307+
if r := GetRatingClusterRoleBinding(); r != setRolebinding {
308+
t.Fatalf("Test Failed. expect '%s' get '%s'", setRolebinding, r)
309+
}
310+
os.Unsetenv(RatingClusterRoleBindingEnv)
311+
if r := GetRatingClusterRoleBinding(); r != DefaultRatingClusterRoleBinding {
312+
t.Fatalf("Test Failed. expect '%s' get '%s'", DefaultRatingClusterRoleBinding, r)
313+
}
314+
}
315+
316+
func TestAddSubjectToClusterRoleBinding(t *testing.T) {
317+
c := fake.NewClientBuilder()
318+
namespace := "default"
319+
expectSubject := []v1.Subject{
320+
{
321+
Kind: "ServiceAccount",
322+
Name: GetRatingServiceAccount(),
323+
Namespace: namespace,
324+
},
325+
}
326+
327+
addSubjectCLB := &v1.ClusterRoleBinding{
328+
ObjectMeta: metav1.ObjectMeta{
329+
Name: DefaultRatingClusterRoleBinding,
330+
},
331+
}
332+
333+
subjectCLB := &v1.ClusterRoleBinding{
334+
ObjectMeta: metav1.ObjectMeta{
335+
Name: "default",
336+
},
337+
Subjects: expectSubject,
338+
}
339+
340+
scheme := runtime.NewScheme()
341+
utilruntime.Must(v1.AddToScheme(scheme))
342+
c.WithObjects(addSubjectCLB, subjectCLB)
343+
c.WithScheme(scheme)
344+
// first test not enable
345+
client := c.Build()
346+
if err := AddSubjectToClusterRoleBinding(context.TODO(), client, namespace); err != nil {
347+
t.Fatalf("Test Failed. rating is not enabled and no error should be returned.")
348+
}
349+
// set rating
350+
os.Setenv(RatingEnableEnv, "true")
351+
if err := AddSubjectToClusterRoleBinding(context.TODO(), client, namespace); err != nil {
352+
t.Fatalf("Test Failed. rating is enabled, but serviceaccount is not set properly. with error: %v", err)
353+
}
354+
// checkt clusterrolebinding
355+
clb := &v1.ClusterRoleBinding{}
356+
if err := client.Get(context.TODO(), types.NamespacedName{Name: GetRatingClusterRoleBinding()}, clb); err != nil {
357+
t.Fatalf("Test Failed. after setting clusterrolebinding %s's subject, getobject erorr: %v", GetRatingClusterRoleBinding(), err)
358+
}
359+
if !reflect.DeepEqual(clb.Subjects, expectSubject) {
360+
t.Fatalf("Test Failed. for clusterrolebinding %s, the expected subject is %v but got %v", GetRatingClusterRoleBinding(), expectSubject, clb.Subjects)
361+
}
362+
363+
// set clusterrolebinding to default
364+
os.Setenv(RatingClusterRoleBindingEnv, "default")
365+
if err := AddSubjectToClusterRoleBinding(context.TODO(), client, namespace); err != nil {
366+
t.Fatalf("Test Failed. rating is enabled, but serviceaccount is not set properly. with error: %v", err)
367+
}
368+
clb = &v1.ClusterRoleBinding{}
369+
if err := client.Get(context.TODO(), types.NamespacedName{Name: GetRatingClusterRoleBinding()}, clb); err != nil {
370+
t.Fatalf("Test Failed. after setting clusterrolebinding %s's subject, getobject erorr: %v", GetRatingClusterRoleBinding(), err)
371+
}
372+
if !reflect.DeepEqual(clb.Subjects, expectSubject) {
373+
t.Fatalf("Test Failed. for clusterrolebinding %s, the expected subject is %v but got %v", GetRatingClusterRoleBinding(), expectSubject, clb.Subjects)
374+
}
375+
376+
os.Unsetenv(RatingClusterRoleBindingEnv)
377+
os.Unsetenv(RatingEnableEnv)
378+
}
379+
380+
func TestRemoveSubjectFromClusterRoleBinding(t *testing.T) {
381+
c := fake.NewClientBuilder()
382+
namespace := "default"
383+
384+
clb1 := &v1.ClusterRoleBinding{
385+
ObjectMeta: metav1.ObjectMeta{
386+
Name: DefaultRatingClusterRoleBinding,
387+
},
388+
}
389+
390+
clb2 := &v1.ClusterRoleBinding{
391+
ObjectMeta: metav1.ObjectMeta{
392+
Name: "default",
393+
},
394+
Subjects: []v1.Subject{
395+
{
396+
Kind: "ServiceAccount",
397+
Name: GetRatingServiceAccount(),
398+
Namespace: namespace,
399+
},
400+
},
401+
}
402+
403+
scheme := runtime.NewScheme()
404+
utilruntime.Must(v1.AddToScheme(scheme))
405+
c.WithObjects(clb1, clb2)
406+
c.WithScheme(scheme)
407+
// first test not enable
408+
client := c.Build()
409+
if err := RemoveSubjectFromClusterRoleBinding(context.TODO(), client, namespace); err != nil {
410+
t.Fatalf("Test Failed. rating is not enabled and no error should be returned.")
411+
}
412+
413+
os.Setenv(RatingEnableEnv, "true")
414+
// remove serviceaccount from clusterrolebinding rating-clusterrolebinding
415+
if err := RemoveSubjectFromClusterRoleBinding(context.TODO(), client, namespace); err != nil {
416+
t.Fatalf("Test Failed. rating is enabled, but the serviceaccount is not removed normally. with error: %v", err)
417+
}
418+
// checkt clusterrolebinding
419+
clb := &v1.ClusterRoleBinding{}
420+
if err := client.Get(context.TODO(), types.NamespacedName{Name: GetRatingClusterRoleBinding()}, clb); err != nil {
421+
t.Fatalf("Test Failed. after setting clusterrolebinding %s's subject, getobject erorr: %v", GetRatingClusterRoleBinding(), err)
422+
}
423+
if len(clb.Subjects) != 0 {
424+
t.Fatalf("Test Failed. for clusterrolebinding %s, the expected subject is nil but got %v", GetRatingClusterRoleBinding(), clb.Subjects)
425+
}
426+
427+
os.Setenv(RatingClusterRoleBindingEnv, "default")
428+
// remove serviceaccount from clustrrolebinding default
429+
if err := RemoveSubjectFromClusterRoleBinding(context.TODO(), client, namespace); err != nil {
430+
t.Fatalf("Test Failed. rating is enabled, but the serviceaccount is not removed normally. with error: %v", err)
431+
}
432+
clb = &v1.ClusterRoleBinding{}
433+
if err := client.Get(context.TODO(), types.NamespacedName{Name: GetRatingClusterRoleBinding()}, clb); err != nil {
434+
t.Fatalf("Test Failed. after setting clusterrolebinding %s's subject, getobject erorr: %v", GetRatingClusterRoleBinding(), err)
435+
}
436+
if len(clb.Subjects) != 0 {
437+
t.Fatalf("Test Failed. for clusterrolebinding %s, the expected subject is nil but got %v", GetRatingClusterRoleBinding(), clb.Subjects)
438+
}
439+
os.Unsetenv(RatingClusterRoleBindingEnv)
440+
os.Unsetenv(RatingEnableEnv)
441+
}

0 commit comments

Comments
 (0)