Skip to content

Commit 8700ba5

Browse files
committed
fix: added more tests for apibinding_controller_test.go
1 parent 8e38579 commit 8700ba5

File tree

1 file changed

+89
-4
lines changed

1 file changed

+89
-4
lines changed

listener/controller/apibinding_controller_test.go

Lines changed: 89 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controller_test
22

33
import (
44
"context"
5+
"errors"
56
"testing"
67

78
kcpcore "github.com/kcp-dev/kcp/sdk/apis/core/v1alpha1"
@@ -57,23 +58,107 @@ func TestAPIBindingReconciler_Reconcile(t *testing.T) {
5758
},
5859
err: nil,
5960
},
61+
{
62+
name: "workspace_delete_error",
63+
clusterName: "dev-cluster",
64+
mockSetup: func(ioHandler *workspacefileMocks.MockIOHandler, discoverFactory *discoveryclientMocks.MockFactory, apiSchemaResolver *apischemaMocks.MockResolver, clusterPathResolver *clusterpathMocks.MockResolver) {
65+
controllerRuntimeClient := &controllerRuntimeMocks.MockClient{}
66+
clusterPathResolver.EXPECT().ClientForCluster("dev-cluster").Return(controllerRuntimeClient, nil)
67+
controllerRuntimeClient.EXPECT().Get(mock.Anything, mock.Anything, mock.Anything).Return(nil).
68+
Run(func(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) {
69+
lc := obj.(*kcpcore.LogicalCluster)
70+
lc.Annotations = map[string]string{
71+
"kcp.io/path": "dev-cluster",
72+
}
73+
lc.DeletionTimestamp = &metav1.Time{}
74+
})
75+
ioHandler.EXPECT().Delete(mock.Anything).Return(assert.AnError)
76+
},
77+
err: assert.AnError,
78+
},
79+
{
80+
name: "missing_annotation_error",
81+
clusterName: "dev-cluster",
82+
mockSetup: func(ioHandler *workspacefileMocks.MockIOHandler, discoverFactory *discoveryclientMocks.MockFactory, apiSchemaResolver *apischemaMocks.MockResolver, clusterPathResolver *clusterpathMocks.MockResolver) {
83+
controllerRuntimeClient := &controllerRuntimeMocks.MockClient{}
84+
clusterPathResolver.EXPECT().ClientForCluster("dev-cluster").Return(controllerRuntimeClient, nil)
85+
controllerRuntimeClient.EXPECT().Get(mock.Anything, mock.Anything, mock.Anything).Return(nil)
86+
},
87+
err: errors.New("failed to get cluster path from kcp.io/path annotation"),
88+
},
89+
{
90+
name: "nil_annotation_error",
91+
clusterName: "dev-cluster",
92+
mockSetup: func(ioHandler *workspacefileMocks.MockIOHandler, discoverFactory *discoveryclientMocks.MockFactory, apiSchemaResolver *apischemaMocks.MockResolver, clusterPathResolver *clusterpathMocks.MockResolver) {
93+
controllerRuntimeClient := &controllerRuntimeMocks.MockClient{}
94+
clusterPathResolver.EXPECT().ClientForCluster("dev-cluster").Return(controllerRuntimeClient, nil)
95+
controllerRuntimeClient.EXPECT().Get(mock.Anything, mock.Anything, mock.Anything).Return(nil).
96+
Run(func(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) {
97+
// Do not set Annotations (nil)
98+
})
99+
},
100+
err: errors.New("failed to get cluster path from kcp.io/path annotation"),
101+
},
102+
{
103+
name: "empty_annotation_error",
104+
clusterName: "dev-cluster",
105+
mockSetup: func(ioHandler *workspacefileMocks.MockIOHandler, discoverFactory *discoveryclientMocks.MockFactory, apiSchemaResolver *apischemaMocks.MockResolver, clusterPathResolver *clusterpathMocks.MockResolver) {
106+
controllerRuntimeClient := &controllerRuntimeMocks.MockClient{}
107+
clusterPathResolver.EXPECT().ClientForCluster("dev-cluster").Return(controllerRuntimeClient, nil)
108+
controllerRuntimeClient.EXPECT().Get(mock.Anything, mock.Anything, mock.Anything).Return(nil).
109+
Run(func(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) {
110+
lc := obj.(*kcpcore.LogicalCluster)
111+
lc.Annotations = map[string]string{
112+
"kcp.io/path": "",
113+
}
114+
})
115+
ioHandler.EXPECT().Read(mock.Anything).Return(nil, nil)
116+
discoverFactory.EXPECT().RestMapperForCluster(mock.Anything).Return(nil, nil)
117+
discoverFactory.EXPECT().ClientForCluster(mock.Anything).Return(nil, nil)
118+
apiSchemaResolver.EXPECT().Resolve(mock.Anything, mock.Anything).Return(nil, nil)
119+
},
120+
err: nil,
121+
},
122+
{
123+
name: "logicalcluster_get_error",
124+
clusterName: "dev-cluster",
125+
mockSetup: func(ioHandler *workspacefileMocks.MockIOHandler, discoverFactory *discoveryclientMocks.MockFactory, apiSchemaResolver *apischemaMocks.MockResolver, clusterPathResolver *clusterpathMocks.MockResolver) {
126+
controllerRuntimeClient := &controllerRuntimeMocks.MockClient{}
127+
clusterPathResolver.EXPECT().ClientForCluster("dev-cluster").Return(controllerRuntimeClient, nil)
128+
controllerRuntimeClient.EXPECT().Get(mock.Anything, mock.Anything, mock.Anything).Return(assert.AnError)
129+
},
130+
err: assert.AnError,
131+
},
132+
{
133+
name: "client_for_cluster_error",
134+
clusterName: "dev-cluster",
135+
mockSetup: func(ioHandler *workspacefileMocks.MockIOHandler, discoverFactory *discoveryclientMocks.MockFactory, apiSchemaResolver *apischemaMocks.MockResolver, clusterPathResolver *clusterpathMocks.MockResolver) {
136+
clusterPathResolver.EXPECT().ClientForCluster("dev-cluster").Return(nil, assert.AnError)
137+
},
138+
err: assert.AnError,
139+
},
60140
}
61141

