From 6719c8f7e323368fc3078ca8d6a2d62c4d7fa401 Mon Sep 17 00:00:00 2001 From: jules <130390278+juleslasarte@users.noreply.github.com> Date: Tue, 10 Oct 2023 18:19:17 -0700 Subject: [PATCH] many incidents --- src/pkg/services/m365/api/users.go | 4 ++-- src/pkg/services/m365/users.go | 20 +++++++++++++++++++- src/pkg/services/m365/users_test.go | 6 +++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/pkg/services/m365/api/users.go b/src/pkg/services/m365/api/users.go index cab471338..7079b4230 100644 --- a/src/pkg/services/m365/api/users.go +++ b/src/pkg/services/m365/api/users.go @@ -135,7 +135,7 @@ func (c Users) IsLicenseReconciliationNeeded(ctx context.Context, identifier str return resp, err } -func (c Users) AssignedPlans(ctx context.Context, identifier string) (models.Userable, error) { +func (c Users) AssignedPlansAndLicenses(ctx context.Context, identifier string) (models.Userable, error) { var ( resp models.Userable err error @@ -145,7 +145,7 @@ func (c Users) AssignedPlans(ctx context.Context, identifier string) (models.Use QueryParameters: &users.UserItemRequestBuilderGetQueryParameters{}, } - options.QueryParameters.Select = []string{"assignedPlans"} + options.QueryParameters.Select = []string{"assignedPlans", "assignedLicenses"} resp, err = c.Stable.Client().Users().ByUserId(identifier).Get(ctx, options) diff --git a/src/pkg/services/m365/users.go b/src/pkg/services/m365/users.go index 38000eb86..2b33d978a 100644 --- a/src/pkg/services/m365/users.go +++ b/src/pkg/services/m365/users.go @@ -133,7 +133,7 @@ func UserAssignedPlansCount(ctx context.Context, acct account.Account, userID st return 0, clues.Stack(err).WithClues(ctx) } - us, err := ac.Users().AssignedPlans(ctx, userID) + us, err := ac.Users().AssignedPlansAndLicenses(ctx, userID) if err != nil { return 0, err } @@ -145,6 +145,24 @@ func UserAssignedPlansCount(ctx context.Context, acct account.Account, userID st return 0, clues.New("user missing assigned plans") } +func UserAssignedLicenses(ctx context.Context, acct account.Account, userID string) (int, error) { + ac, err := makeAC(ctx, acct, path.UnknownService) + if err != nil { + return 0, clues.Stack(err).WithClues(ctx) + } + + us, err := ac.Users().AssignedPlansAndLicenses(ctx, userID) + if err != nil { + return 0, err + } + + if us.GetAssignedLicenses() != nil { + return len(us.GetAssignedLicenses()), nil + } + + return 0, clues.New("user missing assigned licenses") +} + // parseUser extracts information from `models.Userable` we care about func parseUser(item models.Userable) (*UserNoInfo, error) { if item.GetUserPrincipalName() == nil { diff --git a/src/pkg/services/m365/users_test.go b/src/pkg/services/m365/users_test.go index c8b30ae1b..550d97315 100644 --- a/src/pkg/services/m365/users_test.go +++ b/src/pkg/services/m365/users_test.go @@ -222,8 +222,12 @@ func (suite *userIntegrationSuite) TestUser_GetByID() { assert.NoError(t, err, clues.ToCore(err)) plans, err := UserAssignedPlansCount(ctx, acct, s.ID) assert.NoError(t, err, clues.ToCore(err)) + + lic, err := UserAssignedLicenses(ctx, acct, s.ID) + assert.NoError(t, err, clues.ToCore(err)) fmt.Printf("user: %v \n", reconciliationNeeded) - fmt.Printf("user: %v \n", plans) + fmt.Printf("plans: %v \n", plans) + fmt.Printf("lic: %v \n", lic) }) } }