microsoft/teams.net

Public

mirrored from https://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/FeedbackActivityTests.cs

139lines · 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;
8using Microsoft.Teams.Apps.Activities.Invokes;
9using Microsoft.Teams.Apps.Annotations;
10using Microsoft.Teams.Apps.Testing.Plugins;
11
12namespace Microsoft.Teams.Apps.Tests.Activities;
13
14public class FeedbackActivityTests
15{
16 private readonly App _app = new();
17 private readonly IToken _token = Globals.Token;
18 private readonly Controller _controller = new();
19
20 public FeedbackActivityTests()
21 {
22 _app.AddPlugin(new TestPlugin());
23 _app.AddController(_controller);
24 }
25
26 private Messages.SubmitActionActivity SetupFeedbackActivity(string actionName = "feedback", string actionValue = "test")
27 {
28 return new Messages.SubmitActionActivity()
29 {
30 Value = new Messages.SubmitActionActivity.SubmitActionValue()
31 {
32 ActionName = actionName,
33 ActionValue = actionValue
34 }
35 };
36 }
37
38 [Fact]
39 public async Task Should_CallHandler()
40 {
41 var calls = 0;
42
43 _app.OnActivity(context =>
44 {
45 calls++;
46 Assert.True(context.Activity.Type.IsInvoke);
47 Assert.True(((Activity)context.Activity).ToInvoke().Name == Name.Messages.SubmitAction);
48 return context.Next();
49 });
50
51 _app.OnFeedback(context =>
52 {
53 calls++;
54 Assert.True(context.Activity.Type.IsInvoke);
55 Assert.True(context.Activity.Name == Name.Messages.SubmitAction);
56 return Task.CompletedTask;
57 });
58
59 var res = await _app.Process<TestPlugin>(_token, SetupFeedbackActivity());
60
61 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
62 Assert.Equal(2, calls);
63 Assert.Equal(1, _controller.Calls);
64 Assert.Equal(3, res.Meta.Routes);
65 }
66
67 [Fact]
68 public async Task Should_Not_CallHandler()
69 {
70 var calls = 0;
71
72 _app.OnFeedback(context =>
73 {
74 calls++;
75 return Task.CompletedTask;
76 });
77
78 var res = await _app.Process<TestPlugin>(_token, new TypingActivity());
79
80 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
81 Assert.Equal(0, calls);
82 Assert.Equal(0, _controller.Calls);
83 Assert.Equal(0, res.Meta.Routes);
84 }
85
86 [Fact]
87 public async Task Should_Not_CallHandler_WhenWrongAction()
88 {
89 var calls = 0;
90
91 _app.OnFeedback(context =>
92 {
93 calls++;
94 return Task.CompletedTask;
95 });
96
97 var res = await _app.Process<TestPlugin>(_token, SetupFeedbackActivity("other_action"));
98
99 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
100 Assert.Equal(0, calls);
101 Assert.Equal(0, _controller.Calls);
102 Assert.Equal(0, res.Meta.Routes);
103 }
104
105 [Fact]
106 public async Task Should_Not_CallHandler_WhenValueNull()
107 {
108 var calls = 0;
109
110 _app.OnFeedback(context =>
111 {
112 calls++;
113 return Task.CompletedTask;
114 });
115
116 var res = await _app.Process<TestPlugin>(_token, new Messages.SubmitActionActivity()
117 {
118 Value = null!
119 });
120
121 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
122 Assert.Equal(0, calls);
123 Assert.Equal(0, _controller.Calls);
124 Assert.Equal(0, res.Meta.Routes);
125 }
126
127 [TeamsController]
128 public class Controller
129 {
130 public int Calls { get; private set; } = 0;
131
132 [Microsoft.Teams.Apps.Activities.Invokes.Message.Feedback]
133 public void OnFeedback([Context] IContext.Next next)
134 {
135 Calls++;
136 next();
137 }
138 }
139}