microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
core/sso-in-channels

Branches

Tags

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

Clone

HTTPS

Download ZIP

core/test/Microsoft.Teams.Apps.UnitTests/MessageActivityTests.cs

129lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.Apps.Schema;
5using Microsoft.Teams.Core.Schema;
6
7namespace Microsoft.Teams.Apps.UnitTests;
8
9public class MessageActivityTests
10{
11 [Fact]
12 public void Constructor_Default_SetsMessageType()
13 {
14 MessageActivity activity = new();
15 Assert.Equal(TeamsActivityType.Message, activity.Type);
16 }
17
18 [Fact]
19 public void Constructor_WithText_SetsTextAndMessageType()
20 {
21 MessageActivity activity = new("Hello World");
22 Assert.Equal(TeamsActivityType.Message, activity.Type);
23 Assert.Equal("Hello World", activity.Text);
24 }
25
26 [Fact]
27 public void MessageActivity_FromCoreActivity_MapsAllProperties()
28 {
29 CoreActivity coreActivity = CoreActivity.FromJsonString(jsonMessageWithAllProps);
30 MessageActivity messageActivity = MessageActivity.FromActivity(coreActivity);
31
32 Assert.Equal("Hello World", messageActivity.Text);
33 Assert.Equal("plain", messageActivity.TextFormat);
34 Assert.Equal("carousel", messageActivity.AttachmentLayout);
35 Assert.NotNull(messageActivity.From);
36 Assert.Equal("user-123", messageActivity.From.Id);
37 Assert.Equal("Test User", messageActivity.From.Name);
38 Assert.NotNull(messageActivity.Recipient);
39 Assert.Equal("bot-123", messageActivity.Recipient.Id);
40 Assert.Equal("Test Bot", messageActivity.Recipient.Name);
41 }
42
43 [Fact]
44 public void MessageActivity_Serialize_ToJson()
45 {
46 MessageActivity activity = new("Hello World")
47 {
48 TextFormat = TextFormats.Markdown,
49 };
50
51 string json = activity.ToJson();
52
53 Assert.Contains("Hello World", json);
54 Assert.Contains("markdown", json);
55 }
56
57 [Fact]
58 public void MessageActivity_Constants_TextFormats()
59 {
60 MessageActivity activity = new("Test")
61 {
62 TextFormat = TextFormats.Plain
63 };
64 Assert.Equal("plain", activity.TextFormat);
65
66 activity.TextFormat = TextFormats.Markdown;
67 Assert.Equal("markdown", activity.TextFormat);
68
69 activity.TextFormat = TextFormats.Xml;
70 Assert.Equal("xml", activity.TextFormat);
71 }
72
73 [Fact]
74 public void MessageActivity_FromCoreActivity_WithMissingProperties_HandlesGracefully()
75 {
76 CoreActivity coreActivity = new(ActivityType.Message);
77 MessageActivity messageActivity = MessageActivity.FromActivity(coreActivity);
78
79 Assert.Null(messageActivity.Text);
80 Assert.Null(messageActivity.TextFormat);
81 Assert.Null(messageActivity.AttachmentLayout);
82 }
83
84 [Fact]
85 public void MessageActivity_SerializedAsCoreActivity_IncludesText()
86 {
87 MessageActivity messageActivity = new("Hello World")
88 {
89 Type = ActivityType.Message,
90 ServiceUrl = new Uri("https://test.service.url/")
91 };
92
93 CoreActivity coreActivity = messageActivity;
94 string json = coreActivity.ToJson();
95
96 Assert.Contains("Hello World", json);
97 Assert.Contains("\"text\"", json);
98 }
99
100 private const string jsonMessageWithAllProps = """
101 {
102 "type": "message",
103 "channelId": "msteams",
104 "text": "Hello World",
105 "speak": "<speak>Hello World</speak>",
106 "inputHint": "acceptingInput",
107 "summary": "This is a summary",
108 "textFormat": "plain",
109 "attachmentLayout": "carousel",
110 "importance": "high",
111 "deliveryMode": "normal",
112 "expiration": "2026-12-31T23:59:59Z",
113 "id": "1234567890",
114 "timestamp": "2026-01-21T12:00:00Z",
115 "serviceUrl": "https://smba.trafficmanager.net/amer/",
116 "from": {
117 "id": "user-123",
118 "name": "Test User"
119 },
120 "conversation": {
121 "id": "conversation-123"
122 },
123 "recipient": {
124 "id": "bot-123",
125 "name": "Test Bot"
126 }
127 }
128 """;
129}
130