From 995cf902fb09fd54ea512eab06101cc8d62d5009 Mon Sep 17 00:00:00 2001 From: stevenfuhr Date: Fri, 7 Feb 2025 21:33:20 +0100 Subject: [PATCH] fix: add pfxBase64 to jsonCert instead of params (#1746) --- .../com/microsoft/playwright/impl/Utils.java | 2 +- .../playwright/TestClientCertificates.java | 20 +++++++++++++++++- .../client/trusted/client_keystore.p12 | Bin 0 -> 4240 bytes 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 playwright/src/test/resources/client-certificates/client/trusted/client_keystore.p12 diff --git a/playwright/src/main/java/com/microsoft/playwright/impl/Utils.java b/playwright/src/main/java/com/microsoft/playwright/impl/Utils.java index 42ab44d3..85239e40 100644 --- a/playwright/src/main/java/com/microsoft/playwright/impl/Utils.java +++ b/playwright/src/main/java/com/microsoft/playwright/impl/Utils.java @@ -434,7 +434,7 @@ public class Utils { } String pfxBase64 = base64Buffer(cert.pfx, cert.pfxPath); if (pfxBase64 != null) { - params.addProperty("pfx", pfxBase64); + jsonCert.addProperty("pfx", pfxBase64); } } catch (IOException e) { throw new PlaywrightException("Failed to read from file", e); diff --git a/playwright/src/test/java/com/microsoft/playwright/TestClientCertificates.java b/playwright/src/test/java/com/microsoft/playwright/TestClientCertificates.java index 98589bf2..161c2198 100644 --- a/playwright/src/test/java/com/microsoft/playwright/TestClientCertificates.java +++ b/playwright/src/test/java/com/microsoft/playwright/TestClientCertificates.java @@ -1,7 +1,6 @@ package com.microsoft.playwright; import com.microsoft.playwright.options.ClientCertificate; -import com.microsoft.playwright.options.Proxy; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -120,6 +119,25 @@ public class TestClientCertificates extends TestBase { request.dispose(); } + @Test + public void passWithTrustedClientCertificatesPfx() { + APIRequest.NewContextOptions requestOptions = new APIRequest.NewContextOptions() + .setIgnoreHTTPSErrors(true) // TODO: remove once we can pass a custom CA. + .setClientCertificates(asList( + new ClientCertificate(customServer.origin) + .setPfxPath(asset("client-certificates/client/trusted/client_keystore.p12")) + .setPassphrase("passphrase"))); + + APIRequestContext request = playwright.request().newContext(requestOptions); + APIResponse response = request.get(customServer.url); + + assertEquals(customServer.url, response.url()); + assertEquals(200, response.status()); + assertTrue(response.text().contains("Hello CN=Alice, your certificate was issued by O=Client Certificate Demo,CN=localhost!"), response.text()); + + request.dispose(); + } + static boolean isWebKitMacOS() { return isWebKit() && isMac; } diff --git a/playwright/src/test/resources/client-certificates/client/trusted/client_keystore.p12 b/playwright/src/test/resources/client-certificates/client/trusted/client_keystore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..4bc4f2d0705a72bb845c96183afc2af3301e5c92 GIT binary patch literal 4240 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 TH-S*7v8s{e4T6dP&4K>`ED*mA literal 0 HcmV?d00001