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/Clients/MemberClientTests.cs

110lines · 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 MemberClientTests
11{
12 [Fact]
13 public async Task MemberClient_GetAsync()
14 {
15 var responseMessage = new HttpResponseMessage();
16 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
17 var mockHandler = new Mock<IHttpClient>();
18 mockHandler
19 .Setup(handler => handler.SendAsync<List<Account>>(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
20 .ReturnsAsync(new HttpResponse<List<Account>>()
21 {
22 Headers = responseMessage.Headers,
23 StatusCode = HttpStatusCode.OK,
24 Body = new List<Account>
25 {
26 new Account { Id = "member1", Name = "User 1" },
27 new Account { Id = "member2", Name = "User 2" }
28 }
29 });
30
31 string serviceUrl = "https://serviceurl.com/";
32 string conversationId = "conv123";
33 var memberClient = new MemberClient(serviceUrl, mockHandler.Object);
34
35 var result = await memberClient.GetAsync(conversationId);
36
37 Assert.Equal(2, result.Count);
38 Assert.Equal("member1", result[0].Id);
39
40 string expectedUrl = "https://serviceurl.com/v3/conversations/conv123/members";
41 HttpMethod expectedMethod = HttpMethod.Get;
42 mockHandler.Verify(x => x.SendAsync<List<Account>>(
43 It.Is<IHttpRequest>(arg => arg.Url == expectedUrl && arg.Method == expectedMethod),
44 It.IsAny<CancellationToken>()),
45 Times.Once);
46 }
47
48 [Fact]
49 public async Task MemberClient_GetByIdAsync()
50 {
51 var responseMessage = new HttpResponseMessage();
52 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
53 var mockHandler = new Mock<IHttpClient>();
54 mockHandler
55 .Setup(handler => handler.SendAsync<Account>(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
56 .ReturnsAsync(new HttpResponse<Account>()
57 {
58 Headers = responseMessage.Headers,
59 StatusCode = HttpStatusCode.OK,
60 Body = new Account { Id = "member1", Name = "User 1" }
61 });
62
63 string serviceUrl = "https://serviceurl.com/";
64 string conversationId = "conv123";
65 string memberId = "member1";
66 var memberClient = new MemberClient(serviceUrl, mockHandler.Object);
67
68 var result = await memberClient.GetByIdAsync(conversationId, memberId);
69
70 Assert.Equal("member1", result.Id);
71 Assert.Equal("User 1", result.Name);
72
73 string expectedUrl = "https://serviceurl.com/v3/conversations/conv123/members/member1";
74 HttpMethod expectedMethod = HttpMethod.Get;
75 mockHandler.Verify(x => x.SendAsync<Account>(
76 It.Is<IHttpRequest>(arg => arg.Url == expectedUrl && arg.Method == expectedMethod),
77 It.IsAny<CancellationToken>()),
78 Times.Once);
79 }
80
81 [Fact]
82 public async Task MemberClient_DeleteAsync()
83 {
84 var responseMessage = new HttpResponseMessage();
85 responseMessage.Headers.Add("Custom-Header", "HeaderValue");
86 var mockHandler = new Mock<IHttpClient>();
87 mockHandler
88 .Setup(handler => handler.SendAsync(It.IsAny<IHttpRequest>(), It.IsAny<CancellationToken>()))
89 .ReturnsAsync(new HttpResponse<string>()
90 {
91 Headers = responseMessage.Headers,
92 StatusCode = HttpStatusCode.NoContent,
93 Body = ""
94 });
95
96 string serviceUrl = "https://serviceurl.com/";
97 string conversationId = "conv123";
98 string memberId = "member1";
99 var memberClient = new MemberClient(serviceUrl, mockHandler.Object);
100
101 await memberClient.DeleteAsync(conversationId, memberId);
102
103 string expectedUrl = "https://serviceurl.com/v3/conversations/conv123/members/member1";
104 HttpMethod expectedMethod = HttpMethod.Delete;
105 mockHandler.Verify(x => x.SendAsync(
106 It.Is<IHttpRequest>(arg => arg.Url == expectedUrl && arg.Method == expectedMethod),
107 It.IsAny<CancellationToken>()),
108 Times.Once);
109 }
110}