From 19d56b1e2941987b40d2299b67a119c71f7f3d8f Mon Sep 17 00:00:00 2001 From: Abhishek Pandey Date: Tue, 11 Jul 2023 14:46:33 -0700 Subject: [PATCH] Return original read closer if no extension factories are supplied (#3784) As title --- #### Does this PR need a docs update or release note? - [ ] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [x] :no_entry: No #### Type of change - [ ] :sunflower: Feature - [ ] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Supportability/Tests - [ ] :computer: CI/Deployment - [x] :broom: Tech Debt/Cleanup #### Issue(s) * # #### Test Plan - [ ] :muscle: Manual - [x] :zap: Unit test - [x] :green_heart: E2E --- src/internal/m365/onedrive/collection.go | 30 ++++++++----------- src/internal/m365/onedrive/collection_test.go | 5 +++- src/pkg/extensions/extensions.go | 7 +++-- src/pkg/extensions/extensions_test.go | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/internal/m365/onedrive/collection.go b/src/internal/m365/onedrive/collection.go index 0304144a3..f5d98da93 100644 --- a/src/internal/m365/onedrive/collection.go +++ b/src/internal/m365/onedrive/collection.go @@ -539,29 +539,23 @@ func (oc *Collection) populateDriveItem( return nil, err } - itemData := rc - - // Add per item extensions if available - if len(itemExtensionFactory) > 0 { - extRc, extData, err := extensions.AddItemExtensions( - ctx, - rc, - itemInfo, - itemExtensionFactory) - if err != nil { - err := clues.Wrap(err, "adding extensions").Label(fault.LabelForceNoBackupCreation) - el.AddRecoverable(ctx, err) - return nil, err - } - - itemData = extRc - itemInfo.Extension.Data = extData.Data + extRc, extData, err := extensions.AddItemExtensions( + ctx, + rc, + itemInfo, + itemExtensionFactory) + if err != nil { + err := clues.Wrap(err, "adding extensions").Label(fault.LabelForceNoBackupCreation) + el.AddRecoverable(ctx, err) + return nil, err } + itemInfo.Extension.Data = extData.Data + // display/log the item download progReader, _ := observe.ItemProgress( ctx, - itemData, + extRc, observe.ItemBackupMsg, clues.Hide(itemName+dataSuffix), itemSize) diff --git a/src/internal/m365/onedrive/collection_test.go b/src/internal/m365/onedrive/collection_test.go index 27ac1a804..bcd4da4b6 100644 --- a/src/internal/m365/onedrive/collection_test.go +++ b/src/internal/m365/onedrive/collection_test.go @@ -936,7 +936,10 @@ func (suite *CollectionUnitTestSuite) TestItemExtensions() { mbh.GI = mock.GetsItem{Err: assert.AnError} mbh.GIP = mock.GetsItemPermission{Perm: models.NewPermissionCollectionResponse()} mbh.GetResps = []*http.Response{ - {StatusCode: http.StatusOK, Body: io.NopCloser(strings.NewReader(string(test.payload)))}, + { + StatusCode: http.StatusOK, + Body: io.NopCloser(strings.NewReader(string(test.payload))), + }, } mbh.GetErrs = []error{ nil, diff --git a/src/pkg/extensions/extensions.go b/src/pkg/extensions/extensions.go index 1be40e09a..b4ab1047f 100644 --- a/src/pkg/extensions/extensions.go +++ b/src/pkg/extensions/extensions.go @@ -21,7 +21,8 @@ type CreateItemExtensioner interface { // AddItemExtensions wraps provided readcloser with extensions // supplied via factory, with the first extension in slice being -// the innermost one. +// the innermost one. If no extensions are provided, the original +// readcloser is returned. func AddItemExtensions( ctx context.Context, rc io.ReadCloser, @@ -32,12 +33,14 @@ func AddItemExtensions( return nil, nil, clues.New("nil readcloser") } + // If no extensions were supplied, return the original readcloser if len(factories) == 0 { - return nil, nil, clues.New("no extensions supplied") + return rc, &details.ExtensionData{}, nil } ctx = clues.Add(ctx, "num_extensions", len(factories)) + // Create extension data store to be passed to extensions extData := &details.ExtensionData{ Data: make(map[string]any), } diff --git a/src/pkg/extensions/extensions_test.go b/src/pkg/extensions/extensions_test.go index 57ed009ee..5740be955 100644 --- a/src/pkg/extensions/extensions_test.go +++ b/src/pkg/extensions/extensions_test.go @@ -85,7 +85,7 @@ func (suite *ExtensionsUnitSuite) TestAddItemExtensions() { extData *details.ExtensionData, err error, ) bool { - return err != nil && extRc == nil && extData == nil + return err == nil && extRc == testRc && extData != nil && extData.Data == nil }, }, {