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


Quelle  test_clear_forgetAboutSite.js   Sprache: JAVA

 
"use strict";

const { ForgetAboutSite } = ChromeUtils.importESModule(
  "resource://gre/modules/ForgetAboutSite.sys.mjs"
);

var db;
var unregisterDefers = {};
var userAgentID = "4fe01c2d-72ac-4c13-93d2-bb072caf461d";

function promiseUnregister(keyID) {
  return new Promise(r => (unregisterDefers[keyID] = r));
}

function run_test() {
  do_get_profile();
  setPrefs({
    userAgentID,
  });
  run_next_test();
}

add_task(async function setup() {
  db = PushServiceWebSocket.newPushDB();
  registerCleanupFunction(() => db.drop().then(() => db.close()));

  // Active and expired subscriptions for a subdomain. The active subscription
  // should be expired, then removed; the expired subscription should be
  // removed immediately.
  await putTestRecord(db, "active-sub""https://sub.example.com/sub-page", 4);
  await putTestRecord(
    db,
    "active-sub-b",
    "https://sub.example.net/sub-page",
    4
  );
  await putTestRecord(
    db,
    "expired-sub",
    "https://sub.example.com/yet-another-page",
    0
  );

  // Active subscriptions for another subdomain. Should be unsubscribed and
  // dropped.
  await putTestRecord(db, "active-1""https://sub2.example.com/some-page", 8);
  await putTestRecord(
    db,
    "active-2",
    "https://sub3.example.com/another-page",
    16
  );
  await putTestRecord(
    db,
    "active-1-b",
    "https://sub2.example.net/some-page",
    8
  );
  await putTestRecord(
    db,
    "active-2-b",
    "https://sub3.example.net/another-page",
    16
  );

  // A privileged subscription with a real URL that should not be affected
  // because its quota is set to `Infinity`.
  await putTestRecord(
    db,
    "privileged",
    "https://sub.example.com/real-url",
    Infinity
  );

  let handshakeDone;
  let handshakePromise = new Promise(r => (handshakeDone = r));
  PushService.init({
    serverURI: "wss://push.example.org/",
    db,
    makeWebSocket(uri) {
      return new MockWebSocket(uri, {
        onHello() {
          this.serverSendMsg(
            JSON.stringify({
              messageType: "hello",
              uaid: userAgentID,
              status: 200,
              use_webpush: true,
            })
          );
          handshakeDone();
        },
        onUnregister(request) {
          let resolve = unregisterDefers[request.channelID];
          equal(
            typeof resolve,
            "function",
            "Dropped unexpected channel ID " + request.channelID
          );
          delete unregisterDefers[request.channelID];
          equal(request.code, 200, "Expected manual unregister reason");
          resolve();
          this.serverSendMsg(
            JSON.stringify({
              messageType: "unregister",
              status: 200,
              channelID: request.channelID,
            })
          );
        },
      });
    },
  });
  // For cleared subscriptions, we only send unregister requests in the
  // background and if we're connected.
  await handshakePromise;
});

add_task(async function test_forgetAboutRootDomain() {
  let modifiedScopes = [];
  let promiseForgetSubs = Promise.all([
    promiseUnregister("active-sub"),
    promiseUnregister("active-1"),
    promiseUnregister("active-2"),
    promiseObserverNotification(
      PushServiceComponent.subscriptionModifiedTopic,
      (subject, data) => {
        modifiedScopes.push(data);
        return modifiedScopes.length == 2;
      }
    ),
  ]);

  await ForgetAboutSite.removeDataFromBaseDomain("example.com");
  await promiseForgetSubs;

  deepEqual(
    modifiedScopes.sort(compareAscending),
    [
      "https://sub2.example.com/some-page",
      "https://sub3.example.com/another-page",
    ],
    "Should fire modified notifications for entire domain"
  );

  let remainingIDs = await getAllKeyIDs(db);
  deepEqual(
    remainingIDs,
    ["active-1-b""active-2-b""active-sub-b""privileged"],
    "Should ignore privileged records with a real URL"
  );
});

Messung V0.5
C=93 H=96 G=94

¤ 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