Example #1
0
        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);
        }
Example #2
0
        public async Task MsalAppCredentials_GetToken_Skills()
        {
            EnsureSettings();
            MsalAppCredentials credentials = new MsalAppCredentials(testAppId, testPassword, scope: testAppId);
            var result = await credentials.GetTokenAsync();

            Assert.IsNotNull(result);
        }
Example #3
0
        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);
        }
Example #4
0
        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));
                    }
                }
            }
        }