github.com/argoproj/argo-cd/v3@v3.2.1/server/application/deepinformer_test.go (about) 1 package application 2 3 import ( 4 "errors" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 "k8s.io/apimachinery/pkg/runtime" 11 "k8s.io/client-go/rest" 12 13 "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" 14 "github.com/argoproj/argo-cd/v3/pkg/client/clientset/versioned/fake" 15 clientset "github.com/argoproj/argo-cd/v3/pkg/client/clientset/versioned/typed/application/v1alpha1" 16 "github.com/argoproj/argo-cd/v3/pkg/client/clientset/versioned/typed/application/v1alpha1/mocks" 17 ) 18 19 func Test_deepCopyAppProjectClient_Get(t *testing.T) { 20 type fields struct { 21 AppProjectInterface clientset.AppProjectInterface 22 } 23 type args struct { 24 name string 25 } 26 tests := []struct { 27 name string 28 fields fields 29 args args 30 want *v1alpha1.AppProject 31 wantErr assert.ErrorAssertionFunc 32 }{ 33 {name: "Get an app project", fields: fields{AppProjectInterface: setupAppProjects("appproject")}, args: args{ 34 name: "appproject", 35 }, want: &v1alpha1.AppProject{ 36 ObjectMeta: metav1.ObjectMeta{Name: "appproject", Namespace: "deep-copy-ns"}, 37 }, wantErr: assert.NoError}, 38 { 39 name: "Error getting an app project", 40 fields: fields{ 41 AppProjectInterface: func() clientset.AppProjectInterface { 42 appProject := mocks.AppProjectInterface{} 43 appProject.On("Get", t.Context(), "appproject2", metav1.GetOptions{}).Return(nil, errors.New("error")) 44 return &appProject 45 }(), 46 }, 47 args: args{ 48 name: "appproject2", 49 }, 50 want: nil, 51 wantErr: assert.Error, 52 }, 53 } 54 for _, tt := range tests { 55 t.Run(tt.name, func(t *testing.T) { 56 d := &deepCopyAppProjectClient{ 57 AppProjectInterface: tt.fields.AppProjectInterface, 58 } 59 got, err := d.Get(t.Context(), tt.args.name, metav1.GetOptions{}) 60 if !tt.wantErr(t, err, fmt.Sprintf("Get(%v)", tt.args.name)) { 61 return 62 } 63 assert.Equalf(t, tt.want, got, "Get(%v)", tt.args.name) 64 if tt.want != nil { 65 assert.NotSamef(t, tt.want, got, "%v and %v are the same ptr", tt.want, got) 66 } 67 }) 68 } 69 } 70 71 func Test_deepCopyAppProjectClient_List(t *testing.T) { 72 type fields struct { 73 AppProjectInterface clientset.AppProjectInterface 74 } 75 tests := []struct { 76 name string 77 fields fields 78 want []v1alpha1.AppProject 79 wantErr assert.ErrorAssertionFunc 80 }{ 81 { 82 name: "List app projects", fields: fields{AppProjectInterface: setupAppProjects("proj1", "proj2")}, 83 want: createAppProject("proj1", "proj2"), wantErr: assert.NoError, 84 }, 85 {name: "Error listing app project", fields: fields{ 86 AppProjectInterface: func() clientset.AppProjectInterface { 87 appProject := mocks.AppProjectInterface{} 88 appProject.On("List", t.Context(), metav1.ListOptions{}).Return(nil, errors.New("error")) 89 return &appProject 90 }(), 91 }, want: nil, wantErr: assert.Error}, 92 } 93 for _, tt := range tests { 94 t.Run(tt.name, func(t *testing.T) { 95 d := &deepCopyAppProjectClient{ 96 AppProjectInterface: tt.fields.AppProjectInterface, 97 } 98 got, err := d.List(t.Context(), metav1.ListOptions{}) 99 if !tt.wantErr(t, err, "List") { 100 return 101 } 102 if tt.want != nil { 103 assert.Equalf(t, tt.want, got.Items, "List") 104 for i := range tt.want { 105 assert.NotSamef(t, &tt.want[i], &got.Items[i], "%v and %v are the same ptr", tt.want, got) 106 } 107 } 108 }) 109 } 110 } 111 112 func createAppProject(projects ...string) []v1alpha1.AppProject { 113 appProjects := make([]v1alpha1.AppProject, len(projects)) 114 for i, p := range projects { 115 appProjects[i] = v1alpha1.AppProject{ObjectMeta: metav1.ObjectMeta{Name: p, Namespace: "deep-copy-ns"}} 116 } 117 return appProjects 118 } 119 120 func setupAppProjects(projects ...string) clientset.AppProjectInterface { 121 appProjects := createAppProject(projects...) 122 ro := make([]runtime.Object, len(appProjects)) 123 for i := range appProjects { 124 ro[i] = &appProjects[i] 125 } 126 return fake.NewSimpleClientset(ro...).ArgoprojV1alpha1().AppProjects("deep-copy-ns") 127 } 128 129 func Test_deepCopyArgoprojV1alpha1Client_RESTClient(t *testing.T) { 130 fclientset := fake.NewSimpleClientset().ArgoprojV1alpha1() 131 type fields struct { 132 ArgoprojV1alpha1Interface clientset.ArgoprojV1alpha1Interface 133 } 134 tests := []struct { 135 name string 136 fields fields 137 want rest.Interface 138 }{ 139 {name: "RestClientGetter", fields: fields{ArgoprojV1alpha1Interface: fclientset}, want: fclientset.RESTClient()}, 140 } 141 for _, tt := range tests { 142 t.Run(tt.name, func(t *testing.T) { 143 d := &deepCopyArgoprojV1alpha1Client{ 144 ArgoprojV1alpha1Interface: tt.fields.ArgoprojV1alpha1Interface, 145 } 146 assert.Equalf(t, tt.want, d.RESTClient(), "RESTClient()") 147 }) 148 } 149 }