@@ -4280,3 +4280,106 @@ func TestEnforceLocalResolutionForTarFiles_Integration(t *testing.T) {
42804280 })
42814281 }
42824282}
4283+
4284+ func TestUploadZip_AsMultipartUpload_when_FF_Enable_ZIP_Exceeds_5GB (t * testing.T ) {
4285+ fileInfo , err := os .Stat ("data/sources.zip" )
4286+ if err != nil {
4287+ t .Fatalf ("Failed to close zip file: %v" , err )
4288+ }
4289+ // Simulate a file size > 5GB by setting MaxSizeBytes to less than actual size
4290+ MaxSizeBytes = fileInfo .Size () - 1
4291+ defer func () { MaxSizeBytes = 5 * 1024 * 1024 * 1024 }() // Reset after test
4292+
4293+ uploadWrapper := mock.UploadsMockWrapper {}
4294+ mock .Flag = wrappers.FeatureFlagResponseModel {Name : wrappers .IncreaseFileUploadLimit , Status : true }
4295+ featureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
4296+ url , zipPath , err := uploadZip (& uploadWrapper , "data/sources.zip" , false , true , featureFlagsWrapper )
4297+ assert .NilError (t , err )
4298+ assert .Equal (t , zipPath , "" )
4299+ assert .Equal (t , url , "multiPart/path/to/nowhere" )
4300+ }
4301+
4302+ func TestUploadZip_AsMultipartUpload_when_FF_Disable_ZIP_Exceeds_5GB (t * testing.T ) {
4303+ fileInfo , err := os .Stat ("data/sources.zip" )
4304+ if err != nil {
4305+ t .Fatalf ("Failed to close zip file: %v" , err )
4306+ }
4307+ // Simulate a file size > 5GB by setting MaxSizeBytes to less than actual size
4308+ MaxSizeBytes = fileInfo .Size () - 1
4309+ defer func () { MaxSizeBytes = 5 * 1024 * 1024 * 1024 }() // Reset after test
4310+
4311+ uploadWrapper := mock.UploadsMockWrapper {}
4312+ mock .Flag = wrappers.FeatureFlagResponseModel {Name : wrappers .IncreaseFileUploadLimit , Status : false }
4313+ featureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
4314+ url , zipPath , err := uploadZip (& uploadWrapper , "data/sources.zip" , false , true , featureFlagsWrapper )
4315+ assert .NilError (t , err )
4316+ assert .Equal (t , zipPath , "" )
4317+ assert .Equal (t , url , "singlePart/path/to/nowhere" )
4318+ }
4319+
4320+ func TestUploadZip_AsMultipartUpload_when_FF_Enable_ZIP_LessThan_5GB (t * testing.T ) {
4321+ uploadWrapper := mock.UploadsMockWrapper {}
4322+ mock .Flag = wrappers.FeatureFlagResponseModel {Name : wrappers .IncreaseFileUploadLimit , Status : true }
4323+ featureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
4324+ url , zipPath , err := uploadZip (& uploadWrapper , "data/sources.zip" , false , true , featureFlagsWrapper )
4325+ assert .NilError (t , err )
4326+ assert .Equal (t , zipPath , "" )
4327+ assert .Equal (t , url , "singlePart/path/to/nowhere" )
4328+ }
4329+
4330+ func TestUploadZip_AsMultipartUpload_when_FF_Disable_ZIP_LessThan_5GB (t * testing.T ) {
4331+ uploadWrapper := mock.UploadsMockWrapper {}
4332+ mock .Flag = wrappers.FeatureFlagResponseModel {Name : wrappers .IncreaseFileUploadLimit , Status : false }
4333+ featureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
4334+ url , zipPath , err := uploadZip (& uploadWrapper , "data/sources.zip" , false , true , featureFlagsWrapper )
4335+ assert .NilError (t , err )
4336+ assert .Equal (t , zipPath , "" )
4337+ assert .Equal (t , url , "singlePart/path/to/nowhere" )
4338+ }
4339+
4340+ func TestUploadZip_AsMultipartUpload_when_FF_Enable_ZIP_Exceeds_5GB_Error (t * testing.T ) {
4341+ // Create a temporary zip file
4342+ dir := t .TempDir ()
4343+ zipPathTemp := filepath .Join (dir , "failureCaseLarge.zip" )
4344+
4345+ // Create the zip file
4346+ zipFile , err := os .Create (zipPathTemp )
4347+ if err != nil {
4348+ t .Fatalf ("Failed to create zip file: %v" , err )
4349+ }
4350+ defer func (zipFile * os.File ) {
4351+ err := zipFile .Close ()
4352+ if err != nil {
4353+ t .Fatalf ("Failed to close zip file: %v" , err )
4354+ }
4355+ }(zipFile )
4356+
4357+ // Seek to 5KB + 1 byte
4358+ _ , err = zipFile .Seek (5 * 1024 + 1 , 0 ) // 5121 bytes
4359+ if err != nil {
4360+ panic ("Failed to seek in zip file: " + err .Error ())
4361+ }
4362+
4363+ // Write a single byte to allocate space
4364+ _ , err = zipFile .Write ([]byte {0 })
4365+ if err != nil {
4366+ panic ("Failed to write to zip file: " + err .Error ())
4367+ }
4368+
4369+ fileInfo , err := os .Stat (zipPathTemp )
4370+ if err != nil {
4371+ t .Fatalf ("Failed to close zip file: %v" , err )
4372+ }
4373+
4374+ // Simulate a file size > 5GB by setting MaxSizeBytes to less than actual size
4375+ MaxSizeBytes = fileInfo .Size () - 1
4376+ defer func () { MaxSizeBytes = 5 * 1024 * 1024 * 1024 }() //
4377+
4378+ uploadWrapper := mock.UploadsMockWrapper {}
4379+ mock .Flag = wrappers.FeatureFlagResponseModel {Name : wrappers .IncreaseFileUploadLimit , Status : true }
4380+ featureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
4381+ _ , zipPath , err := uploadZip (& uploadWrapper , zipPathTemp , false , true , featureFlagsWrapper )
4382+ assert .Assert (t , err != nil )
4383+ assert .Assert (t , strings .Contains (err .Error (), "error from UploadFileInMultipart" ), err .Error ())
4384+ assert .Equal (t , zipPath , "" )
4385+ }
0 commit comments