microsoft/teams.net

Public

mirrored from https://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
cg/integration-test-caching

Branches

Tags

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

Clone

HTTPS

Download ZIP

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

83lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4using Microsoft.AspNetCore.Http;
5using Microsoft.Extensions.Configuration;
6using Microsoft.Extensions.Logging.Abstractions;
7using Microsoft.Teams.Apps.Api.Clients;
8using Microsoft.Teams.Apps.Schema;
9using Microsoft.Teams.Apps.State;
10using Microsoft.Teams.Core;
11using Moq;
12
13namespace Microsoft.Teams.Apps.UnitTests;
14
15public class ContextStateTests
16{
17 [Fact]
18 public void State_WhenConfigured_ReturnsContainer()
19 {
20 TeamsBotApplication app = CreateApp();
21 TurnState convState = new();
22 TurnState userState = new();
23
24 Context<TeamsActivity> context = new(app, new TeamsActivity());
25 context.State = new TurnStateContainer(convState, userState);
26
27 Assert.Same(convState, context.State.ConversationState);
28 Assert.Same(userState, context.State.UserState);
29 }
30
31 [Fact]
32 public void State_WhenNull_ThrowsInvalidOperationException()
33 {
34 TeamsBotApplication app = CreateApp();
35
36 Context<TeamsActivity> context = new(app, new TeamsActivity());
37
38 InvalidOperationException ex = Assert.Throws<InvalidOperationException>(() => context.State);
39 Assert.Contains("UseState()", ex.Message);
40 }
41
42 [Fact]
43 public void HasState_WhenNotSet_ReturnsFalse()
44 {
45 TeamsBotApplication app = CreateApp();
46 Context<TeamsActivity> context = new(app, new TeamsActivity());
47
48 Assert.False(context.HasState);
49 }
50
51 [Fact]
52 public void HasState_WhenSet_ReturnsTrue()
53 {
54 TeamsBotApplication app = CreateApp();
55 Context<TeamsActivity> context = new(app, new TeamsActivity());
56 context.State = new TurnStateContainer(new TurnState(), null);
57
58 Assert.True(context.HasState);
59 }
60
61 private static TeamsBotApplication CreateApp()
62 {
63 Mock<UserTokenClient> mockUserTokenClient = new(
64 new HttpClient(),
65 new Mock<IConfiguration>().Object,
66 NullLogger<UserTokenClient>.Instance);
67
68 Mock<ConversationClient> mockConversationClient = new(
69 new HttpClient(),
70 NullLogger<ConversationClient>.Instance);
71
72 ApiClient apiClient = new(
73 new HttpClient(),
74 mockConversationClient.Object,
75 mockUserTokenClient.Object);
76
77 return new TeamsBotApplication(
78 apiClient,
79 new HttpContextAccessor(),
80 NullLogger<TeamsBotApplication>.Instance,
81 new TeamsBotApplicationOptions { AppId = "test-app-id" });
82 }
83}
84