OSDN Git Service

HttpClientBuilderクラスを追加
[opentween/open-tween.git] / OpenTween.Tests / Connection / HttpClientBuilderTest.cs
1 // OpenTween - Client of Twitter
2 // Copyright (c) 2023 kim_upsilon (@kim_upsilon) <https://upsilo.net/~upsilon/>
3 // All rights reserved.
4 //
5 // This file is part of OpenTween.
6 //
7 // This program is free software; you can redistribute it and/or modify it
8 // under the terms of the GNU General Public License as published by the Free
9 // Software Foundation; either version 3 of the License, or (at your option)
10 // any later version.
11 //
12 // This program is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 // for more details.
16 //
17 // You should have received a copy of the GNU General Public License along
18 // with this program. If not, see <http://www.gnu.org/licenses/>, or write to
19 // the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
20 // Boston, MA 02110-1301, USA.
21
22 using System;
23 using System.Net.Http;
24 using Moq;
25 using Xunit;
26
27 namespace OpenTween.Connection
28 {
29     public class HttpClientBuilderTest
30     {
31         [Fact]
32         public void Build_Test()
33         {
34             var builder = new HttpClientBuilder();
35             using var client = builder.Build();
36         }
37
38         [Fact]
39         public void SetupHttpClientHandler_Test()
40         {
41             var builder = new HttpClientBuilder();
42             builder.SetupHttpClientHandler(x => x.AllowAutoRedirect = true);
43             builder.AddHandler(x =>
44             {
45                 var httpClientHandler = (HttpClientHandler)x;
46                 Assert.True(httpClientHandler.AllowAutoRedirect);
47                 return x;
48             });
49             using var client = builder.Build();
50         }
51
52         [Fact]
53         public void AddHandler_Test()
54         {
55             var count = 0;
56
57             var builder = new HttpClientBuilder();
58             builder.AddHandler(x =>
59             {
60                 count++;
61                 Assert.IsType<WebRequestHandler>(x);
62                 return x;
63             });
64             using var client = builder.Build();
65
66             Assert.Equal(1, count);
67         }
68
69         [Fact]
70         public void AddHandler_NestingTest()
71         {
72             var count = 0;
73             HttpMessageHandler? handler = null;
74
75             var builder = new HttpClientBuilder();
76             builder.AddHandler(x =>
77             {
78                 count++;
79                 handler = Mock.Of<HttpMessageHandler>();
80                 return handler;
81             });
82             builder.AddHandler(x =>
83             {
84                 count++;
85                 Assert.NotNull(x);
86                 Assert.Same(handler, x);
87                 return x;
88             });
89             using var client = builder.Build();
90
91             Assert.Equal(2, count);
92         }
93
94         [Fact]
95         public void SetupHttpClient_Test()
96         {
97             var builder = new HttpClientBuilder();
98             builder.SetupHttpClient(x => x.Timeout = TimeSpan.FromSeconds(10));
99             using var client = builder.Build();
100
101             Assert.Equal(TimeSpan.FromSeconds(10), client.Timeout);
102         }
103     }
104 }