Example #1
0
        /// <summary>
        /// Creates an OAuth client for the bot.
        /// </summary>
        /// <param name="turnContext">The context object for the current turn.</param>
        /// <returns>An OAuth client for the bot.</returns>
        protected virtual async Task <OAuthClient> CreateOAuthApiClientAsync(ITurnContext turnContext)
        {
            if (!OAuthClientConfig.EmulateOAuthCards &&
                string.Equals(turnContext.Activity.ChannelId, "emulator", StringComparison.InvariantCultureIgnoreCase) &&
                (await _credentialProvider.IsAuthenticationDisabledAsync().ConfigureAwait(false)))
            {
                OAuthClientConfig.EmulateOAuthCards = true;
            }

            var connectorClient = turnContext.TurnState.Get <IConnectorClient>();

            if (connectorClient == null)
            {
                throw new InvalidOperationException("An IConnectorClient is required in TurnState for this operation.");
            }

            if (OAuthClientConfig.EmulateOAuthCards)
            {
                // do not await task - we want this to run in the background
                var oauthClient = new OAuthClient(new Uri(turnContext.Activity.ServiceUrl), connectorClient.Credentials);
                var task        = Task.Run(() => OAuthClientConfig.SendEmulateOAuthCardsAsync(oauthClient, OAuthClientConfig.EmulateOAuthCards));
                return(oauthClient);
            }

            return(new OAuthClient(new Uri(OAuthClientConfig.OAuthEndpoint), connectorClient.Credentials));
        }
        public async Task SendEmulateOAuthCardsAsync_ShouldThrowOnNoLocalBot()
        {
            var client = new OAuthClient(new Uri("http://localhost"), new BotAccessTokenStub("token"));

            ServiceClientTracing.IsEnabled = true;

            if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("AGENT_OS")) &&
                Environment.GetEnvironmentVariable("AGENT_OS").Equals("Windows_NT"))
            {
                // Automated Windows build exception:
                await OAuthClientConfig.SendEmulateOAuthCardsAsync(client, true);

                Assert.True(true, "No exception thrown.");
            }
            else
            {
                // MacLinux build and local build exception:
                await Assert.ThrowsAsync <System.Net.Http.HttpRequestException>(() => OAuthClientConfig.SendEmulateOAuthCardsAsync(
                                                                                    client, true));
            }
        }
 public async Task SendEmulateOAuthCardsAsync_ShouldThrowOnNullClient()
 {
     await Assert.ThrowsAsync <NullReferenceException>(() => OAuthClientConfig.SendEmulateOAuthCardsAsync(
                                                           null, true));
 }