From a6dfcc89fab6a82000b3bf07a851a1b913190fc5 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 8 Jan 2023 14:43:07 +0100 Subject: [PATCH] Implement unit tests for the `recoverJsURL` utility function --- test/unit/core_utils_spec.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/unit/core_utils_spec.js b/test/unit/core_utils_spec.js index 1a8da5a7c..41a16a0ed 100644 --- a/test/unit/core_utils_spec.js +++ b/test/unit/core_utils_spec.js @@ -23,6 +23,7 @@ import { isWhiteSpace, log2, parseXFAPath, + recoverJsURL, stringToUTF16HexString, stringToUTF16String, toRomanNumerals, @@ -210,6 +211,39 @@ describe("core_utils", function () { }); }); + describe("recoverJsURL", function () { + it("should get valid URLs without `newWindow` property", function () { + const inputs = [ + "window.open('https://test.local')", + "window.open('https://test.local', true)", + "app.launchURL('https://test.local')", + "app.launchURL('https://test.local', false)", + "xfa.host.gotoURL('https://test.local')", + "xfa.host.gotoURL('https://test.local', true)", + ]; + + for (const input of inputs) { + expect(recoverJsURL(input)).toEqual({ + url: "https://test.local", + newWindow: false, + }); + } + }); + + it("should get valid URLs with `newWindow` property", function () { + const input = "app.launchURL('https://test.local', true)"; + expect(recoverJsURL(input)).toEqual({ + url: "https://test.local", + newWindow: true, + }); + }); + + it("should not get invalid URLs", function () { + const input = "navigateToUrl('https://test.local')"; + expect(recoverJsURL(input)).toBeNull(); + }); + }); + describe("escapePDFName", function () { it("should escape PDF name", function () { expect(escapePDFName("hello")).toEqual("hello");