tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

createAdRequest.tentative.https.sub.window.js (4653B)


      1 // META: script=/resources/testdriver.js
      2 // META: script=/resources/testdriver-vendor.js
      3 'use strict';
      4 
      5 const okayAdRequest = {
      6  adRequestUrl: "https://{{host}}:{{ports[https][0]}}",
      7  adProperties: [
      8    { width: "42", height: "32", slot: "first", lang: "en-ca", adType: "test-ad1", bidFloor: 42.0 },
      9    { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 }],
     10  publisherCode: "pubCode123",
     11  targeting: { interests: ["interest1", "interest2"] },
     12  anonymizedProxiedSignals: [],
     13  fallbackSource: "https://{{domains[www2]}}:{{ports[https][0]}}"
     14 };
     15 
     16 test(() => {
     17  assert_not_equals(navigator.createAdRequest, undefined);
     18 }, "createAdRequest() should be supported on the navigator interface.");
     19 
     20 promise_test(async t => {
     21  const createPromise = navigator.createAdRequest(okayAdRequest);
     22 
     23  await promise_rejects_dom(t, "NotSupportedError", createPromise);
     24 }, "createAdRequest() should reject with NotSupported initially.");
     25 
     26 promise_test(async t => {
     27  const createPromise = navigator.createAdRequest();
     28 
     29  await promise_rejects_js(t, TypeError, createPromise);
     30 }, "createAdRequest() should reject missing parameters.");
     31 
     32 promise_test(async t => {
     33  const adRequest = Object.assign({}, okayAdRequest);
     34  delete adRequest.adRequestUrl;
     35 
     36  const createPromise = navigator.createAdRequest(adRequest);
     37 
     38  await promise_rejects_js(t, TypeError, createPromise);
     39 }, "createAdRequest() should reject a missing adRequestUrl.");
     40 
     41 promise_test(async t => {
     42  const adRequest = Object.assign({}, okayAdRequest);
     43  adRequest.adRequestUrl = "http://{{host}}:{{ports[https][0]}}";
     44 
     45  const createPromise = navigator.createAdRequest(adRequest);
     46 
     47  await promise_rejects_js(t, TypeError, createPromise);
     48 }, "createAdRequest() should reject a HTTP adRequestUrl.");
     49 
     50 promise_test(async t => {
     51  const adRequest = Object.assign({}, okayAdRequest);
     52  delete adRequest.adProperties;
     53 
     54  const createPromise = navigator.createAdRequest(adRequest);
     55 
     56  await promise_rejects_js(t, TypeError, createPromise);
     57 }, "createAdRequest() should reject missing adProperties.");
     58 
     59 promise_test(async t => {
     60  const adRequest = Object.assign({}, okayAdRequest);
     61  adRequest.adProperties = [];
     62 
     63  const createPromise = navigator.createAdRequest(adRequest);
     64 
     65  await promise_rejects_js(t, TypeError, createPromise);
     66 }, "createAdRequest() should reject empty adProperties.");
     67 
     68 promise_test(async t => {
     69  const adRequest = Object.assign({}, okayAdRequest);
     70  adRequest.fallbackSource = "http://{{host}}:{{ports[https][0]}}";
     71 
     72  const createPromise = navigator.createAdRequest(adRequest);
     73 
     74  await promise_rejects_js(t, TypeError, createPromise);
     75 }, "createAdRequest() should reject a HTTP fallbackSource.");
     76 
     77 promise_test(async t => {
     78  const adRequest = Object.assign({}, okayAdRequest);
     79 
     80  // delete all optional params and the request should still be okay.
     81  delete adRequest.anonymizedProxiedSignals;
     82  delete adRequest.fallbackSource;
     83  delete adRequest.publisherCode;
     84  delete adRequest.targeting;
     85 
     86  const createPromise = navigator.createAdRequest(adRequest);
     87 
     88  // Until fully implemented we expect a NotSupportedError instead of success.
     89  await promise_rejects_dom(t, "NotSupportedError", createPromise);
     90 }, "createAdRequest() should have optional params.");
     91 
     92 promise_test(async t => {
     93  const adRequest = Object.assign({}, okayAdRequest);
     94  // A single adProperties object should be accepted as well as a sequence.
     95  adRequest.adProperties = { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 };
     96 
     97  const createPromise = navigator.createAdRequest(adRequest);
     98 
     99  // Until fully implemented we expect a NotSupportedError instead of success.
    100  await promise_rejects_dom(t, "NotSupportedError", createPromise);
    101 }, "createAdRequest() should accept a single adProperties.");
    102 
    103 promise_test(async t => {
    104  const adRequest = Object.assign({}, okayAdRequest);
    105  adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "coarse-ua", "targeting", "user-ad-interests"];
    106 
    107  const createPromise = navigator.createAdRequest(adRequest);
    108 
    109  // Until fully implemented we expect a NotSupportedError instead of success.
    110  await promise_rejects_dom(t, "NotSupportedError", createPromise);
    111 }, "createAdRequest() should accept valid anonymizedProxiedSignals.");
    112 
    113 promise_test(async t => {
    114  const adRequest = Object.assign({}, okayAdRequest);
    115  adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "unknown-type"];
    116 
    117  const createPromise = navigator.createAdRequest(adRequest);
    118 
    119  await promise_rejects_js(t, TypeError, createPromise);
    120 }, "createAdRequest() should reject unknown anonymizedPRoxiedSignals.");