Skip to content

Commit eb025d6

Browse files
committed
manager: remove dependency on cert-manager's controller/test package
Signed-off-by: James Munnelly <[email protected]>
1 parent 8187c1b commit eb025d6

File tree

1 file changed

+64
-77
lines changed

1 file changed

+64
-77
lines changed

manager/manager_test.go

Lines changed: 64 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ import (
88

99
cmapi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
1010
cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
11-
testpkg "github.com/cert-manager/cert-manager/pkg/controller/test"
1211
"github.com/go-logr/logr/testr"
12+
apierrors "k8s.io/apimachinery/pkg/api/errors"
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14-
"k8s.io/apimachinery/pkg/runtime"
1514
"k8s.io/apimachinery/pkg/util/wait"
16-
coretesting "k8s.io/client-go/testing"
15+
"k8s.io/utils/strings/slices"
1716

1817
internalapi "github.com/cert-manager/csi-lib/internal/api"
1918
internalapiutil "github.com/cert-manager/csi-lib/internal/api/util"
@@ -280,118 +279,106 @@ func TestManager_ManageVolume_beginsManagingAndProceedsIfNotReady(t *testing.T)
280279
}
281280

282281
func TestManager_cleanupStaleRequests(t *testing.T) {
283-
284-
ctx := context.TODO()
285-
log := testr.New(t)
286-
287282
type fields struct {
288-
nodeNameHash string
283+
nodeID string
289284
maxRequestsPerVolume int
290285
}
291-
292286
tests := []struct {
293-
name string
294-
builder *testpkg.Builder
295-
fields fields
296-
volumeID string
297-
wantErr bool
287+
name string
288+
objects []*cmapi.CertificateRequest
289+
toBeDeleted []string
290+
fields fields
291+
wantErr bool
298292
}{
299293
{
300294
name: "maxRequestsPerVolume=1: all stale CSRs should be deleted",
301-
builder: &testpkg.Builder{
302-
T: t,
303-
304-
CertManagerObjects: []runtime.Object{
305-
cr("cr-1", "ns-1", "nodeNameHash-1", "volumeID-1"),
306-
cr("cr-2", "ns-1", "nodeNameHash-1", "volumeID-1"),
307-
},
308-
ExpectedActions: []testpkg.Action{
309-
testpkg.NewAction(coretesting.NewDeleteAction(
310-
cmapi.SchemeGroupVersion.WithResource("certificaterequests"),
311-
"ns-1", "cr-2")),
312-
testpkg.NewAction(coretesting.NewDeleteAction(
313-
cmapi.SchemeGroupVersion.WithResource("certificaterequests"),
314-
"ns-1", "cr-1")),
315-
},
295+
objects: []*cmapi.CertificateRequest{
296+
cr("cr-1", defaultTestNamespace, "nodeID-1", "volumeID-1"),
297+
cr("cr-2", defaultTestNamespace, "nodeID-1", "volumeID-1"),
316298
},
299+
toBeDeleted: []string{"cr-2", "cr-1"},
317300
fields: fields{
318-
nodeNameHash: "nodeNameHash-1",
301+
nodeID: "nodeID-1",
319302
maxRequestsPerVolume: 1,
320303
},
321-
volumeID: "volumeID-1",
322-
wantErr: false,
304+
wantErr: false,
323305
},
324306
{
325307
name: "maxRequestsPerVolume=2: 1 stale CSRs should be left",
326-
builder: &testpkg.Builder{
327-
T: t,
328-
329-
CertManagerObjects: []runtime.Object{
330-
cr("cr-1", "ns-1", "nodeNameHash-1", "volumeID-1"),
331-
cr("cr-2", "ns-1", "nodeNameHash-1", "volumeID-1"),
332-
},
333-
ExpectedActions: []testpkg.Action{
334-
testpkg.NewAction(coretesting.NewDeleteAction(
335-
cmapi.SchemeGroupVersion.WithResource("certificaterequests"),
336-
"ns-1", "cr-2")),
337-
},
308+
objects: []*cmapi.CertificateRequest{
309+
cr("cr-1", defaultTestNamespace, "nodeID-1", "volumeID-1"),
310+
cr("cr-2", defaultTestNamespace, "nodeID-1", "volumeID-1"),
338311
},
312+
toBeDeleted: []string{"cr-2"},
339313
fields: fields{
340-
nodeNameHash: "nodeNameHash-1",
314+
nodeID: "nodeID-1",
341315
maxRequestsPerVolume: 2,
342316
},
343-
volumeID: "volumeID-1",
344-
wantErr: false,
317+
wantErr: false,
345318
},
346319
{
347320
name: "maxRequestsPerVolume=1: unrelated CSRs should NOT be deleted",
348-
builder: &testpkg.Builder{
349-
T: t,
350-
351-
CertManagerObjects: []runtime.Object{
352-
cr("cr-1", "ns-1", "nodeNameHash-1", "volumeID-2"),
353-
cr("cr-2", "ns-1", "nodeNameHash-1", "volumeID-2"),
354-
},
355-
ExpectedActions: []testpkg.Action{},
321+
objects: []*cmapi.CertificateRequest{
322+
cr("cr-1", defaultTestNamespace, "nodeID-1", "volumeID-2"),
323+
cr("cr-2", defaultTestNamespace, "nodeID-1", "volumeID-2"),
356324
},
357325
fields: fields{
358-
nodeNameHash: "nodeNameHash-1",
326+
nodeID: "nodeID-1",
359327
maxRequestsPerVolume: 1,
360328
},
361-
volumeID: "volumeID-1",
362-
wantErr: false,
329+
wantErr: false,
363330
},
364331
}
365-
for _, tt := range tests {
366-
t.Run(tt.name, func(t *testing.T) {
367-
tt.builder.Init()
368-
cmClient := tt.builder.CMClient
369-
crLister := tt.builder.SharedInformerFactory.Certmanager().V1().CertificateRequests().Lister()
370-
371-
tt.builder.Start()
372-
defer tt.builder.CheckAndFinish()
373-
374-
m := &Manager{
375-
client: cmClient,
376-
lister: crLister,
377-
nodeNameHash: tt.fields.nodeNameHash,
378-
maxRequestsPerVolume: tt.fields.maxRequestsPerVolume,
332+
for _, test := range tests {
333+
t.Run(test.name, func(t *testing.T) {
334+
ctx := context.Background()
335+
log := testr.New(t)
336+
337+
opts := newDefaultTestOptions(t)
338+
opts.MaxRequestsPerVolume = test.fields.maxRequestsPerVolume
339+
opts.NodeID = test.fields.nodeID
340+
m, err := NewManager(opts)
341+
if err != nil {
342+
t.Fatal(err)
343+
}
344+
defer m.Stop()
345+
346+
for _, req := range test.objects {
347+
if _, err := m.client.CertmanagerV1().CertificateRequests(req.Namespace).Create(ctx, req, metav1.CreateOptions{}); err != nil {
348+
t.Fatal(err)
349+
}
379350
}
380-
if err := m.cleanupStaleRequests(ctx, log, tt.volumeID); (err != nil) != tt.wantErr {
381-
t.Errorf("cleanupStaleRequests() error = %v, wantErr %v", err, tt.wantErr)
351+
352+
if err := m.cleanupStaleRequests(ctx, log, "volumeID-1"); (err != nil) != test.wantErr {
353+
t.Errorf("cleanupStaleRequests() error = %v, wantErr %v", err, test.wantErr)
354+
}
355+
356+
for _, req := range test.objects {
357+
_, err := m.client.CertmanagerV1().CertificateRequests(req.Namespace).Get(ctx, req.Name, metav1.GetOptions{})
358+
if err != nil && !apierrors.IsNotFound(err) {
359+
t.Fatal(err)
360+
}
361+
exists := !apierrors.IsNotFound(err)
362+
shouldExist := !slices.Contains(test.toBeDeleted, req.Name)
363+
if exists && !shouldExist {
364+
t.Errorf("expected %q to be deleted but it was not", req.Name)
365+
}
366+
if !exists && shouldExist {
367+
t.Errorf("expected %q to exist but it does not", req.Name)
368+
}
382369
}
383370
})
384371
}
385372
}
386373

387-
func cr(crName, crNamespace, nodeNameHash, VolumeID string) *cmapi.CertificateRequest {
374+
func cr(crName, crNamespace, nodeID, volumeID string) *cmapi.CertificateRequest {
388375
return &cmapi.CertificateRequest{
389376
ObjectMeta: metav1.ObjectMeta{
390377
Name: crName,
391378
Namespace: crNamespace,
392379
Labels: map[string]string{
393-
internalapi.NodeIDHashLabelKey: nodeNameHash,
394-
internalapi.VolumeIDHashLabelKey: internalapiutil.HashIdentifier(VolumeID),
380+
internalapi.NodeIDHashLabelKey: internalapiutil.HashIdentifier(nodeID),
381+
internalapi.VolumeIDHashLabelKey: internalapiutil.HashIdentifier(volumeID),
395382
},
396383
}}
397384
}

0 commit comments

Comments
 (0)