<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="/js-test-resources/ui-helper.js"></script>
<script src="/resources/js-test-pre.js"></script>
<script src="/resources/payment-request.js"></script>
</head>
<body>
<script>

description("Test ApplePaySession's cancel event.");

window.jsTestIsAsync = true;

function validRequest()
{
    return {
        countryCode: 'US',
        currencyCode: 'USD',
        supportedNetworks: ['visa', 'masterCard'],
        merchantCapabilities: ['supports3DS'],
        total: { label: 'Your Label', amount: '10.00' },
    }
}

activateThen(() => {
    var session = new ApplePaySession(2, validRequest());
    session.oncancel = (event) => {
        shouldBeNonNull('event');
        shouldBe('typeof event', '"object"');
        shouldBeNonNull('event.sessionError');
        shouldBe('typeof event.sessionError', '"object"');
        shouldBe('event.sessionError.code', '"unknown"');
        shouldBe("typeof event.sessionError.code", '"string"');
        shouldBe('Object.keys(event.sessionError.info).length', '0');
        shouldBe('typeof event.sessionError.info', '"object"');
        testPassed('cancel event received');
        finishJSTest();
    };
    session.begin();
    internals.mockPaymentCoordinator.cancelPayment();
});
</script>
<script src="/resources/js-test-post.js"></script>
</body>
</html>
