microsoft/teams.net

Public

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

CodeCommitsIssuesPull requestsActionsInsightsSecurity
copilot/close-pull-request

Branches

Tags

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

Clone

HTTPS

Download ZIP

Tests/Microsoft.Teams.Api.Tests/Clients/BotSignInClientTests.cs

147lines · modecode

1using System.Net;
2
3using Microsoft.Teams.Api.Clients;
4using Microsoft.Teams.Common.Http;
5
6using Moq;
7
8namespace Microsoft.Teams.Api.Tests.Clients;
9
10public class BotSignInClientTests
11{
12 [Fact]
13 public async Task BotSignInClient_GetUrlAsync_Async()
14 {
15 var getUrlRequest = new BotSignInClient.GetUrlRequest()
16 {
17 State = "state",
18 };
19 var responseMessage = new HttpResponseMessage();
20 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
21 var mockHandler = new Mock<IHttpClient>();
22 mockHandler
23 .Setup(handler => handler.SendAsync(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
24 .ReturnsAsync(new HttpResponse<string>()
25 {
26 Body = "valid signin data",
27 Headers = responseMessage.Headers,
28 StatusCode = HttpStatusCode.OK
29 });
30
31 var botSignInClient = new BotSignInClient(mockHandler.Object);
32
33 var reqBody = await botSignInClient.GetUrlAsync(getUrlRequest);
34
35 Assert.Equal("valid signin data", reqBody);
36
37 string expecteUrl = "https://token.botframework.com/api/botsignin/GetSignInUrl?State=state&CodeChallenge=&EmulatorUrl=&FinalRedirect=";
38 mockHandler.Verify(x => x.SendAsync(It.Is<IHttpRequest>(arg => arg.Url == expecteUrl), It.IsAny<CancellationToken>()), Times.Once);
39 }
40
41 [Fact]
42 public async Task BotSignInClient_GetUrlAsync_UrlRequest_Async()
43 {
44 var getUrlRequest = new BotSignInClient.GetUrlRequest()
45 {
46 State = "state",
47 CodeChallenge = "code$1",
48 EmulatorUrl = "https://emulator.com",
49 FinalRedirect = "https://somewhere.com"
50 };
51 var responseMessage = new HttpResponseMessage();
52 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
53
54
55 var mockHandler = new Mock<IHttpClient>();
56 mockHandler
57 .Setup(handler => handler.SendAsync(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
58 .ReturnsAsync(new HttpResponse<string>()
59 {
60 Body = "valid signin data",
61 Headers = responseMessage.Headers,
62 StatusCode = HttpStatusCode.OK
63 });
64
65 var botSignInClient = new BotSignInClient(mockHandler.Object);
66
67 var reqBody = await botSignInClient.GetUrlAsync(getUrlRequest);
68
69 Assert.Equal("valid signin data", reqBody);
70
71 string expecteUrl = "https://token.botframework.com/api/botsignin/GetSignInUrl?State=state&CodeChallenge=code%241&EmulatorUrl=https%3a%2f%2femulator.com&FinalRedirect=https%3a%2f%2fsomewhere.com";
72 mockHandler.Verify(x => x.SendAsync(It.Is<IHttpRequest>(arg => arg.Url == expecteUrl), It.IsAny<CancellationToken>()), Times.Once);
73 }
74
75 [Fact]
76 public async Task BotSignInClient_GetResourceAsync_Async()
77 {
78 var getUrlRequest = new BotSignInClient.GetResourceRequest()
79 {
80 State = "state",
81 };
82 var responseMessage = new HttpResponseMessage();
83 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
84
85
86 var mockHandler = new Mock<IHttpClient>();
87 mockHandler
88 .Setup(handler => handler.SendAsync<SignIn.UrlResponse>(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
89 .ReturnsAsync(new HttpResponse<SignIn.UrlResponse>()
90 {
91 Body = new SignIn.UrlResponse()
92 {
93 SignInLink = "valid signin data"
94 },
95 Headers = responseMessage.Headers,
96 StatusCode = HttpStatusCode.OK
97 });
98
99
100 var botSignInClient = new BotSignInClient(mockHandler.Object);
101
102 var reqBody = await botSignInClient.GetResourceAsync(getUrlRequest);
103
104 Assert.Equal("valid signin data", reqBody.SignInLink);
105
106 string expecteUrl = "https://token.botframework.com/api/botsignin/GetSignInResource?State=state&CodeChallenge=&EmulatorUrl=&FinalRedirect=";
107 mockHandler.Verify(x => x.SendAsync<SignIn.UrlResponse>(It.Is<IHttpRequest>(arg => arg.Url == expecteUrl), It.IsAny<CancellationToken>()), Times.Once);
108 }
109
110 [Fact]
111 public async Task BotSignInClient_GetResourceAsync_RequestParams_Async()
112 {
113 var getUrlRequest = new BotSignInClient.GetResourceRequest()
114 {
115 State = "state",
116 CodeChallenge = "code$1",
117 EmulatorUrl = "https://emulator.com",
118 FinalRedirect = "https://somewhere.com",
119 };
120 var responseMessage = new HttpResponseMessage();
121 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
122
123
124 var mockHandler = new Mock<IHttpClient>();
125 mockHandler
126 .Setup(handler => handler.SendAsync<SignIn.UrlResponse>(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
127 .ReturnsAsync(new HttpResponse<SignIn.UrlResponse>()
128 {
129 Body = new SignIn.UrlResponse()
130 {
131 SignInLink = "valid signin data"
132 },
133 Headers = responseMessage.Headers,
134 StatusCode = HttpStatusCode.OK
135 });
136
137
138 var botSignInClient = new BotSignInClient(mockHandler.Object);
139
140 var reqBody = await botSignInClient.GetResourceAsync(getUrlRequest);
141
142 Assert.Equal("valid signin data", reqBody.SignInLink);
143
144 string expecteUrl = "https://token.botframework.com/api/botsignin/GetSignInResource?State=state&CodeChallenge=code%241&EmulatorUrl=https%3a%2f%2femulator.com&FinalRedirect=https%3a%2f%2fsomewhere.com";
145 mockHandler.Verify(x => x.SendAsync<SignIn.UrlResponse>(It.Is<IHttpRequest>(arg => arg.Url == expecteUrl), It.IsAny<CancellationToken>()), Times.Once);
146 }
147}