private static async Task ConnectAsync(bool automaticallyReconnect = false) { var url = AskUser("Bot url:"); var appId = AskUser("Bot app id:"); var appPassword = AskUser("Bot app password:"******"channelId", "Test" } }; if (!string.IsNullOrEmpty(appId) && !string.IsNullOrEmpty(appPassword)) { var credentials = new MsalAppCredentials(appId, appPassword, null, appId); var token = await credentials.GetTokenAsync(); headers.Add("Authorization", $"Bearer {token}"); } var configureNamedOptions = new ConfigureNamedOptions <ConsoleLoggerOptions>(string.Empty, null); var optionsFactory = new OptionsFactory <ConsoleLoggerOptions>(new[] { configureNamedOptions }, Enumerable.Empty <IPostConfigureOptions <ConsoleLoggerOptions> >()); var optionsMonitor = new OptionsMonitor <ConsoleLoggerOptions>(optionsFactory, Enumerable.Empty <IOptionsChangeTokenSource <ConsoleLoggerOptions> >(), new OptionsCache <ConsoleLoggerOptions>()); // Improvement opportunity: expose command / argument to control log level. var loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider(optionsMonitor) }, new LoggerFilterOptions { MinLevel = LogLevel.Debug }); _cancellationSource = new CancellationTokenSource(); _client = new WebSocketClient(url, new ConsoleRequestHandler(), logger: loggerFactory.CreateLogger("WebSocketClient")); _client.Disconnected += Client_Disconnected; _clientTask = _client.ConnectAsync(headers, _cancellationSource.Token); }
public async Task MsalAppCredentials_GetToken_Skills() { EnsureSettings(); MsalAppCredentials credentials = new MsalAppCredentials(testAppId, testPassword, scope: testAppId); var result = await credentials.GetTokenAsync(); Assert.IsNotNull(result); }
public async Task MsalAppCredentials_GetToken_Refresh() { EnsureSettings(); MsalAppCredentials credentials = new MsalAppCredentials(testAppId, testPassword); var result = await credentials.GetTokenAsync(); Assert.IsNotNull(result); var result2 = await credentials.GetTokenAsync(); Assert.AreEqual(result, result2); var result3 = await credentials.GetTokenAsync(true); Assert.IsNotNull(result3); Assert.AreNotEqual(result2, result3); }
public async Task MsalAppCredentials_GetToken_Refresh_ParallelLoad() { EnsureSettings(); MsalAppCredentials credentials = new MsalAppCredentials(testAppId, testPassword); List <Task <string> > tasks = new List <Task <string> >(); for (int i = 0; i < 1000; i++) { tasks.Add(credentials.GetTokenAsync()); } string prevResult = null; foreach (var item in tasks) { string result = await item; Assert.IsNotNull(result); if (prevResult != null) { Assert.AreEqual(prevResult, result); } prevResult = result; } tasks.Clear(); for (int i = 0; i < 1000; i++) { if (i % 100 == 50) { tasks.Add(credentials.GetTokenAsync(true)); } else { tasks.Add(credentials.GetTokenAsync()); } } HashSet <string> results = new HashSet <string>(); for (int i = 0; i < 1000; i++) { string result = await tasks[i]; if (i == 0) { results.Add(result); Assert.IsNotNull(result); } if (prevResult != null) { if (i % 100 == 50) { Assert.IsTrue(!results.Contains(result)); results.Add(result); } else { Assert.IsTrue(results.Contains(result)); } } } }