Adds a call to get user total count of licenses. Also corrects one test ID which i hope doesn't break E2E tests (although it should if it does, ha) --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [x] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup #### Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> #### Test Plan <!-- How will this be tested prior to merging.--> - [x] 💪 Manual - [x] ⚡ Unit test - [x] 💚 E2E
300 lines
12 KiB
Go
300 lines
12 KiB
Go
package tconfig
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/alcionai/clues"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/alcionai/corso/src/pkg/logger"
|
|
)
|
|
|
|
// M365TenantID returns a tenantID string representing the azureTenantID described
|
|
// by either the env var AZURE_TENANT_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func M365TenantID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 tenant ID from test configuration", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgAzureTenantID])
|
|
}
|
|
|
|
// M365TenantID returns a tenantID string representing the azureTenantID described
|
|
// by either the env var AZURE_TENANT_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func GetM365TenantID(ctx context.Context) string {
|
|
cfg, err := ReadTestConfig()
|
|
if err != nil {
|
|
logger.Ctx(ctx).Error(err, "retrieving m365 tenant ID from test configuration")
|
|
}
|
|
|
|
return strings.ToLower(cfg[TestCfgAzureTenantID])
|
|
}
|
|
|
|
// M365UserID returns an userID string representing the m365UserID described
|
|
// by either the env var CORSO_M365_TEST_USER_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func M365UserID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 user id from test configuration", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgUserID])
|
|
}
|
|
|
|
// GetM365UserID returns an userID string representing the m365UserID described
|
|
// by either the env var CORSO_M365_TEST_USER_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func GetM365UserID(ctx context.Context) string {
|
|
cfg, err := ReadTestConfig()
|
|
if err != nil {
|
|
logger.Ctx(ctx).Error(err, "retrieving m365 user id from test configuration")
|
|
}
|
|
|
|
return strings.ToLower(cfg[TestCfgUserID])
|
|
}
|
|
|
|
// SecondaryM365UserID returns an userID string representing the m365UserID
|
|
// described by either the env var CORSO_SECONDARY_M365_TEST_USER_ID, the
|
|
// corso_test.toml config file or the default value (in that order of priority).
|
|
// The default is a last-attempt fallback that will only work on alcion's
|
|
// testing org.
|
|
func SecondaryM365UserID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving secondary m365 user id from test configuration", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgSecondaryUserID])
|
|
}
|
|
|
|
// TertiaryM365UserID returns an userID string representing the m365UserID
|
|
// described by either the env var CORSO_TERTIARY_M365_TEST_USER_ID, the
|
|
// corso_test.toml config file or the default value (in that order of priority).
|
|
// The default is a last-attempt fallback that will only work on alcion's
|
|
// testing org.
|
|
func TertiaryM365UserID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving tertiary m365 user id from test configuration", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgTertiaryUserID])
|
|
}
|
|
|
|
// LoadTestM365SiteID returns a siteID string representing the m365SiteID
|
|
// described by either the env var CORSO_M365_LOAD_TEST_SITE_ID, the
|
|
// corso_test.toml config file or the default value (in that order of priority).
|
|
// The default is a last-attempt fallback that will only work on alcion's
|
|
// testing org.
|
|
func LoadTestM365SiteID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving load test m365 site id from test configuration", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgSiteID])
|
|
}
|
|
|
|
// LoadTestM365UserID returns an userID string representing the m365UserID
|
|
// described by either the env var CORSO_M365_LOAD_TEST_USER_ID, the
|
|
// corso_test.toml config file or the default value (in that order of priority).
|
|
// The default is a last-attempt fallback that will only work on alcion's
|
|
// testing org.
|
|
func LoadTestM365UserID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving load test m365 user id from test configuration", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgLoadTestUserID])
|
|
}
|
|
|
|
// expects cfg value to be a string representing an array such as:
|
|
// ["site1\,uuid","site2\,uuid"]
|
|
// the delimiter must be a |.
|
|
func LoadTestM365OrgSites(t *testing.T) []string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving load test m365 org sites from test configuration %+v", clues.ToCore(err))
|
|
|
|
// TODO: proper handling of site slice input.
|
|
// sites := cfg[TestCfgLoadTestOrgSites]
|
|
// sites = strings.TrimPrefix(sites, "[")
|
|
// sites = strings.TrimSuffix(sites, "]")
|
|
// sites = strings.ReplaceAll(sites, `"`, "")
|
|
// sites = strings.ReplaceAll(sites, `'`, "")
|
|
// sites = strings.ReplaceAll(sites, "|", ",")
|
|
|
|
// return strings.Split(sites, ",")
|
|
|
|
return []string{strings.ToLower(cfg[TestCfgSiteID])}
|
|
}
|
|
|
|
// expects cfg value to be a string representing an array such as:
|
|
// ["foo@example.com","bar@example.com"]
|
|
// the delimiter may be either a , or |.
|
|
func LoadTestM365OrgUsers(t *testing.T) []string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving load test m365 org users from test configuration %+v", clues.ToCore(err))
|
|
|
|
users := cfg[TestCfgLoadTestOrgUsers]
|
|
users = strings.TrimPrefix(users, "[")
|
|
users = strings.TrimSuffix(users, "]")
|
|
users = strings.ReplaceAll(users, `"`, "")
|
|
users = strings.ReplaceAll(users, `'`, "")
|
|
users = strings.ReplaceAll(users, "|", ",")
|
|
|
|
// a hack to skip using certain users when those accounts are
|
|
// temporarily being co-opted for non-testing purposes.
|
|
sl := strings.Split(users, ",")
|
|
remove := os.Getenv("IGNORE_LOAD_TEST_USER_ID")
|
|
|
|
if len(remove) == 0 {
|
|
return sl
|
|
}
|
|
|
|
idx := -1
|
|
|
|
for i, s := range sl {
|
|
if s == remove {
|
|
idx = i
|
|
break
|
|
}
|
|
}
|
|
|
|
return append(sl[:idx], sl[idx+1:]...)
|
|
}
|
|
|
|
// M365SiteID returns a siteID string representing the m365SiteID described
|
|
// by either the env var CORSO_M365_TEST_SITE_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func M365SiteID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 site id from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgSiteID])
|
|
}
|
|
|
|
// M365SiteURL returns a site webURL string representing the m365SiteURL described
|
|
// by either the env var CORSO_M365_TEST_SITE_URL, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func M365SiteURL(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 site url from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgSiteURL])
|
|
}
|
|
|
|
// GetM365SiteID returns a siteID string representing the m365SiteID described
|
|
// by either the env var CORSO_M365_TEST_SITE_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func GetM365SiteID(ctx context.Context) string {
|
|
cfg, err := ReadTestConfig()
|
|
if err != nil {
|
|
logger.Ctx(ctx).Error(err, "retrieving m365 site id from test configuration")
|
|
}
|
|
|
|
return strings.ToLower(cfg[TestCfgSiteID])
|
|
}
|
|
|
|
// SecondaryM365SiteID returns a siteID string representing the secondarym365SiteID described
|
|
// by either the env var CORSO_SECONDARY_M365_TEST_SITE_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func SecondaryM365SiteID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving secondary m365 site id from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgSecondarySiteID])
|
|
}
|
|
|
|
// GetM365TeamID returns a groupID string representing the m365TeamID described
|
|
// by either the env var CORSO_M365_TEST_TEAM_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func GetM365TeamID(ctx context.Context) string {
|
|
cfg, err := ReadTestConfig()
|
|
if err != nil {
|
|
logger.Ctx(ctx).Error(err, "retrieving m365 team id from test configuration")
|
|
}
|
|
|
|
return strings.ToLower(cfg[TestCfgTeamID])
|
|
}
|
|
|
|
// GetM365TeamSiteID returns a site ID string representing the m365TeamSiteID
|
|
// described by either the env var CORSO_M365_TEST_TEAM_SITE_ID, the
|
|
// corso_test.toml config file or the default value (in that order of priority).
|
|
// The default is a last-attempt fallback that will only work on alcion's
|
|
// testing org.
|
|
func GetM365TeamSiteID(ctx context.Context) string {
|
|
cfg, err := ReadTestConfig()
|
|
if err != nil {
|
|
logger.Ctx(ctx).Error(err, "retrieving m365 team id from test configuration")
|
|
}
|
|
|
|
return strings.ToLower(cfg[TestCfgTeamSiteID])
|
|
}
|
|
|
|
// UnlicensedM365UserID returns an userID string representing the m365UserID
|
|
// described by either the env var CORSO_M365_TEST_UNLICENSED_USER, the
|
|
// corso_test.toml config file or the default value (in that order of priority).
|
|
// The default is a last-attempt fallback that will only work on alcion's
|
|
// testing org.
|
|
func UnlicensedM365UserID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving unlicensed m365 user id from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgUnlicensedUserID])
|
|
}
|
|
|
|
// Teams
|
|
|
|
// M365TeamID returns a teamID string representing the m365TeamsID described
|
|
// by either the env var CORSO_M365_TEST_TEAM_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func M365TeamID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 team id from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgTeamID])
|
|
}
|
|
|
|
// M365TeamEmail returns a teamEmail string representing the m365TeamsEmail described
|
|
// by either the env var CORSO_M365_TEST_TEAM_EMAIL, the corso_test.toml config
|
|
// file or the default value (in that order of priority) and should belong the same group as the one
|
|
// represented by CORSO_M365_TEST_TEAM_ID. The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func M365TeamEmail(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 team email from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgTeamEmail])
|
|
}
|
|
|
|
// SecondaryM365TeamID returns a teamID string representing the secondarym365TeamID described
|
|
// by either the env var CORSO_SECONDARY_M365_TEST_TEAM_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
func SecondaryM365TeamID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving secondary m365 team id from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgSecondaryTeamID])
|
|
}
|
|
|
|
// Groups
|
|
|
|
// M365GroupID returns a groupID string representing the m365GroupID described
|
|
// by either the env var CORSO_M365_TEST_GROUP_ID, the corso_test.toml config
|
|
// file or the default value (in that order of priority). The default is a
|
|
// last-attempt fallback that will only work on alcion's testing org.
|
|
// NOTE: This Group will not have a Team associated with it.
|
|
func M365GroupID(t *testing.T) string {
|
|
cfg, err := ReadTestConfig()
|
|
require.NoError(t, err, "retrieving m365 group id from test configuration: %+v", clues.ToCore(err))
|
|
|
|
return strings.ToLower(cfg[TestCfgGroupID])
|
|
}
|