diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /netwerk/test/unit_ipc/child_cookie_header.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'netwerk/test/unit_ipc/child_cookie_header.js')
-rw-r--r-- | netwerk/test/unit_ipc/child_cookie_header.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/netwerk/test/unit_ipc/child_cookie_header.js b/netwerk/test/unit_ipc/child_cookie_header.js new file mode 100644 index 0000000000..4686f509f4 --- /dev/null +++ b/netwerk/test/unit_ipc/child_cookie_header.js @@ -0,0 +1,93 @@ +/* global NetUtil, ChannelListener */ + +"use strict"; + +function inChildProcess() { + return ( + // eslint-disable-next-line mozilla/use-services + Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime) + .processType != Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT + ); +} + +let uri = null; +function makeChan() { + return NetUtil.newChannel({ + uri, + loadUsingSystemPrincipal: true, + }).QueryInterface(Ci.nsIHttpChannel); +} + +function OpenChannelPromise(aChannel, aClosure) { + return new Promise(resolve => { + function processResponse(request, buffer, context) { + aClosure(request.QueryInterface(Ci.nsIHttpChannel), buffer, context); + resolve(); + } + aChannel.asyncOpen(new ChannelListener(processResponse, null)); + }); +} + +// This test doesn't do much, except to communicate with the parent, and get +// URL we need to connect to. +add_task(async function setup() { + ok(inChildProcess(), "Sanity check. This should run in the child process"); + // Initialize the URL. Parent runs the server + do_send_remote_message("start-test"); + uri = await do_await_remote_message("start-test-done"); +}); + +// This test performs a request, and checks that no cookie header are visible +// to the child process +add_task(async function test1() { + let chan = makeChan(); + + await OpenChannelPromise(chan, (request, buffer) => { + equal(buffer, "response"); + Assert.throws( + () => request.getRequestHeader("Cookie"), + /NS_ERROR_NOT_AVAILABLE/, + "Cookie header should not be visible on request in the child" + ); + Assert.throws( + () => request.getResponseHeader("Set-Cookie"), + /NS_ERROR_NOT_AVAILABLE/, + "Cookie header should not be visible on response in the child" + ); + }); + + // We also check that a cookie was saved by the Set-Cookie header + // in the parent. + do_send_remote_message("check-cookie-count"); + let count = await do_await_remote_message("check-cookie-count-done"); + equal(count, 1); +}); + +// This test communicates with the parent, to locally save a new cookie. +// Then it performs another request, makes sure no cookie headers are visible, +// after which it checks that both cookies are visible to the parent. +add_task(async function test2() { + do_send_remote_message("set-cookie"); + await do_await_remote_message("set-cookie-done"); + + let chan = makeChan(); + await OpenChannelPromise(chan, (request, buffer) => { + equal(buffer, "response"); + Assert.throws( + () => request.getRequestHeader("Cookie"), + /NS_ERROR_NOT_AVAILABLE/, + "Cookie header should not be visible on request in the child" + ); + Assert.throws( + () => request.getResponseHeader("Set-Cookie"), + /NS_ERROR_NOT_AVAILABLE/, + "Cookie header should not be visible on response in the child" + ); + }); + + // We should have two cookies. One set by the Set-Cookie header sent by the + // server, and one that was manually set in the parent. + do_send_remote_message("second-check-cookie-count"); + let count = await do_await_remote_message("second-check-cookie-count-done"); + equal(count, 2); +}); |