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/ActivityTests.cs

119lines · modecode

1using Microsoft.Teams.Api.Activities;
2using Microsoft.Teams.Api.Auth;
3using Microsoft.Teams.Apps.Activities;
4using Microsoft.Teams.Apps.Annotations;
5using Microsoft.Teams.Apps.Testing.Plugins;
6
7namespace Microsoft.Teams.Apps.Tests.Activities;
8
9[Obsolete]
10public class ActivityTests
11{
12 private readonly App _app = new();
13 private readonly IToken _token = Globals.Token;
14 private readonly TestPlugin _plugin = new();
15 private readonly Controller _controller = new();
16
17 public ActivityTests()
18 {
19 _app.AddPlugin(_plugin);
20 _app.AddController(_controller);
21 }
22
23 [Fact]
24 public async Task Should_CallHandler_OnMessage()
25 {
26 var calls = 0;
27
28 _app.OnActivity(context =>
29 {
30 calls++;
31 Assert.True(context.Activity.Type.IsMessage);
32 return Task.CompletedTask;
33 });
34
35 var res = await _app.Process<TestPlugin>(_token, new MessageActivity());
36
37 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
38 Assert.Equal(1, calls);
39 Assert.Equal(1, _controller.Calls);
40 Assert.Equal(2, res.Meta.Routes);
41 }
42
43 [Fact]
44 public async Task Should_CallHandler_OnTyping()
45 {
46 var calls = 0;
47
48 _app.OnActivity(context =>
49 {
50 calls++;
51 Assert.True(context.Activity.Type.IsTyping);
52 return Task.CompletedTask;
53 });
54
55 var res = await _app.Process<TestPlugin>(_token, new TypingActivity());
56
57 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
58 Assert.Equal(1, calls);
59 Assert.Equal(1, _controller.Calls);
60 Assert.Equal(2, res.Meta.Routes);
61 }
62
63 [Fact]
64 public async Task Should_Pass_Extra_OnActivity()
65 {
66 IDictionary<string, object?>? extra = null;
67 _app.OnActivity(context =>
68 {
69 extra = context.Extra;
70 return Task.CompletedTask;
71 });
72
73 var extraFromParameter = new Dictionary<string, object?>
74 {
75 { "paramContextKey", "value" }
76 };
77 var res = await _app.Process<TestPlugin>(_token, new MessageActivity(), extraFromParameter);
78
79 Assert.Equal(extra!["paramContextKey"], "value");
80 }
81
82 [Fact]
83 public async Task Should_Pass_Extra_AcrossActivityHandlers()
84 {
85
86 _app.OnActivity(async context =>
87 {
88 // Set the context in the first handler
89 context.Extra["key1"] = "value1";
90 // Call the next handler in the pipeline
91 await context.Next();
92 });
93
94 IDictionary<string, object?>? extra = null;
95 _app.OnActivity(context =>
96 {
97 // Retrieve the context data set in the previous handler
98 extra = context.Extra;
99 return Task.CompletedTask;
100 });
101
102 var res = await _app.Process<TestPlugin>(_token, new MessageActivity());
103 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
104 Assert.Equal(extra!["key1"], "value1");
105 }
106
107 [TeamsController]
108 public class Controller
109 {
110 public int Calls { get; private set; } = 0;
111
112 [Activity]
113 public void OnActivity([Context] IContext.Next next)
114 {
115 Calls++;
116 next();
117 }
118 }
119}