Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / netwerk / test / unit / test_cache_204_response.js
blob4c02e1c60d23af86fc0e3ae0509b99e8e6007376
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 /*
7 Test if 204 response is cached.
8 1. Make first http request and return a 204 response.
9 2. Check if the first response is not cached.
10 3. Make second http request and check if the response is cached.
14 "use strict";
16 const { HttpServer } = ChromeUtils.importESModule(
17 "resource://testing-common/httpd.sys.mjs"
20 function test_handler(metadata, response) {
21 response.setHeader("Content-Type", "text/html", false);
22 response.setHeader("Cache-control", "max-age=9999", false);
23 response.setStatusLine(metadata.httpVersion, 204, "No Content");
26 function make_channel(url) {
27 let channel = NetUtil.newChannel({
28 uri: url,
29 loadUsingSystemPrincipal: true,
30 }).QueryInterface(Ci.nsIHttpChannel);
31 return channel;
34 async function get_response(channel, fromCache) {
35 return new Promise(resolve => {
36 channel.asyncOpen(
37 new ChannelListener((request, buffer, ctx, isFromCache) => {
38 Assert.equal(
39 fromCache,
40 isFromCache,
41 `got response from cache = ${fromCache}`
43 resolve();
46 });
49 async function stop_server(httpserver) {
50 return new Promise(resolve => {
51 httpserver.stop(resolve);
52 });
55 add_task(async function () {
56 let httpserver = new HttpServer();
57 httpserver.registerPathHandler("/testdir", test_handler);
58 httpserver.start(-1);
59 const PORT = httpserver.identity.primaryPort;
60 const URI = `http://localhost:${PORT}/testdir`;
62 await get_response(make_channel(URI, "GET"), false);
63 await get_response(make_channel(URI, "GET"), true);
65 await stop_server(httpserver);
66 });