Skip to content

Commit 3af9b60

Browse files
authored
Get TLS version from request (#1239)
* Get TLS version from request * Remove usings * short lines * Move CurateProtocol to a generic place * cr * Add package * Check why is getting stuck * Update core versions * Reset previous change
1 parent e0d0018 commit 3af9b60

File tree

5 files changed

+49
-15
lines changed

5 files changed

+49
-15
lines changed

lib/PuppeteerSharp.TestServer/PuppeteerSharp.TestServer.csproj

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@
1313
</Content>
1414
</ItemGroup>
1515
<ItemGroup>
16-
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
17-
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
18-
<PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="2.0.2" />
19-
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
16+
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
17+
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
2018
</ItemGroup>
2119
</Project>

lib/PuppeteerSharp.Tests/PuppeteerSharp.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<PackageReference Include="xunit" Version="2.4.1" />
1414
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
1515
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0005" />
16+
<PackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="2.2.0" />
1617
</ItemGroup>
1718
<ItemGroup>
1819
<Folder Include="Issues\" />

lib/PuppeteerSharp.Tests/PuppeteerTests/IgnoreHttpsErrorsTests.cs

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Diagnostics;
4-
using System.IO;
5-
using System.Linq;
63
using System.Net;
7-
using System.Runtime.InteropServices;
84
using System.Threading.Tasks;
5+
using Microsoft.AspNetCore.Connections.Features;
96
using Microsoft.AspNetCore.Http;
10-
using PuppeteerSharp.Helpers;
117
using Xunit;
128
using Xunit.Abstractions;
139

@@ -25,10 +21,21 @@ public IgnoreHttpsErrorsTests(ITestOutputHelper output) : base(output)
2521
[Fact]
2622
public async Task ShouldWork()
2723
{
28-
var response = await Page.GoToAsync(TestConstants.HttpsPrefix + "/empty.html");
24+
var requestTask = HttpsServer.WaitForRequest(
25+
"/empty.html",
26+
request => request.HttpContext.Features.Get<ITlsHandshakeFeature>().Protocol);
27+
var responseTask = Page.GoToAsync(TestConstants.HttpsPrefix + "/empty.html");
28+
29+
await Task.WhenAll(
30+
requestTask,
31+
responseTask);
32+
33+
var response = responseTask.Result;
2934
Assert.Equal(HttpStatusCode.OK, response.Status);
3035
Assert.NotNull(response.SecurityDetails);
31-
Assert.Equal("TLS 1.2", response.SecurityDetails.Protocol);
36+
Assert.Equal(
37+
TestUtils.CurateProtocol(requestTask.Result.ToString()),
38+
TestUtils.CurateProtocol(response.SecurityDetails.Protocol));
3239
}
3340

3441
[Fact]
@@ -39,11 +46,22 @@ public async Task NetworkRedirectsShouldReportSecurityDetails()
3946

4047
Page.Response += (sender, e) => responses.Add(e.Response);
4148

42-
await Page.GoToAsync(TestConstants.HttpsPrefix + "/plzredirect");
49+
var requestTask = HttpsServer.WaitForRequest(
50+
"/empty.html",
51+
request => request.HttpContext.Features.Get<ITlsHandshakeFeature>().Protocol);
52+
var responseTask = Page.GoToAsync(TestConstants.HttpsPrefix + "/plzredirect");
53+
54+
await Task.WhenAll(
55+
requestTask,
56+
responseTask);
57+
58+
var response = responseTask.Result;
4359

4460
Assert.Equal(2, responses.Count);
4561
Assert.Equal(HttpStatusCode.Found, responses[0].Status);
46-
Assert.Equal("TLS 1.2", responses[0].SecurityDetails.Protocol);
62+
Assert.Equal(
63+
TestUtils.CurateProtocol(requestTask.Result.ToString()),
64+
TestUtils.CurateProtocol(response.SecurityDetails.Protocol));
4765
}
4866

4967
[Fact]

lib/PuppeteerSharp.Tests/PuppeteerTests/PuppeteerConnectTests.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Linq;
33
using System.Threading.Tasks;
4+
using Microsoft.AspNetCore.Connections.Features;
45
using PuppeteerSharp.Transport;
56
using Xunit;
67
using Xunit.Abstractions;
@@ -62,10 +63,21 @@ public async Task ShouldSupportIgnoreHTTPSErrorsOption()
6263
}))
6364
using (var page = await browser.NewPageAsync())
6465
{
65-
var response = await page.GoToAsync(TestConstants.HttpsPrefix + "/empty.html");
66+
var requestTask = HttpsServer.WaitForRequest(
67+
"/empty.html",
68+
request => request.HttpContext.Features.Get<ITlsHandshakeFeature>().Protocol);
69+
var responseTask = page.GoToAsync(TestConstants.HttpsPrefix + "/empty.html");
70+
71+
await Task.WhenAll(
72+
requestTask,
73+
responseTask);
74+
75+
var response = responseTask.Result;
6676
Assert.True(response.Ok);
6777
Assert.NotNull(response.SecurityDetails);
68-
Assert.Equal("TLS 1.2", response.SecurityDetails.Protocol);
78+
Assert.Equal(
79+
TestUtils.CurateProtocol(requestTask.Result.ToString()),
80+
TestUtils.CurateProtocol(response.SecurityDetails.Protocol));
6981
}
7082
}
7183

lib/PuppeteerSharp.Tests/TestUtils.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,10 @@ internal static async Task WaitForCookieInChromiumFileAsync(string path, string
8484
}
8585
}
8686
internal static bool IsFavicon(Request request) => request.Url.Contains("favicon.ico");
87+
internal static string CurateProtocol(string protocol)
88+
=> protocol
89+
.ToLower()
90+
.Replace(" ", string.Empty)
91+
.Replace(".", string.Empty);
8792
}
8893
}

0 commit comments

Comments
 (0)