62142
log := testlogger.New().HideLogOutput().Logger
63143
for _, tt := range tests {
64144
t.Run(tt.name, func(t *testing.T) {
65145
ioHandler := workspacefileMocks.NewMockIOHandler(t)
66-
discoveryFactory := discoveryclientMocks.NewMockFactory(t)
146+
discoverFactory := discoveryclientMocks.NewMockFactory(t)
67147
apiSchemaResolver := apischemaMocks.NewMockResolver(t)
68148
clusterPathResolver := clusterpathMocks.NewMockResolver(t)
69149

70150
if tt.mockSetup != nil {
71-
tt.mockSetup(ioHandler, discoveryFactory, apiSchemaResolver, clusterPathResolver)
151+
tt.mockSetup(ioHandler, discoverFactory, apiSchemaResolver, clusterPathResolver)
72152
}
73153

74-
r := controller.NewAPIBindingReconciler(ioHandler, discoveryFactory, apiSchemaResolver, clusterPathResolver, log)
154+
r := controller.NewAPIBindingReconciler(ioHandler, discoverFactory, apiSchemaResolver, clusterPathResolver, log)
75155
_, err := r.Reconcile(context.Background(), ctrl.Request{ClusterName: tt.clusterName})
76-
assert.Equal(t, tt.err, err)
156+
157+
if tt.name == "logicalcluster_get_error" {
158+
assert.ErrorIs(t, err, tt.err)
159+
} else {
160+
assert.Equal(t, tt.err, err)
161+
}
77162
})
78163
}
79164
}

0 commit comments

Comments
 (0)