Skip to content

Commit 9c1fe98

Browse files
committed
Mock HttpClient to avoid some proxy errors during running the pipeline
1 parent d55a00d commit 9c1fe98

File tree

5 files changed

+50
-0
lines changed

5 files changed

+50
-0
lines changed

Diff for: src/Html2OpenXml/IO/DefaultWebRequest.cs

+6
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,13 @@ public DefaultWebRequest(HttpClient httpClient, ILogger? logger = null)
126126
resource.StatusCode = response.StatusCode;
127127

128128
if (response.IsSuccessStatusCode)
129+
{
129130
resource.Content = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
131+
if (response.Content.Headers.TryGetValues("Content-Type", out var mime))
132+
{
133+
resource.Headers.Add("Content-Type", string.Join(", ", mime));
134+
}
135+
}
130136

131137
foreach (var header in response.Headers)
132138
resource.Headers.Add(header.Key, string.Join(", ", header.Value));

Diff for: test/HtmlToOpenXml.Tests/ImgTests.cs

+12
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
using DocumentFormat.OpenXml.Packaging;
44
using DocumentFormat.OpenXml.Wordprocessing;
55
using Moq;
6+
using System.Net.Http;
7+
using System.Net.Http.Headers;
68

79
namespace HtmlToOpenXml.Tests
810
{
@@ -19,6 +21,16 @@ public class ImgTests : HtmlConverterTestBase
1921
[TestCase("https://upload.wikimedia.org/wikipedia/commons/b/b0/Mozilla_dinosaur_head_logo.svg", "image/svg+xml")]
2022
public async Task AbsoluteUri_ReturnsDrawing_WithDownloadedData(string imageUri, string contentType)
2123
{
24+
var mockHttp = new MockHttpMessageHandler(uri => Task.FromResult(new HttpResponseMessage {
25+
StatusCode = System.Net.HttpStatusCode.OK,
26+
Content = new StreamContent(ResourceHelper.GetStream("Resources." + Path.GetFileName(imageUri))) {
27+
Headers = { { "Content-Type", contentType } }
28+
}
29+
}));
30+
31+
var webRequest = new IO.DefaultWebRequest(new HttpClient(mockHttp));
32+
converter = new HtmlConverter(mainPart, webRequest);
33+
2234
await converter.ParseBody(
2335
@$"<img src='{imageUri}' width='42' height='42'>",
2436
TestContext.CurrentContext.CancellationToken);

Diff for: test/HtmlToOpenXml.Tests/Resources/Mozilla_dinosaur_head_logo.svg

+10
Loading

Diff for: test/HtmlToOpenXml.Tests/Resources/smiley.gif

1.56 KB
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright (c) 2017 Deal Stream sàrl. All rights reserved
3+
*/
4+
using System.Net.Http;
5+
6+
namespace HtmlToOpenXml.Tests
7+
{
8+
public class MockHttpMessageHandler : HttpMessageHandler
9+
{
10+
private readonly Func<Uri, Task<HttpResponseMessage>> _getResponseFunc;
11+
12+
public MockHttpMessageHandler(Func<Uri, Task<HttpResponseMessage>> getResponseFunc)
13+
{
14+
_getResponseFunc = getResponseFunc;
15+
}
16+
17+
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
18+
{
19+
return await _getResponseFunc(request.RequestUri);
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)