Skip to content
This repository has been archived by the owner on Oct 11, 2024. It is now read-only.

Commit

Permalink
Fix data clobbering issue when getting Quota Exceeded status (#4144)
Browse files Browse the repository at this point in the history
Don't clobber the Quota Exceeded status once we get it

Add unit test to make sure this doesn't happen

---

#### Does this PR need a docs update or release note?

- [x] ✅ Yes, it's included
- [ ] 🕐 Yes, but in a later PR
- [ ] ⛔ No

#### Type of change

- [ ] 🌻 Feature
- [x] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Supportability/Tests
- [ ] 💻 CI/Deployment
- [ ] 🧹 Tech Debt/Cleanup

#### Test Plan

- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
  • Loading branch information
ashmrtn authored Aug 29, 2023
1 parent bb1c030 commit cc5864f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased] (beta)

### Fixed
- Exchange backups would fail attempting to use delta tokens even if the user was over quota

## [v0.12.0] (beta) - 2023-08-28

### Added
Expand Down
2 changes: 1 addition & 1 deletion src/pkg/services/m365/api/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ func (c Users) GetInfo(ctx context.Context, userID string) (*UserInfo, error) {
return nil, clues.Stack(err)
}

userInfo.Mailbox.QuotaExceeded = graph.IsErrQuotaExceeded(err)
mi.QuotaExceeded = graph.IsErrQuotaExceeded(err)
}

userInfo.Mailbox = mi
Expand Down
27 changes: 27 additions & 0 deletions src/pkg/services/m365/api/users_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/h2non/gock"
"github.com/microsoftgraph/msgraph-sdk-go/models"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"

"github.com/alcionai/corso/src/internal/m365/graph"
Expand Down Expand Up @@ -250,3 +251,29 @@ func (suite *UsersIntgSuite) TestUsers_GetInfo_errors() {
})
}
}

func (suite *UsersIntgSuite) TestUsers_GetInfo_quotaExceeded() {
t := suite.T()
ctx, flush := tester.NewContext(t)

defer flush()
defer gock.Off()

gock.EnableNetworking()
gock.New(graphAPIHostURL).
// Wildcard match on the inbox folder ID.
Get(v1APIURLPath("users", suite.its.userID, "mailFolders", "(.*)", "messages", "delta")).
Reply(403).
SetHeaders(
map[string]string{
"Content-Type": "application/json; odata.metadata=minimal; " +
"odata.streaming=true; IEEE754Compatible=false; charset=utf-8",
},
).
BodyString(`{"error":{"code":"ErrorQuotaExceeded","message":"The process failed to get the correct properties."}}`)

output, err := suite.its.gockAC.Users().GetInfo(ctx, suite.its.userID)
require.NoError(t, err, clues.ToCore(err))

assert.True(t, output.Mailbox.QuotaExceeded)
}

0 comments on commit cc5864f

Please sign in to comment.