public async Task CloudAdapterConnectorFactory() { // this is just a basic test to verify the wire-up of a ConnectorFactory in the CloudAdapter // Arrange var headerDictionaryMock = new Mock <IHeaderDictionary>(); headerDictionaryMock.Setup(h => h[It.Is <string>(v => v == "Authorization")]).Returns <string>(null); var httpRequestMock = new Mock <HttpRequest>(); httpRequestMock.Setup(r => r.Method).Returns(HttpMethods.Post); httpRequestMock.Setup(r => r.Body).Returns(CreateMessageActivityStream()); httpRequestMock.Setup(r => r.Headers).Returns(headerDictionaryMock.Object); var httpResponseMock = new Mock <HttpResponse>(); var claimsIdentity = new ClaimsIdentity(); var authenticateRequestResult = new AuthenticateRequestResult { ClaimsIdentity = claimsIdentity, ConnectorFactory = new TestConnectorFactory(), Audience = "audience", CallerId = "callerId" }; var userTokenClient = new TestUserTokenClient("appId"); var cloudEnvironmentMock = new Mock <BotFrameworkAuthentication>(); cloudEnvironmentMock.Setup(ce => ce.AuthenticateRequestAsync(It.IsAny <Activity>(), It.IsAny <string>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(authenticateRequestResult)); cloudEnvironmentMock.Setup(ce => ce.CreateConnectorFactory(It.IsAny <ClaimsIdentity>())).Returns(new TestConnectorFactory()); cloudEnvironmentMock.Setup(ce => ce.CreateUserTokenClientAsync(It.IsAny <ClaimsIdentity>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult <UserTokenClient>(userTokenClient)); var bot = new ConnectorFactoryBot(); // Act var adapter = new CloudAdapter(cloudEnvironmentMock.Object); await adapter.ProcessAsync(httpRequestMock.Object, httpResponseMock.Object, bot); // Assert Assert.Equal("audience", bot.Authorization.Parameter); Assert.Equal(claimsIdentity, bot.Identity); Assert.Equal(userTokenClient, bot.UserTokenClient); Assert.True(bot.ConnectorClient != null); Assert.True(bot.BotCallbackHandler != null); }
public async Task CloudAdapterContinueConversation() { // Arrange var claimsIdentity = new ClaimsIdentity(); var authenticateRequestResult = new AuthenticateRequestResult { ClaimsIdentity = claimsIdentity, ConnectorFactory = new TestConnectorFactory(), Scope = "scope", CallerId = "callerId" }; var userTokenClient = new TestUserTokenClient("appId"); var cloudEnvironmentMock = new Mock <BotFrameworkAuthentication>(); cloudEnvironmentMock.Setup(ce => ce.AuthenticateRequestAsync(It.IsAny <Activity>(), It.IsAny <string>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(authenticateRequestResult)); cloudEnvironmentMock.Setup(ce => ce.CreateConnectorFactory(It.IsAny <ClaimsIdentity>())).Returns(new TestConnectorFactory()); cloudEnvironmentMock.Setup(ce => ce.CreateUserTokenClientAsync(It.IsAny <ClaimsIdentity>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult <UserTokenClient>(userTokenClient)); var bot = new ConnectorFactoryBot(); var expectedServiceUrl = "http://serviceUrl"; var conversationAccount = new ConversationAccount { Id = "conversation Id" }; var continuationActivity = new Activity { Type = ActivityTypes.Event, ServiceUrl = expectedServiceUrl, Conversation = conversationAccount }; var conversationReference = new ConversationReference { ServiceUrl = expectedServiceUrl, Conversation = conversationAccount }; var actualServiceUrl1 = string.Empty; var actualServiceUrl2 = string.Empty; var actualServiceUrl3 = string.Empty; var actualServiceUrl4 = string.Empty; var actualServiceUrl5 = string.Empty; var actualServiceUrl6 = string.Empty; BotCallbackHandler callback1 = (t, c) => { actualServiceUrl1 = t.Activity.ServiceUrl; return(Task.CompletedTask); }; BotCallbackHandler callback2 = (t, c) => { actualServiceUrl2 = t.Activity.ServiceUrl; return(Task.CompletedTask); }; BotCallbackHandler callback3 = (t, c) => { actualServiceUrl3 = t.Activity.ServiceUrl; return(Task.CompletedTask); }; BotCallbackHandler callback4 = (t, c) => { actualServiceUrl4 = t.Activity.ServiceUrl; return(Task.CompletedTask); }; BotCallbackHandler callback5 = (t, c) => { actualServiceUrl5 = t.Activity.ServiceUrl; return(Task.CompletedTask); }; BotCallbackHandler callback6 = (t, c) => { actualServiceUrl6 = t.Activity.ServiceUrl; return(Task.CompletedTask); }; // Act var adapter = new CloudAdapter(cloudEnvironmentMock.Object); await adapter.ContinueConversationAsync("botAppId", continuationActivity, callback1, CancellationToken.None); await adapter.ContinueConversationAsync(claimsIdentity, continuationActivity, callback2, CancellationToken.None); await adapter.ContinueConversationAsync(claimsIdentity, continuationActivity, "audience", callback3, CancellationToken.None); await adapter.ContinueConversationAsync("botAppId", conversationReference, callback4, CancellationToken.None); await adapter.ContinueConversationAsync(claimsIdentity, conversationReference, callback5, CancellationToken.None); await adapter.ContinueConversationAsync(claimsIdentity, conversationReference, "audience", callback6, CancellationToken.None); // Assert Assert.Equal(expectedServiceUrl, actualServiceUrl1); Assert.Equal(expectedServiceUrl, actualServiceUrl2); Assert.Equal(expectedServiceUrl, actualServiceUrl3); Assert.Equal(expectedServiceUrl, actualServiceUrl4); Assert.Equal(expectedServiceUrl, actualServiceUrl5); Assert.Equal(expectedServiceUrl, actualServiceUrl6); }