products/Sources/formale Sprachen/C/Firefox/dom/payments/test/test_retryPayment.html
<!
DOCTYPE HTML >
<
html >
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1435161
-->
<
head >
<
meta charset=
"utf-8" >
<
title >Test for retry PaymentRequest</
title >
<
link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css" />
<
script src=
"/tests/SimpleTest/SimpleTest.js" ></
script >
<
script type=
"application/javascript" src=
"DefaultData.js" ></
script >
<
script type=
"application/javascript" >
"use strict" ;
SimpleTest.waitForExplicitFinish();
const gUrl = SimpleTest.getTestFileURL(
'RetryPaymentChromeScript.js' );
const gScript = SpecialPowers.loadChromeScript(gUrl);
function testFailHandler(message) {
ok(false, message);
}
function testPassHandler(message) {
ok(true, message);
}
gScript.addMessageListener(
"test-fail" , testFailHandler);
gScript.addMessageListener(
"test-pass" , testPassHandler);
async function requestChromeAction(action, params) {
gScript.sendAsyncMessage(action, params);
await new Promise(resolve => {
gScript.addMessageListener(`${action}-complete`, function completeListener() {
gScript.removeMessageListener(`${action}-complete`, completeListener);
resolve();
});
});
}
const validationErrors = {
error:
"error" ,
shippingAddress: {
addressLine:
"addressLine error" ,
city:
"city error" ,
country:
"country error" ,
dependentLocality:
"dependentLocality error" ,
organization:
"organization error" ,
phone:
"phone error" ,
postalCode:
"postalCode error" ,
recipient:
"recipient error" ,
region:
"region error" ,
regionCode:
"regionCode error" ,
sortingCode:
"sortingCode error" ,
},
payer: {
name:
"name error" ,
email:
"email error" ,
phone:
"phone error" ,
},
paymentMethod: {
account:
"method account error" ,
password:
"method password error" ,
},
};
const options = {
requestPayerName: true,
requestPayerEmail: true,
requestPayerPhone: true,
requestShipping: true,
shippingType:
"shipping"
};
function checkShowResponse(testName, payResponse) {
const { payerName, payerEmail, payerPhone } = payResponse.toJSON();
is(
payerName,
"Bill A. Pacheco" ,
`${testName}: Expected
'Bill A. Pacheco' on payerName, but got
'${payerName}' after show P
aymentRequest`
);
is(
payerEmail,
"" ,
`${testName}: Expected '' on payerEmail, but got '${payerEmail}' after show PaymentRequest`
);
is(
payerPhone,
"" ,
`${testName}: Expected '' on payerPhone, but got '${payerPhone}' after show PaymentRequest`
);
}
function checkRetryResponse(testName, payResponse) {
const { payerName, payerEmail, payerPhone } = payResponse.toJSON();
is(
payerName,
"Bill A. Pacheco" ,
`${testName}: Expected 'Bill A. Pacheco' on payerName, but got '${payerName}' after retry PaymentRequest`
);
is(
payerEmail,
"bpacheco@test.org" ,
`${testName} : Expected 'bpacheco@test.org' on payerEmail, but got '${payerEmail}' after retry PaymentRequest`
);
is(
payerPhone,
"+123456789" ,
`${testName} : Expected '+123456789' on payerPhone, but got '${payerPhone}' after retry PaymentRequest`
);
}
function unexpectedErrMsg(testName, errName, timing) {
return `${testName}: Unexpected error(${errName}) when ${timing} the PaymentRequest.`;
}
function expectedErrMsg(testName, expectedErr, errName, timing) {
return `${testName}: Expected '${expectedErr}' when ${timing} PaymentResponse, but got '${errName}' .`;
}
async function testRetryAfterComplete() {
const testName = "testRetryAfterComplete" ;
await requestChromeAction("start-test" , testName);
const payRequest = new PaymentRequest(defaultMethods, defaultDetails, options);
ok(payRequest, testName + ": failed to create PaymentRequest." );
if (!payRequest) {
await requestChromeAction("finish-test" );
return;
}
const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true);
let payResponse;
try {
payResponse = await payRequest.show();
await checkShowResponse(testName, payResponse);
handler.destruct();
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.Name, "showing" ));
await requestChromeAction("finish-test" );
handler.destruct();
return;
}
try {
await payResponse.complete("success" );
} catch(err) {
let errName = err.Name;
ok(false, unexpectedErrMsg(testName, err.Name, "completing" ));
await requestChromeAction("finish-test" );
return;
}
try {
await payResponse.retry(validationErrors);
ok(false, `${testName}: Unexpected success when retry the PaymentResponse.`);
} catch(err) {
is(err.name,
"InvalidStateError" ,
expectedErrMsg(testName, "InvalidStateError" , err.name, "retrying" ));
}
await requestChromeAction("finish-test" );
}
async function testRetryAfterRetry() {
const testName = "testRetryAfterRetry" ;
await requestChromeAction("start-test" , testName);
const payRequest = new PaymentRequest(defaultMethods, defaultDetails, options);
ok(payRequest, testName + ": failed to create PaymentRequest." );
if (!payRequest) {
await requestChromeAction("finish-test" );
return;
}
const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true);
let payResponse;
try {
payResponse = await payRequest.show();
await checkShowResponse(testName, payResponse);
handler.destruct();
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "showing" ));
await requestChromeAction("finish-test" );
handler.destruct();
return;
}
let retryPromise;
try {
retryPromise = payResponse.retry(validationErrors);
await payResponse.retry(validationErrors);
ok(false, `${testName}: Unexpected success when retry the PaymentResponse.`);
await requestChromeAction("finish-test" );
return;
} catch(err) {
is(err.name,
"InvalidStateError" ,
expectedErrMsg(testName, "InvalidStateError" , err.name, "retrying" ));
}
try {
await retryPromise;
await payResponse.complete("success" );
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "completing" ));
await requestChromeAction("finish-test" );
return;
}
await requestChromeAction("finish-test" );
}
async function testRetryWithEmptyErrors() {
const testName = "testRetryWithEmptyErrors" ;
await requestChromeAction("start-test" , testName);
const payRequest = new PaymentRequest(defaultMethods, defaultDetails, options);
ok(payRequest, testName + ": failed to create PaymentRequest." );
if (!payRequest) {
requestChromeAction("finish-test" );
return;
}
const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true);
let payResponse;
try {
payResponse = await payRequest.show();
await checkShowResponse(testName, payResponse);
handler.destruct();
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "showing" ));
await requestChromeAction("finish-test" );
handler.destruct();
return;
}
try {
await payResponse.retry();
ok(false, `${testName}: Unexpected success when retry the PaymentResponse.`);
await requestChromeAction("finish-test" );
return;
} catch(err) {
is(err.name,
"AbortError" ,
expectedErrMsg(testName, "AbortError" , err.name, "retrying" ));
}
try {
await payResponse.complete("success" );
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "completing" ));
await requestChromeAction("finish-test" );
return;
}
await requestChromeAction("finish-test" );
}
async function testRetry() {
const testName = "testRetry" ;
await requestChromeAction("start-test" , testName);
const payRequest = new PaymentRequest(defaultMethods, defaultDetails, options);
ok(payRequest, testName + ": failed to create PaymentRequest." );
if (!payRequest) {
await requestChromeAction("finish-test" );
return;
}
const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true);
let payResponse;
try {
payResponse = await payRequest.show();
await checkShowResponse(testName, payResponse);
handler.destruct();
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "showing" ));
await requestChromeAction("finish-test" );
handler.destruct();
return;
}
try {
await payResponse.retry(validationErrors);
await checkRetryResponse(testName, payResponse);
await payResponse.complete("success" );
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "retrying" ));
await requestChromeAction("finish-test" );
return;
}
await requestChromeAction("finish-test" );
}
async function testRetryAbortByUser() {
const testName = "testRetryAbortByUser" ;
await requestChromeAction("reject-retry" );
const payRequest = new PaymentRequest(defaultMethods, defaultDetails, options);
ok(payRequest, testName + ": failed to create PaymentRequest." );
if (!payRequest) {
await requestChromeAction("finish-test" );
return;
}
const handler = SpecialPowers.getDOMWindowUtils(window).setHandlingUserInput(true);
let payResponse;
try {
payResponse = await payRequest.show();
await checkShowResponse(testName, payResponse);
handler.destruct();
} catch(err) {
ok(false, unexpectedErrMsg(testName, err.name, "showing" ));
handler.destruct();
await requestChromeAction("finish-test" );
return;
}
try {
await payResponse.retry(validationErrors);
ok(false, `${testName}: Unexpected success when retry the PaymentResponse.`);
await requestChromeAction("finish-test" );
return;
} catch(err) {
is(err.name,
"AbortError" ,
expectedErrMsg(testName, "AbortError" , err.name, "retrying" ));
}
await requestChromeAction("finish-test" );
}
function teardown() {
return new Promise((resolve, reject) => {
gScript.addMessageListener("teardown-complete" , function teardownCompleteHandler() {
gScript.removeMessageListener("teardown-complete" , teardownCompleteHandler);
gScript.removeMessageListener("test-fail" , testFailHandler);
gScript.removeMessageListener("test-pass" , testPassHandler);
gScript.destroy();
SimpleTest.finish();
resolve();
});
gScript.sendAsyncMessage("teardown" );
});
}
async function runTests() {
try {
await testRetryAfterComplete()
await testRetryAfterRetry()
await testRetryWithEmptyErrors()
await testRetry()
await testRetryAbortByUser()
await teardown()
} catch(e) {
ok(false, "Unexpected error: " + e.name);
SimpleTest.finish();
}
}
window.addEventListener('load' , function() {
SpecialPowers.pushPrefEnv({
'set' : [
['dom.payments.request.enabled' , true],
]
}, runTests);
});
</script >
</head >
<body >
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1435161 " >Mozilla Bug 1435161</a>
</body >
</html >
Messung V0.5 C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.29 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland