Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  child_cookie_header.js   Sprache: JAVA

 
/* 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);
});

Messung V0.5
C=90 H=85 G=87

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge