@@ -5067,6 +5067,66 @@ func TestOntapNasStorageDriverVolumeImport_SMBShareCreateFail(t *testing.T) {
50675067 assert .Error (t , result )
50685068}
50695069
5070+ func TestOntapNasStorageDriverVolumeImportNotManaged_SecureSMBEnabled (t * testing.T ) {
5071+ mockAPI , driver := newMockOntapNASDriver (t )
5072+ driver .Config .NASType = sa .SMB
5073+ volConfig := & storage.VolumeConfig {
5074+ Size : "1g" ,
5075+ Encryption : "false" ,
5076+ InternalName : "vol2" ,
5077+ PeerVolumeHandle : "fakesvm:vol1" ,
5078+ ImportNotManaged : true ,
5079+ UnixPermissions : DefaultUnixPermissions ,
5080+ SMBShareACL : map [string ]string {"user" : "full_control" },
5081+ SecureSMBEnabled : true ,
5082+ }
5083+ flexVol := & api.Volume {
5084+ Name : "flexvol" ,
5085+ Comment : "flexvol" ,
5086+ JunctionPath : "/vol1" ,
5087+ Size : "1" ,
5088+ }
5089+
5090+ mockAPI .EXPECT ().SVMName ().AnyTimes ().Return ("SVM1" )
5091+ mockAPI .EXPECT ().VolumeInfo (ctx , "vol1" ).Return (flexVol , nil )
5092+ mockAPI .EXPECT ().SMBShareExists (ctx , "vol1" ).Return (false , nil )
5093+ mockAPI .EXPECT ().SMBShareCreate (ctx , "vol1" , flexVol .JunctionPath ).Return (nil )
5094+ result := driver .Import (ctx , volConfig , "vol1" )
5095+ assert .NoError (t , result )
5096+ }
5097+
5098+ func TestOntapNasStorageDriverVolumeImport_SecureSMBEnabled (t * testing.T ) {
5099+ mockAPI , driver := newMockOntapNASDriver (t )
5100+ driver .Config .NASType = sa .SMB
5101+ volConfig := & storage.VolumeConfig {
5102+ Size : "1g" ,
5103+ Encryption : "false" ,
5104+ InternalName : "vol2" ,
5105+ PeerVolumeHandle : "fakesvm:vol1" ,
5106+ ImportNotManaged : false ,
5107+ UnixPermissions : DefaultUnixPermissions ,
5108+ SMBShareACL : map [string ]string {"user" : "full_control" },
5109+ SecureSMBEnabled : true ,
5110+ }
5111+ flexVol := & api.Volume {
5112+ Name : "flexvol" ,
5113+ Comment : "flexvol" ,
5114+ JunctionPath : "/vol1" ,
5115+ Size : "1" ,
5116+ }
5117+
5118+ mockAPI .EXPECT ().SVMName ().AnyTimes ().Return ("SVM1" )
5119+ mockAPI .EXPECT ().VolumeInfo (ctx , "vol1" ).Return (flexVol , nil )
5120+ mockAPI .EXPECT ().VolumeRename (ctx , "vol1" , "vol2" ).Return (nil )
5121+ mockAPI .EXPECT ().VolumeModifyUnixPermissions (ctx , "vol2" , "vol1" , DefaultUnixPermissions ).Return (nil )
5122+ mockAPI .EXPECT ().SMBShareExists (ctx , volConfig .InternalName ).Return (false , nil )
5123+ mockAPI .EXPECT ().SMBShareCreate (ctx , volConfig .InternalName , flexVol .JunctionPath ).Return (nil )
5124+ mockAPI .EXPECT ().SMBShareAccessControlCreate (ctx , volConfig .InternalName , volConfig .SMBShareACL ).Return (nil )
5125+ mockAPI .EXPECT ().SMBShareAccessControlDelete (ctx , volConfig .InternalName , smbShareDeleteACL ).Return (nil )
5126+ result := driver .Import (ctx , volConfig , "vol1" )
5127+ assert .NoError (t , result )
5128+ }
5129+
50705130func TestOntapNasStorageDriverVolumeImport_NameTemplateInvalidLabel (t * testing.T ) {
50715131 mockAPI , driver := newMockOntapNASDriver (t )
50725132
@@ -5188,6 +5248,71 @@ func TestOntapNasStorageDriverVolumeImport_NameTemplate(t *testing.T) {
51885248 assert .NoError (t , result )
51895249}
51905250
5251+ func TestOntapNasStorageDriverVolumeImport_SecureSMBAccessControlCreatefail (t * testing.T ) {
5252+ mockAPI , driver := newMockOntapNASDriver (t )
5253+ driver .Config .NASType = sa .SMB
5254+ volConfig := & storage.VolumeConfig {
5255+ Size : "1g" ,
5256+ Encryption : "false" ,
5257+ InternalName : "vol2" ,
5258+ PeerVolumeHandle : "fakesvm:vol1" ,
5259+ ImportNotManaged : false ,
5260+ UnixPermissions : DefaultUnixPermissions ,
5261+ SMBShareACL : map [string ]string {"usr" : "full_control" },
5262+ SecureSMBEnabled : true ,
5263+ }
5264+ flexVol := & api.Volume {
5265+ Name : "flexvol" ,
5266+ Comment : "flexvol" ,
5267+ JunctionPath : "/vol1" ,
5268+ Size : "1" ,
5269+ }
5270+
5271+ mockAPI .EXPECT ().SVMName ().AnyTimes ().Return ("SVM1" )
5272+ mockAPI .EXPECT ().VolumeInfo (ctx , "vol1" ).Return (flexVol , nil )
5273+ mockAPI .EXPECT ().VolumeRename (ctx , "vol1" , "vol2" ).Return (nil )
5274+ mockAPI .EXPECT ().VolumeModifyUnixPermissions (ctx , "vol2" , "vol1" , DefaultUnixPermissions ).Return (nil )
5275+ mockAPI .EXPECT ().SMBShareExists (ctx , volConfig .InternalName ).Return (false , nil )
5276+ mockAPI .EXPECT ().SMBShareCreate (ctx , volConfig .InternalName , flexVol .JunctionPath ).Return (nil )
5277+ mockAPI .EXPECT ().SMBShareAccessControlCreate (ctx , volConfig .InternalName ,
5278+ volConfig .SMBShareACL ).Return (fmt .Errorf ("cannot create SMB Share Access Control rule" ))
5279+ result := driver .Import (ctx , volConfig , "vol1" )
5280+ assert .Error (t , result )
5281+ }
5282+
5283+ func TestOntapNasStorageDriverVolumeImport_SecureSMBAccessControlDeletefail (t * testing.T ) {
5284+ mockAPI , driver := newMockOntapNASDriver (t )
5285+ driver .Config .NASType = sa .SMB
5286+ volConfig := & storage.VolumeConfig {
5287+ Size : "1g" ,
5288+ Encryption : "false" ,
5289+ InternalName : "vol2" ,
5290+ PeerVolumeHandle : "fakesvm:vol1" ,
5291+ ImportNotManaged : false ,
5292+ UnixPermissions : DefaultUnixPermissions ,
5293+ SMBShareACL : map [string ]string {"user" : "full_control" },
5294+ SecureSMBEnabled : true ,
5295+ }
5296+ flexVol := & api.Volume {
5297+ Name : "flexvol" ,
5298+ Comment : "flexvol" ,
5299+ JunctionPath : "/vol1" ,
5300+ Size : "1" ,
5301+ }
5302+
5303+ mockAPI .EXPECT ().SVMName ().AnyTimes ().Return ("SVM1" )
5304+ mockAPI .EXPECT ().VolumeInfo (ctx , "vol1" ).Return (flexVol , nil )
5305+ mockAPI .EXPECT ().VolumeRename (ctx , "vol1" , "vol2" ).Return (nil )
5306+ mockAPI .EXPECT ().VolumeModifyUnixPermissions (ctx , "vol2" , "vol1" , DefaultUnixPermissions ).Return (nil )
5307+ mockAPI .EXPECT ().SMBShareExists (ctx , volConfig .InternalName ).Return (false , nil )
5308+ mockAPI .EXPECT ().SMBShareCreate (ctx , volConfig .InternalName , flexVol .JunctionPath ).Return (nil )
5309+ mockAPI .EXPECT ().SMBShareAccessControlCreate (ctx , volConfig .InternalName , volConfig .SMBShareACL ).Return (nil )
5310+ mockAPI .EXPECT ().SMBShareAccessControlDelete (ctx , volConfig .InternalName ,
5311+ smbShareDeleteACL ).Return (fmt .Errorf ("cannot delete SMB Share Access Control rule" ))
5312+ result := driver .Import (ctx , volConfig , "vol1" )
5313+ assert .Error (t , result )
5314+ }
5315+
51915316func TestOntapNasStorageDriverVolumeImport_NameTemplateLabelLengthExceeding (t * testing.T ) {
51925317 mockAPI , driver := newMockOntapNASDriver (t )
51935318
0 commit comments