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  }