From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/browser_net_response_CORS_blocked.js | 117 +++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 devtools/client/netmonitor/test/browser_net_response_CORS_blocked.js (limited to 'devtools/client/netmonitor/test/browser_net_response_CORS_blocked.js') diff --git a/devtools/client/netmonitor/test/browser_net_response_CORS_blocked.js b/devtools/client/netmonitor/test/browser_net_response_CORS_blocked.js new file mode 100644 index 0000000000..d3dd72e6f7 --- /dev/null +++ b/devtools/client/netmonitor/test/browser_net_response_CORS_blocked.js @@ -0,0 +1,117 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +/** + * Test that requests blocked by CORS have a notification in the response panel + * and that it is not present when requests are not blocked + */ + +add_task(async function testCORSNotificationPresent() { + info("Test that CORS notification is present"); + + const { tab, monitor } = await initNetMonitor(HTTPS_CORS_URL, { + requestCount: 1, + }); + + const { document, store, windowRequire } = monitor.panelWin; + const Actions = windowRequire("devtools/client/netmonitor/src/actions/index"); + + store.dispatch(Actions.batchEnable(false)); + + const wait = waitForNetworkEvents(monitor, 1); + + info("making request to a origin that doesn't allow cross origin"); + const requestUrl = HTTPS_EXAMPLE_ORG_URL + "sjs_simple-test-server.sjs"; + await SpecialPowers.spawn( + tab.linkedBrowser, + [requestUrl], + async function (url) { + content.wrappedJSObject.performRequests( + url, + "triggering/preflight", + "post-data" + ); + } + ); + + info("Waiting until the requests appear in netmonitor"); + await wait; + + info("selecting first request"); + const firstItem = document.querySelectorAll(".request-list-item")[0]; + EventUtils.sendMouseEvent({ type: "mousedown" }, firstItem); + + const waitForRespPanel = waitForDOM( + document, + "#response-panel .notification" + ); + + info("switching to response panel"); + const respPanelButton = document.querySelector("#response-tab"); + EventUtils.sendMouseEvent({ type: "click" }, respPanelButton); + await waitForRespPanel; + + info("selecting CORS notification"); + const CORSNotification = document.querySelector( + '#response-panel .notification[data-key="CORS-error"] .messageText' + ); + ok(CORSNotification, "CORS Notification Present"); + is( + CORSNotification?.innerText, + "Response body is not available to scripts (Reason: CORS Missing Allow Origin)", + "Notification text is correct" + ); + + await teardown(monitor); +}); + +add_task(async function testCORSNotificationNotPresent() { + info("Test that CORS notification is not present"); + const { tab, monitor } = await initNetMonitor(CORS_URL, { + requestCount: 1, + }); + + const { document, store, windowRequire } = monitor.panelWin; + const Actions = windowRequire("devtools/client/netmonitor/src/actions/index"); + + store.dispatch(Actions.batchEnable(false)); + + const wait = waitForNetworkEvents(monitor, 1); + + info("Making request to a origin that allows cross origin"); + const requestUrl = "https://test1.example.com" + CORS_SJS_PATH; + await SpecialPowers.spawn( + tab.linkedBrowser, + [requestUrl], + async function (url) { + content.wrappedJSObject.performRequests( + url, + "triggering/preflight", + "post-data" + ); + } + ); + info("waiting for requests to appear in netmonitor"); + await wait; + + info("selecting first request"); + const firstItem = document.querySelectorAll(".request-list-item")[0]; + EventUtils.sendMouseEvent({ type: "mousedown" }, firstItem); + + const waitForRespPanel = waitForDOM(document, "#response-panel"); + + info("switching to response panel"); + const respPanelButton = document.querySelector("#response-tab"); + EventUtils.sendMouseEvent({ type: "click" }, respPanelButton); + await waitForRespPanel; + + info("try to select CORS notification"); + const CORSNotification = document.querySelector( + '#response-panel .notification[data-key="CORS-error"] .messageText' + ); + ok(!CORSNotification, "CORS notification not present"); + + await teardown(monitor); +}); -- cgit v1.2.3