public async Task TestAdapterTokenExchange() { var convoState = new ConversationState(new MemoryStorage()); var adapter = new TestAdapter() .Use(new AutoSaveStateMiddleware(convoState)); var connectionName = "myConnection"; var exchangeToken = "exch123"; var token = "abc123"; BotCallbackHandler botCallbackHandler = async(turnContext, cancellationToken) => { var userId = "fred"; adapter.AddExchangeableToken(connectionName, turnContext.Activity.ChannelId, userId, exchangeToken, token); // Positive case: Token var result = await adapter.ExchangeTokenAsync(turnContext, connectionName, userId, new TokenExchangeRequest() { Token = exchangeToken }); Assert.NotNull(result); Assert.Equal(token, result.Token); Assert.Equal(connectionName, result.ConnectionName); // Positive case: URI result = await adapter.ExchangeTokenAsync(turnContext, connectionName, userId, new TokenExchangeRequest() { Uri = exchangeToken }); Assert.NotNull(result); Assert.Equal(token, result.Token); Assert.Equal(connectionName, result.ConnectionName); // Negative case: Token result = await adapter.ExchangeTokenAsync(turnContext, connectionName, userId, new TokenExchangeRequest() { Token = "beeboop" }); Assert.Null(result); // Negative case: URI result = await adapter.ExchangeTokenAsync(turnContext, connectionName, userId, new TokenExchangeRequest() { Uri = "beeboop" }); Assert.Null(result); }; await new TestFlow(adapter, botCallbackHandler) .Send("hello") .StartTestAsync(); }