private static void AssertCurrentTelemetry( HttpRequestMessage requestMessage, ApiIds apiId, string regionSource, string region = TestConstants.Region, bool isCacheSerialized = false, string userProvidedRegion = "", string isValidUserProvidedRegion = "", string fallbackToGlobal = "0") { string[] telemetryCategories = requestMessage.Headers.GetValues( TelemetryConstants.XClientCurrentTelemetry).Single().Split('|'); Assert.AreEqual(3, telemetryCategories.Length); Assert.AreEqual(1, telemetryCategories[0].Split(',').Length); // version Assert.AreEqual(2, telemetryCategories[1].Split(',').Length); // api_id, cache_info Assert.AreEqual(7, telemetryCategories[2].Split(',').Length); // platform_fields Assert.AreEqual(TelemetryConstants.HttpTelemetrySchemaVersion, telemetryCategories[0]); // version Assert.AreEqual( apiId.ToString("D"), telemetryCategories[1].Split(',')[0]); // current_api_id string[] platformConfig = telemetryCategories[2].Split(','); Assert.AreEqual(region, platformConfig[0]); Assert.AreEqual(regionSource, platformConfig[1]); Assert.AreEqual(isCacheSerialized ? "1" : "0", platformConfig[2]); Assert.AreEqual(userProvidedRegion, platformConfig[3]); Assert.AreEqual(isValidUserProvidedRegion, platformConfig[4]); Assert.AreEqual(fallbackToGlobal, platformConfig[5]); }
private async Task <IEnumerable <IAccount> > GetAccountsInternalAsync(ApiIds apiId, string homeAccountIdFilter = null) { RequestContext requestContext = CreateRequestContext(Guid.NewGuid()); var authParameters = new AuthenticationRequestParameters( ServiceBundle, UserTokenCacheInternal, new AcquireTokenCommonParameters() { ApiId = apiId }, requestContext, homeAccountIdFilter); // a simple session consisting of a single call var cacheSessionManager = new CacheSessionManager( UserTokenCacheInternal, authParameters); var accountsFromCache = await cacheSessionManager.GetAccountsAsync().ConfigureAwait(false); var accountsFromBroker = await GetAccountsFromBrokerAsync(homeAccountIdFilter, cacheSessionManager).ConfigureAwait(false); accountsFromCache = accountsFromCache ?? Enumerable.Empty <IAccount>(); accountsFromBroker = accountsFromBroker ?? Enumerable.Empty <IAccount>(); ServiceBundle.DefaultLogger.Info($"Found {accountsFromCache.Count()} cache accounts and {accountsFromBroker.Count()} broker accounts"); IEnumerable <IAccount> cacheAndBrokerAccounts = MergeAccounts(accountsFromCache, accountsFromBroker); ServiceBundle.DefaultLogger.Info($"Returning {cacheAndBrokerAccounts.Count()} accounts"); return(cacheAndBrokerAccounts); }
private static void AssertCurrentTelemetry( HttpRequestMessage requestMessage, ApiIds apiId, bool forceRefresh, bool isFirstRequest) { string actualCurrentTelemetry = requestMessage.Headers.GetValues( TelemetryConstants.XClientCurrentTelemetry).Single(); var actualTelemetryParts = actualCurrentTelemetry.Split('|'); Assert.AreEqual(3, actualTelemetryParts.Length); Assert.AreEqual(TelemetryConstants.HttpTelemetrySchemaVersion2, actualTelemetryParts[0]); // version Assert.AreEqual( ((int)apiId).ToString(CultureInfo.InvariantCulture), actualTelemetryParts[1].Split(',')[0]); // current_api_id Assert.IsTrue(actualTelemetryParts[1].EndsWith(forceRefresh ? "1" : "0")); // force_refresh flag Assert.AreEqual(TestConstants.Region, actualTelemetryParts[2].Split(',')[0]); if (isFirstRequest) { Assert.IsTrue(actualTelemetryParts[2].EndsWith(((int)RegionSource.EnvVariable).ToString(CultureInfo.InvariantCulture))); } else { Assert.IsTrue(actualTelemetryParts[2].EndsWith(((int)RegionSource.Cache).ToString(CultureInfo.InvariantCulture))); } }
private static void AssertCurrentTelemetry( HttpRequestMessage requestMessage, ApiIds apiId, CacheInfoTelemetry cacheInfo, bool isCacheSerialized = false, bool isLegacyCacheEnabled = true) { string[] telemetryCategories = requestMessage.Headers.GetValues( TelemetryConstants.XClientCurrentTelemetry).Single().Split('|'); Assert.AreEqual(3, telemetryCategories.Length); Assert.AreEqual(1, telemetryCategories[0].Split(',').Length); // version Assert.AreEqual(5, telemetryCategories[1].Split(',').Length); // api_id, cache_info, region_used, region_source, region_outcome Assert.AreEqual(2, telemetryCategories[2].Split(',').Length); // platform_fields Assert.AreEqual(TelemetryConstants.HttpTelemetrySchemaVersion, telemetryCategories[0]); // version Assert.AreEqual( apiId.ToString("D"), telemetryCategories[1].Split(',')[0]); // current_api_id Assert.AreEqual(cacheInfo.ToString("D"), telemetryCategories[1].Split(',')[1]); // cache_info Assert.AreEqual(isCacheSerialized ? "1" : "0", telemetryCategories[2].Split(',')[0]); // is_cache_serialized Assert.AreEqual(isLegacyCacheEnabled ? "1" : "0", telemetryCategories[2].Split(',')[1]); // is_legacy_cache_enabled }
private static void AssertCurrentTelemetry( HttpRequestMessage requestMessage, ApiIds apiId, string regionSource, string regionOutcome, string region = TestConstants.Region, bool isCacheSerialized = false) { string[] telemetryCategories = requestMessage.Headers.GetValues( TelemetryConstants.XClientCurrentTelemetry).Single().Split('|'); Assert.AreEqual(3, telemetryCategories.Length); Assert.AreEqual(1, telemetryCategories[0].Split(',').Length); // version Assert.AreEqual(5, telemetryCategories[1].Split(',').Length); // api_id, cache_info, region_used, region_source, region_outcome Assert.AreEqual(2, telemetryCategories[2].Split(',').Length); // platform_fields Assert.AreEqual(TelemetryConstants.HttpTelemetrySchemaVersion, telemetryCategories[0]); // version Assert.AreEqual( apiId.ToString("D"), telemetryCategories[1].Split(',')[0]); // current_api_id Assert.AreEqual( region, telemetryCategories[1].Split(',')[2]); // region_used Assert.AreEqual( regionSource, telemetryCategories[1].Split(',')[3]); // region_source Assert.AreEqual( regionOutcome, telemetryCategories[1].Split(',')[4]); // region_outcome Assert.AreEqual(isCacheSerialized ? "1" : "0", telemetryCategories[2].Split(',')[0]); }
private static void AssertCurrentTelemetry( HttpRequestMessage requestMessage, ApiIds apiId, bool forceRefresh, string regionSource, bool isCacheSerialized = false, string userProvidedRegion = "", string isvalidUserProvidedRegion = "") { string actualCurrentTelemetry = requestMessage.Headers.GetValues( TelemetryConstants.XClientCurrentTelemetry).Single(); var actualTelemetryParts = actualCurrentTelemetry.Split('|'); Assert.AreEqual(3, actualTelemetryParts.Length); Assert.AreEqual(TelemetryConstants.HttpTelemetrySchemaVersion2, actualTelemetryParts[0]); // version Assert.AreEqual( ((int)apiId).ToString(CultureInfo.InvariantCulture), actualTelemetryParts[1].Split(',')[0]); // current_api_id Assert.IsTrue(actualTelemetryParts[1].EndsWith(forceRefresh ? "1" : "0")); // force_refresh flag string[] platformConfig = actualTelemetryParts[2].Split(','); Assert.AreEqual(isCacheSerialized ? "1" : "0", platformConfig[2]); Assert.AreEqual(TestConstants.Region, platformConfig[0]); Assert.AreEqual(regionSource, platformConfig[1]); Assert.AreEqual(userProvidedRegion, platformConfig[3]); Assert.AreEqual(isvalidUserProvidedRegion, platformConfig[4]); }
private static void AssertCurrentTelemetry( HttpRequestMessage requestMessage, ApiIds apiId, bool forceRefresh, bool isCacheSerialized = false, bool isLegacyCacheEnabled = true, string cacheRefresh = "") { string actualCurrentTelemetry = requestMessage.Headers.GetValues( TelemetryConstants.XClientCurrentTelemetry).Single(); var actualTelemetryParts = actualCurrentTelemetry.Split('|'); Assert.AreEqual(3, actualTelemetryParts.Length); Assert.AreEqual(TelemetryConstants.HttpTelemetrySchemaVersion2, actualTelemetryParts[0]); // version Assert.AreEqual( ((int)apiId).ToString(CultureInfo.InvariantCulture), actualTelemetryParts[1].Split(',')[0]); // current_api_id Assert.AreEqual(forceRefresh ? "1" : "0", actualTelemetryParts[1].Split(',')[1]); // force_refresh flag Assert.AreEqual(isCacheSerialized ? "1" : "0", actualTelemetryParts[2].Split(',')[2]); // is_cache_serialized Assert.AreEqual(isLegacyCacheEnabled ? "1" : "0", actualTelemetryParts[2].Split(',')[6]); // is_legacy_cache_enabled Assert.AreEqual(cacheRefresh, actualTelemetryParts[1].Split(',')[2]); // Cache_refresh }
public static AuthenticationRequestParameters CreateAuthenticationRequestParameters( IServiceBundle serviceBundle, Authority authority = null, HashSet <string> scopes = null, RequestContext requestContext = null, ApiIds apiID = ApiIds.None) { var commonParameters = new AcquireTokenCommonParameters { Scopes = scopes ?? TestConstants.s_scope, ApiId = apiID }; authority = authority ?? Authority.CreateAuthority(TestConstants.AuthorityTestTenant); requestContext = requestContext ?? new RequestContext(serviceBundle, Guid.NewGuid()) { ApiEvent = new Client.TelemetryCore.Internal.Events.ApiEvent( serviceBundle.ApplicationLogger, serviceBundle.PlatformProxy.CryptographyManager, Guid.NewGuid().ToString()) }; return(new AuthenticationRequestParameters( serviceBundle, new TokenCache(serviceBundle, false), commonParameters, requestContext, authority) { }); }
private async Task <IEnumerable <IAccount> > GetAccountsInternalAsync(ApiIds apiId, string homeAccountIdFilter = null) { var accountsFromCache = await GetAccountsFromCacheAsync(apiId, homeAccountIdFilter).ConfigureAwait(false); IEnumerable <IAccount> cacheAndBrokerAccounts = await MergeWithBrokerAccountsAsync(accountsFromCache, homeAccountIdFilter).ConfigureAwait(false); return(cacheAndBrokerAccounts); }
private async Task <IEnumerable <IAccount> > GetAccountsInternalAsync(ApiIds apiId, string homeAccountIdFilter = null) { var accountsFromCache = await GetAccountsFromCacheAsync(apiId, homeAccountIdFilter).ConfigureAwait(false); var accountsFromBroker = await GetAccountsFromBrokerAsync(homeAccountIdFilter).ConfigureAwait(false); ServiceBundle.DefaultLogger.Info($"Found {accountsFromCache.Count()} cache accounts and {accountsFromCache.Count()} broker accounts"); IEnumerable <IAccount> cacheAndBrokerAccounts = MergeAccounts(accountsFromCache, accountsFromBroker); ServiceBundle.DefaultLogger.Verbose($"Returning {cacheAndBrokerAccounts.Count()} accounts"); return(cacheAndBrokerAccounts); }
private async Task <IEnumerable <IAccount> > GetAccountsInternalAsync(ApiIds apiId, string homeAccountIdFilter, CancellationToken cancellationToken) { Guid correlationId = Guid.NewGuid(); RequestContext requestContext = CreateRequestContext(correlationId, cancellationToken); requestContext.ApiEvent = new ApiEvent(requestContext.Logger, requestContext.ServiceBundle.PlatformProxy.CryptographyManager, correlationId.ToString()); requestContext.ApiEvent.ApiId = apiId; var authority = await Microsoft.Identity.Client.Instance.Authority.CreateAuthorityForRequestAsync( requestContext, null).ConfigureAwait(false); var authParameters = new AuthenticationRequestParameters( ServiceBundle, UserTokenCacheInternal, new AcquireTokenCommonParameters() { ApiId = apiId }, requestContext, authority, homeAccountIdFilter); // a simple session consisting of a single call var cacheSessionManager = new CacheSessionManager( UserTokenCacheInternal, authParameters); var accountsFromCache = await cacheSessionManager.GetAccountsAsync().ConfigureAwait(false); var accountsFromBroker = await GetAccountsFromBrokerAsync(homeAccountIdFilter, cacheSessionManager, cancellationToken).ConfigureAwait(false); accountsFromCache = accountsFromCache ?? Enumerable.Empty <IAccount>(); accountsFromBroker = accountsFromBroker ?? Enumerable.Empty <IAccount>(); ServiceBundle.ApplicationLogger.Info($"Found {accountsFromCache.Count()} cache accounts and {accountsFromBroker.Count()} broker accounts"); IEnumerable <IAccount> cacheAndBrokerAccounts = MergeAccounts(accountsFromCache, accountsFromBroker); ServiceBundle.ApplicationLogger.Info($"Returning {cacheAndBrokerAccounts.Count()} accounts"); return(cacheAndBrokerAccounts); }
private async Task <IEnumerable <IAccount> > GetAccountsFromCacheAsync( ApiIds apiId, string homeAccountIdFilter) { RequestContext requestContext = CreateRequestContext(Guid.NewGuid()); var authParameters = new AuthenticationRequestParameters( ServiceBundle, UserTokenCacheInternal, new AcquireTokenCommonParameters() { ApiId = apiId }, requestContext, homeAccountIdFilter); // a simple session consisting of a single call CacheSessionManager cacheSessionManager = new CacheSessionManager( UserTokenCacheInternal, authParameters); return(await cacheSessionManager.GetAccountsAsync().ConfigureAwait(false)); }