microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
docs/update-release-process

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Tests/Microsoft.Teams.Apps.Tests/Activities/Invokes/Messages/FetchTaskActivityTests.cs

142lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Api.Activities;
5using Microsoft.Teams.Api.Activities.Invokes;
6using Microsoft.Teams.Api.Auth;
7using Microsoft.Teams.Apps.Activities.Invokes;
8using Microsoft.Teams.Apps.Annotations;
9using Microsoft.Teams.Apps.Testing.Plugins;
10
11using TaskModules = Microsoft.Teams.Api.TaskModules;
12
13namespace Microsoft.Teams.Apps.Tests.Activities;
14
15public class FetchTaskActivityTests
16{
17 private readonly App _app = new();
18 private readonly IToken _token = Globals.Token;
19 private readonly Controller _controller = new();
20
21 public FetchTaskActivityTests()
22 {
23 _app.AddPlugin(new TestPlugin());
24 _app.AddController(_controller);
25 }
26
27 private static Messages.FetchTaskActivity SetupFetchTaskActivity(string reaction = "like")
28 {
29 return new Messages.FetchTaskActivity
30 {
31 Value = new Messages.FetchTaskActivity.FetchTaskValue
32 {
33 Data = new Messages.FetchTaskActivity.FetchTaskData
34 {
35 ActionValue = new Messages.FetchTaskActivity.FetchTaskActionValue
36 {
37 Reaction = new Reaction(reaction),
38 },
39 },
40 },
41 };
42 }
43
44 [Fact]
45 public async Task Should_CallHandler()
46 {
47 var calls = 0;
48
49 _app.OnMessageFetchTask((context, ct) =>
50 {
51 calls++;
52 Assert.True(context.Activity.Type.IsInvoke);
53 Assert.True(context.Activity.Name == Name.Messages.FetchTask);
54 Assert.True(context.Activity.Value.Data.ActionValue.Reaction.IsLike);
55 return Task.FromResult(new TaskModules.Response(new TaskModules.ContinueTask(new TaskModules.TaskInfo { Title = "Feedback" })));
56 });
57
58 var res = await _app.Process<TestPlugin>(_token, SetupFetchTaskActivity());
59
60 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
61 Assert.Equal(1, calls);
62 Assert.Equal(1, _controller.Calls);
63 Assert.Equal(2, res.Meta.Routes);
64 }
65
66 [Fact]
67 public async Task Should_Not_CallHandler_OnOtherActivity()
68 {
69 var calls = 0;
70
71 _app.OnMessageFetchTask((context, ct) =>
72 {
73 calls++;
74 return Task.FromResult(new TaskModules.Response(new TaskModules.ContinueTask(new TaskModules.TaskInfo())));
75 });
76
77 var res = await _app.Process<TestPlugin>(_token, new TypingActivity());
78
79 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
80 Assert.Equal(0, calls);
81 Assert.Equal(0, _controller.Calls);
82 Assert.Equal(0, res.Meta.Routes);
83 }
84
85 [Fact]
86 public async Task Should_Not_CallHandler_OnSubmitAction()
87 {
88 var calls = 0;
89
90 _app.OnMessageFetchTask((context, ct) =>
91 {
92 calls++;
93 return Task.FromResult(new TaskModules.Response(new TaskModules.ContinueTask(new TaskModules.TaskInfo())));
94 });
95
96 var submit = new Messages.SubmitActionActivity
97 {
98 Value = new Messages.SubmitActionActivity.SubmitActionValue
99 {
100 ActionName = "feedback",
101 ActionValue = "test",
102 },
103 };
104
105 var res = await _app.Process<TestPlugin>(_token, submit);
106
107 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
108 Assert.Equal(0, calls);
109 }
110
111 [Fact]
112 public async Task Should_CallHandler_OnDislikeReaction()
113 {
114 var calls = 0;
115
116 _app.OnMessageFetchTask((context, ct) =>
117 {
118 calls++;
119 Assert.True(context.Activity.Value.Data.ActionValue.Reaction.IsDislike);
120 return Task.FromResult(new TaskModules.Response(new TaskModules.ContinueTask(new TaskModules.TaskInfo())));
121 });
122
123 var res = await _app.Process<TestPlugin>(_token, SetupFetchTaskActivity("dislike"));
124
125 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
126 Assert.Equal(1, calls);
127 }
128
129 [TeamsController]
130 public class Controller
131 {
132 public int Calls { get; private set; }
133
134 [Microsoft.Teams.Apps.Activities.Invokes.Message.FetchTask]
135 public void OnFetchTask([Context] IContext.Next next)
136 {
137 Calls++;
138 next();
139 }
140 }
141}
142
143