Skip to content

Commit

Permalink
fix and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kblok committed Feb 18, 2025
1 parent 6d44502 commit 259df14
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
24 changes: 24 additions & 0 deletions lib/PuppeteerSharp.Tests/NetworkTests/RequestPostDataTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,30 @@ public async Task ShouldWork()
Assert.That(request.PostData, Is.EqualTo("{\"foo\":\"bar\"}"));
}

[Test, Retry(2), PuppeteerTest("network.spec", "PuppeteerSharp network Request.postData", "should work plain text")]
public async Task ShouldWorkPlainText()
{
await Page.GoToAsync(TestConstants.EmptyPage);
Server.SetRoute("/post", _ => Task.CompletedTask);
var requestTask = Page.WaitForRequestAsync((request) => !TestUtils.IsFavicon(request));
await Page.EvaluateExpressionHandleAsync("fetch('./post', { method: 'POST', body: 'Hello, world!'})");
var request = await requestTask.WithTimeout();
Assert.That(request, Is.Not.Null);
Assert.That(request.PostData, Is.EqualTo("Hello, world!"));
}

[Test, Retry(2), PuppeteerTest("network.spec", "PuppeteerSharpnetwork Request.postData", "should work with low surrogate")]
public async Task ShouldWorkWithLowSurrogate()
{
await Page.GoToAsync(TestConstants.EmptyPage);
Server.SetRoute("/post", _ => Task.CompletedTask);
var requestTask = Page.WaitForRequestAsync((request) => !TestUtils.IsFavicon(request));
await Page.EvaluateExpressionHandleAsync("fetch('./post', { method: 'POST', body: 'Hello, world!\uDD71'})");
var request = await requestTask.WithTimeout();
Assert.That(request, Is.Not.Null);
Assert.That(request.PostData, Is.EqualTo("Hello, world!\uFFFD"));
}

[Test, Retry(2), PuppeteerTest("network.spec", "network Request.postData", "should be |undefined| when there is no post data")]
public async Task ShouldBeUndefinedWhenThereIsNoPostData()
{
Expand Down
15 changes: 14 additions & 1 deletion lib/PuppeteerSharp/Helpers/Json/LowSurrogateConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,24 @@ public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
}

var span = reader.HasValueSequence ? reader.ValueSequence.ToArray() : reader.ValueSpan.ToArray();
return Encoding.UTF8.GetString(span);
var value = Encoding.UTF8.GetString(span);

if (reader.ValueIsEscaped)
{
value = JsonUnescape(value);
}

return value;
}

public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
{
writer.WriteStringValue(value);
}

private static string JsonUnescape(string jsonString)
{
using var doc = JsonDocument.Parse($"\"{jsonString}\"");
return doc.RootElement.GetString();
}
}

0 comments on commit 259df14

Please sign in to comment.