/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

const TEST_JSON_URL = URL_ROOT + "csp_json.json";

add_task(async function () {
  info("Test CSP JSON started");

  const tab = await addJsonViewTab(TEST_JSON_URL);

  const count = await getElementCount(".jsonPanelBox .treeTable .treeRow");
  is(count, 1, "There must be one row");

  // The JSON Viewer alters the CSP, but the displayed header should be the original one
  await selectJsonViewContentTab("headers");
  await SpecialPowers.spawn(tab.linkedBrowser, [], async function () {
    const responseHeaders = content.document.querySelector(".netHeadersGroup");
    const names = responseHeaders.querySelectorAll(".netInfoParamName");
    let found = false;
    for (const name of names) {
      if (name.textContent.toLowerCase() == "content-security-policy") {
        ok(!found, "The CSP header only appears once");
        found = true;
        const value = name.nextElementSibling.textContent;
        const expected = "default-src 'none'; base-uri 'none';";
        is(value, expected, "The CSP value has not been altered");
      }
    }
    ok(found, "The CSP header is present");
  });
});
