Skip to content

Commit 8e1fd63

Browse files
authored
fix(request-builder): add a null check in HeaderParam handling (#42)
Closes #41
1 parent 89b628c commit 8e1fd63

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

APIMatic.Core.Test/Api/HttpPost/ApiCallPostTest.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Linq;
34
using System.Net;
45
using System.Net.Http;
56
using System.Net.Http.Json;
@@ -452,5 +453,48 @@ public void ApiCall_PostQueryData_OKResponse()
452453
Assert.NotNull(actual.Data);
453454
Assert.AreEqual(actual.Data.Message, expected.Message);
454455
}
456+
457+
[Test]
458+
public void ApiCall_PostNullHeaderValue_OKResponse()
459+
{
460+
//Arrange
461+
var text = "Post null header value.";
462+
var url = "/apicall/null-header-post/200";
463+
var headerKey = "null-key";
464+
465+
var expected = new ServerResponse()
466+
{
467+
Message = text,
468+
Passed = true,
469+
};
470+
471+
var content = JsonContent.Create(expected);
472+
handlerMock.When(GetCompleteUrl(url))
473+
.With(req =>
474+
{
475+
Assert.AreEqual(text, req.Content.ReadAsStringAsync().Result);
476+
Assert.IsTrue(req.Headers.Contains(headerKey));
477+
Assert.AreEqual(string.Empty, req.Headers.GetValues(headerKey).FirstOrDefault());
478+
return true;
479+
})
480+
.Respond(HttpStatusCode.OK, content);
481+
482+
var apiCall = CreateApiCall<ServerResponse>()
483+
.RequestBuilder(requestBuilderAction => requestBuilderAction
484+
.Setup(HttpMethod.Post, url)
485+
.Parameters(p => p
486+
.Body(b => b.Setup(text))
487+
.Header(h => h.Setup(headerKey, null))))
488+
.ExecuteAsync();
489+
490+
// Act
491+
var actual = CoreHelper.RunTask(apiCall);
492+
493+
// Assert
494+
Assert.NotNull(actual);
495+
Assert.AreEqual(actual.StatusCode, (int)HttpStatusCode.OK);
496+
Assert.NotNull(actual.Data);
497+
Assert.AreEqual(actual.Data.Message, expected.Message);
498+
}
455499
}
456500
}

APIMatic.Core/Request/Parameters/HeaderParam.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ internal override void Apply(RequestBuilder requestBuilder)
1616
{
1717
return;
1818
}
19-
requestBuilder.headers[key] = value.ToString();
19+
requestBuilder.headers[key] = value?.ToString();
2020
}
2121
}
2222
}

0 commit comments

Comments
 (0)