-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathHttpResponseMessageTest.cs
More file actions
67 lines (57 loc) · 2.03 KB
/
HttpResponseMessageTest.cs
File metadata and controls
67 lines (57 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#nullable disable
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using RichardSzalay.MockHttp;
using Xunit;
namespace Activout.RestClient.Test
{
public class HttpResponseMessageTest
{
private const string BaseUri = "https://example.com/";
private readonly IRestClientFactory _restClientFactory;
private readonly MockHttpMessageHandler _mockHttp;
public HttpResponseMessageTest()
{
_restClientFactory = Services.CreateRestClientFactory();
_mockHttp = new MockHttpMessageHandler();
}
[Theory]
[InlineData(HttpStatusCode.OK)]
[InlineData(HttpStatusCode.BadRequest)]
[InlineData(HttpStatusCode.Forbidden)]
[InlineData(HttpStatusCode.InternalServerError)]
[InlineData(HttpStatusCode.NoContent)]
public async Task TestHttpResponseMessage(HttpStatusCode expectedStatusCode)
{
// Arrange
var client = CreateClient();
_mockHttp
.Expect(HttpMethod.Get, BaseUri + "response-message")
.Respond(expectedStatusCode);
// Act
var httpResponseMessage = await client.GetHttpResponseMessage();
// Assert
_mockHttp.VerifyNoOutstandingExpectation();
Assert.Equal(expectedStatusCode, httpResponseMessage.StatusCode);
}
[Path("response-message")]
// ReSharper disable once MemberCanBePrivate.Global
public interface IHttpResponseMessageClient
{
public Task<HttpResponseMessage> GetHttpResponseMessage();
}
private IRestClientBuilder CreateRestClientBuilder()
{
return _restClientFactory.CreateBuilder()
.With(_mockHttp.ToHttpClient())
.BaseUri(new Uri(BaseUri));
}
private IHttpResponseMessageClient CreateClient()
{
return CreateRestClientBuilder()
.Build<IHttpResponseMessageClient>();
}
}
}