120 lines
No EOL
4.5 KiB
JavaScript
120 lines
No EOL
4.5 KiB
JavaScript
// META: script=/resources/testdriver.js
|
|
// META: script=/resources/testdriver-vendor.js
|
|
'use strict';
|
|
|
|
const okayAdRequest = {
|
|
adRequestUrl: "https://{{host}}:{{ports[https][0]}}",
|
|
adProperties: [
|
|
{ width: "42", height: "32", slot: "first", lang: "en-ca", adType: "test-ad1", bidFloor: 42.0 },
|
|
{ width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 }],
|
|
publisherCode: "pubCode123",
|
|
targeting: { interests: ["interest1", "interest2"] },
|
|
anonymizedProxiedSignals: [],
|
|
fallbackSource: "https://{{domains[www2]}}:{{ports[https][0]}}"
|
|
};
|
|
|
|
test(() => {
|
|
assert_not_equals(navigator.createAdRequest, undefined);
|
|
}, "createAdRequest() should be supported on the navigator interface.");
|
|
|
|
promise_test(async t => {
|
|
const createPromise = navigator.createAdRequest(okayAdRequest);
|
|
|
|
await promise_rejects_dom(t, "NotSupportedError", createPromise);
|
|
}, "createAdRequest() should reject with NotSupported initially.");
|
|
|
|
promise_test(async t => {
|
|
const createPromise = navigator.createAdRequest();
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject missing parameters.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
delete adRequest.adRequestUrl;
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject a missing adRequestUrl.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
adRequest.adRequestUrl = "http://{{host}}:{{ports[https][0]}}";
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject a HTTP adRequestUrl.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
delete adRequest.adProperties;
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject missing adProperties.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
adRequest.adProperties = [];
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject empty adProperties.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
adRequest.fallbackSource = "http://{{host}}:{{ports[https][0]}}";
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject a HTTP fallbackSource.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
|
|
// delete all optional params and the request should still be okay.
|
|
delete adRequest.anonymizedProxiedSignals;
|
|
delete adRequest.fallbackSource;
|
|
delete adRequest.publisherCode;
|
|
delete adRequest.targeting;
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
// Until fully implemented we expect a NotSupportedError instead of success.
|
|
await promise_rejects_dom(t, "NotSupportedError", createPromise);
|
|
}, "createAdRequest() should have optional params.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
// A single adProperties object should be accepted as well as a sequence.
|
|
adRequest.adProperties = { width: "24", height: "48", slot: "first", lang: "en-us", adType: "test-ad2", bidFloor: 42.0 };
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
// Until fully implemented we expect a NotSupportedError instead of success.
|
|
await promise_rejects_dom(t, "NotSupportedError", createPromise);
|
|
}, "createAdRequest() should accept a single adProperties.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "coarse-ua", "targeting", "user-ad-interests"];
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
// Until fully implemented we expect a NotSupportedError instead of success.
|
|
await promise_rejects_dom(t, "NotSupportedError", createPromise);
|
|
}, "createAdRequest() should accept valid anonymizedProxiedSignals.");
|
|
|
|
promise_test(async t => {
|
|
const adRequest = Object.assign({}, okayAdRequest);
|
|
adRequest.anonymizedProxiedSignals = ["coarse-geolocation", "unknown-type"];
|
|
|
|
const createPromise = navigator.createAdRequest(adRequest);
|
|
|
|
await promise_rejects_js(t, TypeError, createPromise);
|
|
}, "createAdRequest() should reject unknown anonymizedPRoxiedSignals."); |