Skip to content

Commit 873ecde

Browse files
committed
Add test for user agent header
1 parent 799c88a commit 873ecde

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

test/RestSharp.Tests.Integrated/HttpHeadersTests.cs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
namespace RestSharp.Tests.Integrated;
22

33
public sealed class HttpHeadersTests(WireMockTestServer server) : IClassFixture<WireMockTestServer>, IDisposable {
4-
readonly RestClient _client = new(new RestClientOptions(server.Url!) { ThrowOnAnyError = true });
4+
const string UserAgent = "RestSharp/test";
5+
6+
readonly RestClient _client = new(new RestClientOptions(server.Url!) { ThrowOnAnyError = true, UserAgent = UserAgent });
57

68
[Fact]
79
public async Task Ensure_headers_correctly_set_in_the_interceptor() {
@@ -17,7 +19,7 @@ public async Task Ensure_headers_correctly_set_in_the_interceptor() {
1719

1820
// Assert
1921
response.StatusCode.Should().Be(HttpStatusCode.OK);
20-
var header = response.Data!.First(x => x.Name == headerName);
22+
var header = FindHeader(response, headerName);
2123
header.Should().NotBeNull();
2224
header.Value.Should().Be(headerValue);
2325
}
@@ -40,7 +42,7 @@ public async Task Ensure_headers_correctly_set_in_the_hook() {
4042
// Assert
4143
response.StatusCode.Should().Be(HttpStatusCode.OK);
4244
response.Data.Should().NotBeNull();
43-
var header = response.Data!.First(x => x.Name == headerName);
45+
var header = FindHeader(response, headerName);
4446
header.Should().NotBeNull();
4547
header.Value.Should().Be(headerValue);
4648
}
@@ -56,17 +58,28 @@ public async Task Should_use_both_default_and_request_headers() {
5658
.AddHeader(requestHeader.Name, requestHeader.Value);
5759

5860
var response = await _client.ExecuteAsync<TestServerResponse[]>(request);
59-
CheckHeader(defaultHeader);
60-
CheckHeader(requestHeader);
61-
return;
62-
63-
void CheckHeader(Header header) {
64-
var h = response.Data!.First(x => x.Name == header.Name);
65-
h.Should().NotBeNull();
66-
h.Value.Should().Be(header.Value);
67-
}
61+
CheckHeader(response, defaultHeader);
62+
CheckHeader(response, requestHeader);
6863
}
6964

65+
[Fact]
66+
public async Task Should_sent_custom_UserAgent() {
67+
var request = new RestRequest("/headers");
68+
var response = await _client.ExecuteAsync<TestServerResponse[]>(request);
69+
var h = FindHeader(response, "User-Agent");
70+
h.Should().NotBeNull();
71+
h.Value.Should().Be(UserAgent);
72+
}
73+
74+
static void CheckHeader(RestResponse<TestServerResponse[]> response, Header header) {
75+
var h = FindHeader(response, header.Name);
76+
h.Should().NotBeNull();
77+
h.Value.Should().Be(header.Value);
78+
}
79+
80+
static TestServerResponse FindHeader(RestResponse<TestServerResponse[]> response, string headerName)
81+
=> response.Data!.First(x => x.Name == headerName);
82+
7083
record Header(string Name, string Value);
7184

7285
class HeaderInterceptor(string headerName, string headerValue) : Interceptors.Interceptor {

test/RestSharp.Tests/RestClientTests.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,7 @@ public void ConfigureDefaultParameters_sets_user_agent_new_httpClient_instance()
130130
//assert
131131
Assert.Single(
132132
restClient.DefaultParameters,
133-
parameter => parameter.Type == ParameterType.HttpHeader &&
134-
parameter.Name == KnownHeaders.UserAgent &&
135-
parameter.Value is string valueAsString &&
133+
parameter => parameter is { Type: ParameterType.HttpHeader, Name: KnownHeaders.UserAgent, Value: string valueAsString } &&
136134
valueAsString == clientOptions.UserAgent
137135
);
138136

@@ -151,9 +149,7 @@ public void ConfigureDefaultParameters_sets_user_agent_given_httpClient_instance
151149
//assert
152150
Assert.Single(
153151
restClient.DefaultParameters,
154-
parameter => parameter.Type == ParameterType.HttpHeader &&
155-
parameter.Name == KnownHeaders.UserAgent &&
156-
parameter.Value is string valueAsString &&
152+
parameter => parameter is { Type: ParameterType.HttpHeader, Name: KnownHeaders.UserAgent, Value: string valueAsString } &&
157153
valueAsString == clientOptions.UserAgent
158154
);
159155

0 commit comments

Comments
 (0)