Skip to content

Commit 4e47087

Browse files
WebDucernmklotas
authored andcommitted
#74: Fix for empty (not null) header values (#75)
* #74: Fix for empty (not null) header values * 74: Add tests for header value extension
1 parent 4f796d9 commit 4e47087

File tree

2 files changed

+57
-2
lines changed

2 files changed

+57
-2
lines changed

src/GitLabApiClient/Internal/Http/GitLabApiPagedRequestor.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Net.Http.Headers;
55
using System.Threading.Tasks;
6+
using GitLabApiClient.Internal.Utilities;
67

78
namespace GitLabApiClient.Internal.Http
89
{
@@ -107,7 +108,7 @@ public static T GetFirstHeaderValueOrDefault<T>(
107108
return toReturn;
108109

109110
string valueString = headerValues.FirstOrDefault();
110-
return valueString == null ? toReturn : (T)Convert.ChangeType(valueString, typeof(T));
111+
return valueString.IsNullOrEmpty() ? toReturn : (T)Convert.ChangeType(valueString, typeof(T));
111112
}
112113
}
113114
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System.Net;
2+
using System.Net.Http;
3+
using System.Net.Http.Headers;
4+
using FluentAssertions;
5+
using GitLabApiClient.Internal.Http;
6+
using Xunit;
7+
8+
namespace GitLabApiClient.Test.Internal.Http
9+
{
10+
public class HttpResponseHeadersExtensionsTest
11+
{
12+
private HttpResponseHeaders GetTestHeaders()
13+
{
14+
var response = new HttpResponseMessage(HttpStatusCode.Created);
15+
response.Headers.Add("X-Fifty-Five", "55");
16+
response.Headers.Add("X-Empty", "");
17+
18+
return response.Headers;
19+
}
20+
21+
[Fact]
22+
public void GetFirstHeaderValueOrDefault_WithEmptyValue_ReturnDefaultValue()
23+
{
24+
int expected = 0;
25+
var sut = GetTestHeaders();
26+
27+
int result = sut.GetFirstHeaderValueOrDefault<int>("X-Empty");
28+
29+
result.Should().Be(expected);
30+
}
31+
32+
[Fact]
33+
public void GetFirstHeaderValueOrDefault_WithNotExistingKey_ReturnDefaultValue()
34+
{
35+
int expected = 0;
36+
var sut = GetTestHeaders();
37+
38+
int result = sut.GetFirstHeaderValueOrDefault<int>("X-Not-Exists");
39+
40+
result.Should().Be(expected);
41+
}
42+
43+
[Fact]
44+
public void GetFirstHeaderValueOrDefault_WithValue_ReturnValue()
45+
{
46+
int expected = 55;
47+
var sut = GetTestHeaders();
48+
49+
int result = sut.GetFirstHeaderValueOrDefault<int>("X-Fifty-Five");
50+
51+
result.Should().Be(expected);
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)