Files
sousa-gecko/testing/web-platform/tests/web-based-payment-handler/app-simple.js
T
Stephen McGruer b0b5cb55af Bug 2017646 [wpt PR 57854] - Rename payment-handler -> web-based-payment-handler, a=testonly
Automatic update from web-platform-tests
Rename payment-handler -> web-based-payment-handler (#57854)

The spec was recently renamed to Web-based Payment Handler API; update tests to
match.
--

wpt-commits: 5025da63b97c6e202211846289ffe40e40238002
wpt-pr: 57854
2026-02-24 10:02:59 +00:00

85 lines
2.5 KiB
JavaScript

self.addEventListener('canmakepayment', event => {
event.respondWith(true);
});
self.addEventListener('paymentrequest', event => {
const expectedId = 'test-payment-request-identifier';
if (event.paymentRequestId !== expectedId) {
const msg = `Expected payment request identifier "${expectedId}", but got "${
event.paymentRequestId
}"`;
event.respondWith(Promise.reject(new Error(msg)));
return;
}
if (event.methodData.length !== 1) {
const msg = `Expected one method data, but got ${
event.methodData.length
} instead`;
event.respondWith(Promise.reject(new Error(msg)));
return;
}
const methodData = event.methodData[0];
const expectedMethodNamePrefix = 'http';
if (!methodData.supportedMethods.startsWith(expectedMethodNamePrefix)) {
const msg = `Expected payment method name "${methodData.supportedMethods}" to start with ${expectedMethodNamePrefix}"`;
event.respondWith(Promise.reject(new Error(msg)));
return;
}
const expectedMethodNameSuffix = '/web-based-payment-handler/payment-request-event-manual-manifest.json';
if (!methodData.supportedMethods.endsWith(expectedMethodNameSuffix)) {
const msg = `Expected payment method name "${methodData.supportedMethods}" to end with ${expectedMethodNameSuffix}"`;
event.respondWith(Promise.reject(new Error(msg)));
return;
}
if (methodData.data.supportedNetworks) {
const msg =
'Expected no supported networks in payment method specific data';
event.respondWith(Promise.reject(new Error(msg)));
return;
}
if (methodData.displayItems) {
const msg = 'Expected no display items';
event.respondWith(Promise.reject(new Error(msg)));
return;
}
const total = event.total;
if (!total) {
const msg = 'Expected total';
event.respondWith(Promise.reject(new Error(msg)));
return;
}
if (total.label) {
const msg = 'Expected no total label';
event.respondWith(Promise.reject(new Error(msg)));
return;
}
const expectedCurrency = 'USD';
if (total.currency !== expectedCurrency) {
const msg = `Expected currency "${expectedCurrency}", but got "${
total.currency
}"`;
event.respondWith(Promise.reject(new Error(msg)));
return;
}
const expectedValue = '0.01';
if (total.value !== expectedValue) {
const msg = `Expected value "${expectedValue}", but got "${total.value}"`;
event.respondWith(Promise.reject(new Error(msg)));
return;
}
event.respondWith({
methodName: methodData.supportedMethods,
details: {status: 'success'},
});
});