@@ -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
282281func 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