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/Events/MeetingStartEventTests.cs

144lines · modecode

1using Microsoft.Teams.Api.Activities;
2using Microsoft.Teams.Api.Activities.Events;
3using Microsoft.Teams.Api.Auth;
4using Microsoft.Teams.Apps.Activities.Events;
5using Microsoft.Teams.Apps.Testing.Plugins;
6
7using static Microsoft.Teams.Apps.Activities.Events.Event;
8
9
10namespace Microsoft.Teams.Apps.Tests.Activities.Events;
11
12public class MeetingStartEventTests
13{
14 private readonly App _app = new();
15 private readonly TestPlugin _plugin = new();
16 private readonly MeetingActivityController _controller = new();
17 private readonly IToken _token = Globals.Token;
18
19 public MeetingStartEventTests()
20 {
21 _app.AddPlugin(_plugin);
22 _app.AddController(_controller);
23 _token = Globals.Token;
24 }
25
26 [Fact]
27 public async Task Should_CallHandler_OnMeetingStartEvent()
28 {
29 // Arrange
30 var handlerCalled = false;
31 var eventContext = default(IContext<MeetingStartActivity>);
32
33 _app.OnMeetingStart(context =>
34 {
35 handlerCalled = true;
36 eventContext = context;
37 return Task.FromResult<object?>(null);
38 });
39
40 // Create a MeetingStartActivity
41 var meetingStartActivity = new MeetingStartActivity
42 {
43 Value = new MeetingStartActivityValue
44 {
45 Id = "mock-meeting-id",
46 MeetingType = "scheduled",
47 JoinUrl = "https://teams.microsoft.com/meeting/join/123",
48 Title = "Test Meeting",
49 StartTime = DateTime.UtcNow
50 }
51 };
52
53 // Act
54 var res = await _plugin.Do(_token, meetingStartActivity);
55
56 // Assert
57 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
58 Assert.True(handlerCalled, "The MeetingStart event handler should be called");
59 Assert.NotNull(eventContext);
60 Assert.IsType<MeetingStartActivity>(eventContext.Activity);
61 Assert.Equal("mock-meeting-id", eventContext.Activity.Value.Id);
62 }
63
64 [Fact]
65 public async Task Should_NotCallHandler_ForOtherEventTypes()
66 {
67 // Arrange
68 var handlerCalled = false;
69
70 _app.OnMeetingStart(context =>
71 {
72 handlerCalled = true;
73 return Task.FromResult<object?>(null);
74 });
75
76 // Act - Send a different activity type
77 var res = await _plugin.Do(_token, new MessageActivity("hello world"));
78
79 // Assert
80 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
81 Assert.False(handlerCalled, "The MeetingStart event handler should not be called for other activity types");
82 }
83
84 [Fact]
85 public void MeetingStartAttribute_Select_ReturnsTrueForMeetingStartActivity()
86 {
87 // Arrange
88 var attribute = new MeetingStartAttribute();
89 var activity = new MeetingStartActivity
90 {
91 Value = new MeetingStartActivityValue
92 {
93 Id = "mock-meeting-id",
94 MeetingType = "scheduled",
95 JoinUrl = "https://teams.microsoft.com/meeting/join/123",
96 Title = "Test Meeting",
97 StartTime = DateTime.UtcNow
98 }
99 };
100
101 // Act
102 var result = attribute.Select(activity);
103
104 // Assert
105 Assert.True(result);
106 }
107
108 [Fact]
109 public void MeetingStartAttribute_Select_ReturnsFalseForOtherActivities()
110 {
111 // Arrange
112 var attribute = new MeetingStartAttribute();
113 var activity = new MessageActivity("hello world");
114
115 // Act
116 var result = attribute.Select(activity);
117
118 // Assert
119 Assert.False(result);
120 }
121
122
123 [Fact]
124 public async Task MeetingStartAttribute_Controller_Call()
125 {
126 var activity = new MeetingStartActivity
127 {
128 Value = new MeetingStartActivityValue
129 {
130 Id = "mock-meeting-id",
131 MeetingType = "scheduled",
132 JoinUrl = "https://teams.microsoft.com/meeting/join/123",
133 Title = "Test Meeting",
134 StartTime = DateTime.UtcNow
135 }
136 };
137
138 var res = await _app.Process<TestPlugin>(_token, activity);
139
140 Assert.Equal(System.Net.HttpStatusCode.OK, res.Status);
141 Assert.Equal("meetingStartMethod", _controller.MethodCalled);
142 }
143
144}