From 16ad25f3a1ab60f4bfb61f139a3d1d65ef72438e Mon Sep 17 00:00:00 2001 From: Vaibhav Kamra Date: Tue, 13 Sep 2022 03:32:02 -0700 Subject: [PATCH] Implement wrapper around M365 helper methods (#825) ## Description Exports functionality useful for external services/validators ## Type of change - [x] :sunflower: Feature - [ ] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Test - [ ] :computer: CI/Deployment - [ ] :hamster: Trivial/Minor ## Test Plan - [ ] :muscle: Manual - [x] :zap: Unit test - [ ] :green_heart: E2E --- src/pkg/services/m365/m365.go | 19 ++++++++++++++ src/pkg/services/m365/m365_test.go | 40 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/pkg/services/m365/m365.go create mode 100644 src/pkg/services/m365/m365_test.go diff --git a/src/pkg/services/m365/m365.go b/src/pkg/services/m365/m365.go new file mode 100644 index 000000000..9c1b2a611 --- /dev/null +++ b/src/pkg/services/m365/m365.go @@ -0,0 +1,19 @@ +package m365 + +import ( + "github.com/pkg/errors" + + "github.com/alcionai/corso/src/internal/connector" + "github.com/alcionai/corso/src/pkg/account" +) + +// Users returns a list of users in the specified M365 tenant +// TODO: Implement paging support +func Users(m365Account account.Account) ([]string, error) { + gc, err := connector.NewGraphConnector(m365Account) + if err != nil { + return nil, errors.Wrap(err, "could not initialize M365 graph connection") + } + + return gc.GetUsers(), nil +} diff --git a/src/pkg/services/m365/m365_test.go b/src/pkg/services/m365/m365_test.go new file mode 100644 index 000000000..2b7d8e595 --- /dev/null +++ b/src/pkg/services/m365/m365_test.go @@ -0,0 +1,40 @@ +package m365 + +import ( + "testing" + + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + + "github.com/alcionai/corso/src/internal/tester" +) + +type M365IntegrationSuite struct { + suite.Suite +} + +func TestM365IntegrationSuite(t *testing.T) { + if err := tester.RunOnAny( + tester.CorsoCITests, + ); err != nil { + t.Skip(err) + } + + suite.Run(t, new(M365IntegrationSuite)) +} + +func (suite *M365IntegrationSuite) SetupSuite() { + _, err := tester.GetRequiredEnvSls( + tester.M365AcctCredEnvs) + require.NoError(suite.T(), err) +} + +func (suite *M365IntegrationSuite) TestUsers() { + acct := tester.NewM365Account(suite.T()) + + users, err := Users(acct) + require.NoError(suite.T(), err) + + require.NotNil(suite.T(), users) + require.Greater(suite.T(), len(users), 0) +}