public async Task TestMessagingExtensionConfigurationQuerySettingsUrl() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/querySettingsUrl", }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestMemberRemovedJustTheBot() { // Arrange var activity = new Activity { Type = ActivityTypes.ConversationUpdate, MembersRemoved = new List <ChannelAccount> { new ChannelAccount { Id = "c" }, }, Recipient = new ChannelAccount { Id = "c" }, }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(1, bot.Record.Count); Assert.AreEqual("OnConversationUpdateActivityAsync", bot.Record[0]); }
public async Task TestMessagingExtensionFetchTask() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/fetchTask", Value = JObject.Parse(@"{""commandId"":""testCommand""}"), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestMessagingExtensionSubmitActionPreviewActionSend() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/submitAction", Value = JObject.FromObject(new MessagingExtensionAction { BotMessagePreviewAction = "send", }), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestInvoke() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "gibberish", }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestTaskModuleSubmit() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "task/submit", }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(2, bot.Record.Count); Assert.AreEqual("OnInvokeActivityAsync", bot.Record[0]); Assert.AreEqual("OnTeamsTaskModuleSubmitAsync", bot.Record[1]); Assert.IsNotNull(activitiesToSend); Assert.AreEqual(1, activitiesToSend.Length); Assert.IsInstanceOfType(activitiesToSend[0].Value, typeof(InvokeResponse)); Assert.AreEqual(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestActionableMessageExecuteAction() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "actionableMessage/executeAction", Value = JObject.FromObject(new O365ConnectorCardActionQuery()), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.IsNotNull(activitiesToSend); Assert.AreEqual(1, activitiesToSend.Length); Assert.IsInstanceOfType(activitiesToSend[0].Value, typeof(InvokeResponse)); Assert.AreEqual(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestTaskModuleSubmit() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "task/submit", Value = JObject.Parse(@"{""data"":{""key"":""value"",""type"":""task / fetch""},""context"":{""theme"":""default""}}"), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsTaskModuleSubmitAsync", bot.Record[1]); Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestComposeExtensionQueryLink() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/queryLink", Value = JObject.FromObject(new AppBasedLinkQuery()), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.IsNotNull(activitiesToSend); Assert.AreEqual(1, activitiesToSend.Length); Assert.IsInstanceOfType(activitiesToSend[0].Value, typeof(InvokeResponse)); Assert.AreEqual(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestMessagingExtensionConfigurationSetting() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/setting", }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.IsNotNull(activitiesToSend); Assert.AreEqual(1, activitiesToSend.Length); Assert.IsInstanceOfType(activitiesToSend[0].Value, typeof(InvokeResponse)); Assert.AreEqual(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestSigninVerifyState() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "signin/verifyState", }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsSigninVerifyStateAsync", bot.Record[1]); Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestOnAdaptiveCardInvokeAsync() { var value = JObject.FromObject(new AdaptiveCardInvokeValue { Action = new AdaptiveCardInvokeAction { Type = "Action.Execute" } }); // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "adaptiveCard/action", Value = value }; var turnContext = new TurnContext(new TestInvokeAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnAdaptiveCardInvokeAsync", bot.Record[1]); }
private async Task AssertErrorThroughInvokeAdapter(Activity activity, string errorMessage) { // Arrange var adapter = new TestInvokeAdapter(); var turnContext = new TurnContext(adapter, activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert var sent = adapter.Activity as Activity; Assert.Equal(ActivityTypesEx.InvokeResponse, sent.Type); Assert.IsType <InvokeResponse>(sent.Value); var value = sent.Value as InvokeResponse; Assert.Equal(400, value.Status); Assert.IsType <AdaptiveCardInvokeResponse>(value.Body); var body = value.Body as AdaptiveCardInvokeResponse; Assert.Equal("application/vnd.microsoft.error", body.Type); Assert.Equal(400, body.StatusCode); Assert.IsType <Error>(body.Value); var error = body.Value as Error; Assert.Equal("BadRequest", error.Code); Assert.Equal(errorMessage, error.Message); }
public async Task TestMemberAdded2() { // Arrange var activity = new Activity { Type = ActivityTypes.ConversationUpdate, MembersAdded = new List <ChannelAccount> { new ChannelAccount { Id = "a" }, new ChannelAccount { Id = "b" }, }, Recipient = new ChannelAccount { Id = "b" } }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(2, bot.Record.Count); Assert.AreEqual(bot.Record[0], "OnConversationUpdateActivityAsync"); Assert.AreEqual(bot.Record[1], "OnMembersAddedAsync"); }
public async Task TestMessageReaction() { // Note the code supports multiple adds and removes in the same activity though // a channel may decide to send separate activities for each. For example, Teams // sends separate activities each with a single add and a single remove. // Arrange var activity = new Activity { Type = ActivityTypes.MessageReaction, ReactionsAdded = new List <MessageReaction> { new MessageReaction("sad"), }, ReactionsRemoved = new List <MessageReaction> { new MessageReaction("angry"), }, }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(3, bot.Record.Count); Assert.Equal("OnMessageReactionActivityAsync", bot.Record[0]); Assert.Equal("OnReactionsAddedAsync", bot.Record[1]); Assert.Equal("OnReactionsRemovedAsync", bot.Record[2]); }
public async Task TestTaskModuleSubmit() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "task/submit", Value = JObject.Parse(@"{""data"":{""key"":""value"",""type"":""task / fetch""},""context"":{""theme"":""default""}}"), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.IsNotNull(activitiesToSend); Assert.AreEqual(1, activitiesToSend.Length); Assert.IsInstanceOfType(activitiesToSend[0].Value, typeof(InvokeResponse)); Assert.AreEqual(501, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestMessagingExtensionConfigurationSetting() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/setting", Value = JObject.Parse(@"{""commandId"":""testCommand""}"), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsMessagingExtensionConfigurationSettingAsync", bot.Record[1]); Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestMessagingExtensionSubmitAction() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/submitAction", Value = JObject.FromObject(new MessagingExtensionQuery()), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(3, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsMessagingExtensionSubmitActionDispatchAsync", bot.Record[1]); Assert.Equal("OnTeamsMessagingExtensionSubmitActionAsync", bot.Record[2]); Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestActionableMessageExecuteAction() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "actionableMessage/executeAction", Value = JObject.FromObject(new O365ConnectorCardActionQuery()), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsO365ConnectorCardActionAsync", bot.Record[1]); Assert.NotNull(activitiesToSend); Assert.Single(activitiesToSend); Assert.IsType <InvokeResponse>(activitiesToSend[0].Value); Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestConversationUpdateTeamsMemberRemoved() { // Arrange var activity = new Activity { Type = ActivityTypes.ConversationUpdate, MembersRemoved = new List <ChannelAccount> { new ChannelAccount { Id = "a" }, }, Recipient = new ChannelAccount { Id = "b" }, ChannelData = new TeamsChannelData { EventType = "teamMemberRemoved" }, ChannelId = Channels.Msteams, }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnConversationUpdateActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsMembersRemovedAsync", bot.Record[1]); }
public async Task TestMessagingExtensionFetchTask() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "composeExtension/fetchTask", Value = JObject.Parse(@"{""commandId"":""testCommand""}"), }; Activity[] activitiesToSend = null; void CaptureSend(Activity[] arg) { activitiesToSend = arg; } var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(2, bot.Record.Count); Assert.AreEqual("OnInvokeActivityAsync", bot.Record[0]); Assert.AreEqual("OnTeamsMessagingExtensionFetchTaskAsync", bot.Record[1]); Assert.IsNotNull(activitiesToSend); Assert.AreEqual(1, activitiesToSend.Length); Assert.IsInstanceOfType(activitiesToSend[0].Value, typeof(InvokeResponse)); Assert.AreEqual(200, ((InvokeResponse)activitiesToSend[0].Value).Status); }
public async Task TestMessageActivity() { // Arrange var activity = MessageFactory.Text("hello"); var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(1, bot.Record.Count); Assert.AreEqual("OnMessageActivityAsync", bot.Record[0]); }
public async Task TestConversationUpdateTeamsMemberAdded() { // Arrange var baseUri = new Uri("https://test.coffee"); var customHttpClient = new HttpClient(new RosterHttpMessageHandler()); // Set a special base address so then we can make sure the connector client is honoring this http client customHttpClient.BaseAddress = baseUri; var connectorClient = new ConnectorClient(new Uri("http://localhost/"), new MicrosoftAppCredentials(string.Empty, string.Empty), customHttpClient); var activity = new Activity { Type = ActivityTypes.ConversationUpdate, MembersAdded = new List <ChannelAccount> { new ChannelAccount { Id = "id-1" }, }, Recipient = new ChannelAccount { Id = "b" }, ChannelData = new TeamsChannelData { EventType = "teamMemberAdded", Team = new TeamInfo { Id = "team-id", }, }, ChannelId = Channels.Msteams, }; var turnContext = new TurnContext(new SimpleAdapter(), activity); turnContext.TurnState.Add <IConnectorClient>(connectorClient); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnConversationUpdateActivityAsync", bot.Record[0]); Assert.Equal("OnTeamsMembersAddedAsync", bot.Record[1]); }
public async Task TestEndOfConversationActivity() { // Arrange var activity = new Activity { Type = ActivityTypes.EndOfConversation, Value = "some value" }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(1, bot.Record.Count); Assert.AreEqual("OnEndOfConversationActivityAsync", bot.Record[0]); }
public async Task TestTypingActivity() { // Arrange var activity = new Activity { Type = ActivityTypes.Typing }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Single(bot.Record); Assert.Equal("OnTypingActivityAsync", bot.Record[0]); }
public async Task TestUnrecognizedActivityType() { // Arrange var activity = new Activity { Type = "shall.not.pass", }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(1, bot.Record.Count); Assert.AreEqual("OnUnrecognizedActivityTypeAsync", bot.Record[0]); }
public async Task TestInstallationUpdateActivityType() { // Arrange var activity = new Activity { Type = ActivityTypes.InstallationUpdate }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(1, bot.Record.Count); Assert.AreEqual(bot.Record[0], "OnInstallationUpdateActivityAsync"); }
public async Task TestInvoke() { // Arrange var activity = new Activity { Type = ActivityTypes.Invoke, Name = "gibberish", }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(1, bot.Record.Count); Assert.AreEqual("OnInvokeActivityAsync", bot.Record[0]); }
public async Task TestEventNullNameAsync() { // Arrange var activity = new Activity { Type = ActivityTypes.Event, }; var turnContext = new TurnContext(new NotImplementedAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.AreEqual(2, bot.Record.Count); Assert.AreEqual("OnEventActivityAsync", bot.Record[0]); Assert.AreEqual("OnEventAsync", bot.Record[1]); }
public async Task TestOnSearchInvokeAsync() { // Arrange var value = JObject.FromObject(new SearchInvokeValue { Kind = SearchInvokeTypes.Search, QueryText = "bot" }); var activity = GetSearchActivity(value); var turnContext = new TurnContext(new TestInvokeAdapter(), activity); // Act var bot = new TestActivityHandler(); await((IBot)bot).OnTurnAsync(turnContext); // Assert Assert.Equal(2, bot.Record.Count); Assert.Equal("OnInvokeActivityAsync", bot.Record[0]); Assert.Equal("OnSearchInvokeAsync", bot.Record[1]); }