/// <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)); }