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.Api.Tests/Activities/Invokes/MessageExtensions/MessageExtensionsTests.cs

56lines · modecode

1using System.Text.Json;
2
3using Microsoft.Teams.Api.Activities;
4using Microsoft.Teams.Api.Activities.Invokes;
5
6using static Microsoft.Teams.Api.Activities.Invokes.MessageExtensions;
7
8namespace Microsoft.Teams.Api.Tests.Activities.Invokes.MessageExtensions;
9
10public class MessageExtensionsTests
11{
12 private static MessageExtensionActivity? Deserialize(string json) => JsonSerializer.Deserialize<MessageExtensionActivity>(json);
13
14 [Fact]
15 public void MessageExtension_MissingName_Throws()
16 {
17 var json = "{\"type\":\"invoke\"}";
18 var ex = Assert.Throws<JsonException>(() => Deserialize(json));
19 Assert.Contains("must have a 'name'", ex.Message);
20 }
21
22 [Fact]
23 public void MessageExtension_NullName_Throws()
24 {
25 var json = "{\"type\":\"invoke\",\"name\":null}";
26 var ex = Assert.Throws<JsonException>(() => Deserialize(json));
27 Assert.Contains("failed to deserialize invoke activity 'name' property", ex.Message);
28 }
29
30 [Fact]
31 public void MessageExtension_UnknownName_Throws()
32 {
33 var json = "{\"type\":\"invoke\",\"name\":\"composeExtension/other\"}";
34 var ex = Assert.Throws<JsonException>(() => Deserialize(json));
35 Assert.Contains("doesn't match any known types", ex.Message);
36 }
37
38 [Fact]
39 public void MessageExtension_Query_Value_AccessibleFromDerivedType()
40 {
41 var json = "{\"type\":\"invoke\",\"name\":\"composeExtension/query\",\"value\":{\"commandId\":\"searchCmd\"}}";
42 MessageExtensionActivity? activity = Deserialize(json);
43 var query = Assert.IsType<QueryActivity>(activity);
44 Assert.NotNull(query.Value);
45 Assert.Equal("searchCmd", query.Value.CommandId);
46 }
47
48 [Fact]
49 public void MessageExtension_Query_Value_AccessibleFromBaseType()
50 {
51 var json = "{\"type\":\"invoke\",\"name\":\"composeExtension/query\",\"value\":{\"commandId\":\"searchCmd\"}}";
52 var activity = Deserialize(json);
53 var invoke = Assert.IsAssignableFrom<InvokeActivity>(activity);
54 Assert.NotNull(invoke.Value);
55 }
56}