@@ -29,6 +29,7 @@ import (
2929 "github.com/netapp/trident/storage"
3030 sa "github.com/netapp/trident/storage_attribute"
3131 drivers "github.com/netapp/trident/storage_drivers"
32+ fakeDriver "github.com/netapp/trident/storage_drivers/fake"
3233 "github.com/netapp/trident/storage_drivers/ontap/api"
3334 "github.com/netapp/trident/storage_drivers/ontap/api/azgo"
3435 "github.com/netapp/trident/storage_drivers/ontap/api/rest/client/networking"
@@ -10370,3 +10371,102 @@ func TestCleanupFailedCloneFlexVol(t *testing.T) {
1037010371 })
1037110372 }
1037210373}
10374+
10375+ func TestHealNASPublishEnforcement (t * testing.T ) {
10376+ tt := map [string ]struct {
10377+ makeDriver func () storage.Driver
10378+ volume * storage.Volume
10379+ assertBool assert.BoolAssertionFunc
10380+ }{
10381+ "enables publish enforcement when policy is the same as internal name" : {
10382+ makeDriver : func () storage.Driver {
10383+ config := drivers.FakeStorageDriverConfig {
10384+ CommonStorageDriverConfig : & drivers.CommonStorageDriverConfig {
10385+ StorageDriverName : "fakeDriver" ,
10386+ StoragePrefix : convert .ToPtr ("fake_" ),
10387+ },
10388+ }
10389+ return fakeDriver .NewFakeStorageDriver (ctx , config )
10390+ },
10391+ volume : & storage.Volume {
10392+ Config : & storage.VolumeConfig {
10393+ InternalName : "pvc-test-name" ,
10394+ ExportPolicy : "pvc-test-name" ,
10395+ AccessInfo : tridentmodels.VolumeAccessInfo {
10396+ PublishEnforcement : false ,
10397+ },
10398+ },
10399+ },
10400+ assertBool : assert .True ,
10401+ },
10402+ "enables publish enforcement when policy is the empty export policy" : {
10403+ makeDriver : func () storage.Driver {
10404+ config := drivers.FakeStorageDriverConfig {
10405+ CommonStorageDriverConfig : & drivers.CommonStorageDriverConfig {
10406+ StorageDriverName : "fakeDriver" ,
10407+ StoragePrefix : convert .ToPtr ("fake_" ),
10408+ },
10409+ }
10410+ return fakeDriver .NewFakeStorageDriver (ctx , config )
10411+ },
10412+ volume : & storage.Volume {
10413+ Config : & storage.VolumeConfig {
10414+ InternalName : "pvc-test-name" ,
10415+ ExportPolicy : getEmptyExportPolicyName ("fake_" ),
10416+ AccessInfo : tridentmodels.VolumeAccessInfo {
10417+ PublishEnforcement : false ,
10418+ },
10419+ },
10420+ },
10421+ assertBool : assert .True ,
10422+ },
10423+ "does not enable publish enforcement when policy is not empty and policy is not the same as the volume" : {
10424+ makeDriver : func () storage.Driver {
10425+ config := drivers.FakeStorageDriverConfig {
10426+ CommonStorageDriverConfig : & drivers.CommonStorageDriverConfig {
10427+ StorageDriverName : "fakeDriver" ,
10428+ StoragePrefix : convert .ToPtr ("fake_" ),
10429+ },
10430+ }
10431+ return fakeDriver .NewFakeStorageDriver (ctx , config )
10432+ },
10433+ volume : & storage.Volume {
10434+ Config : & storage.VolumeConfig {
10435+ InternalName : "pvc-test-name" ,
10436+ ExportPolicy : "trident-export-policy" ,
10437+ AccessInfo : tridentmodels.VolumeAccessInfo {
10438+ PublishEnforcement : false ,
10439+ },
10440+ },
10441+ },
10442+ assertBool : assert .False ,
10443+ },
10444+ "does not update if publish enforcement is alread set" : {
10445+ makeDriver : func () storage.Driver {
10446+ config := drivers.FakeStorageDriverConfig {
10447+ CommonStorageDriverConfig : & drivers.CommonStorageDriverConfig {
10448+ StorageDriverName : "fakeDriver" ,
10449+ StoragePrefix : convert .ToPtr ("fake_" ),
10450+ },
10451+ }
10452+ return fakeDriver .NewFakeStorageDriver (ctx , config )
10453+ },
10454+ volume : & storage.Volume {
10455+ Config : & storage.VolumeConfig {
10456+ InternalName : "pvc-test-name" ,
10457+ ExportPolicy : "trident-export-policy" ,
10458+ AccessInfo : tridentmodels.VolumeAccessInfo {
10459+ PublishEnforcement : true ,
10460+ },
10461+ },
10462+ },
10463+ assertBool : assert .False ,
10464+ },
10465+ }
10466+
10467+ for name , fixture := range tt {
10468+ t .Run (name , func (t * testing.T ) {
10469+ fixture .assertBool (t , HealNASPublishEnforcement (ctx , fixture .makeDriver (), fixture .volume ))
10470+ })
10471+ }
10472+ }
0 commit comments