Test basic creation of an ApplePaySession object.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Testing PaymentRequest (v3)

PASS new ApplePaySession(3, { }) threw exception TypeError: Member ApplePayPaymentRequest.countryCode is required and must be an instance of DOMString.
PASS new ApplePaySession(3, validRequest()) did not throw exception.

Testing PaymentRequest.supportedCountries

SETUP: request = validRequest(); request.supportedCountries = ['invalid'];
PASS new ApplePaySession(3, request) threw exception TypeError: "invalid" is not a valid country code..

SETUP: request = validRequest(); request.supportedCountries = ['US', 'invalid'];
PASS new ApplePaySession(3, request) threw exception TypeError: "invalid" is not a valid country code..

SETUP: request = validRequest(); request.supportedCountries = ['US', 7];
PASS new ApplePaySession(3, request) threw exception TypeError: "7" is not a valid country code..

SETUP: request = validRequest(); request.supportedCountries = '';
PASS new ApplePaySession(3, request) threw exception TypeError: Value is not a sequence.

SETUP: request = validRequest(); request.supportedCountries = 7;
PASS new ApplePaySession(3, request) threw exception TypeError: Value is not a sequence.

SETUP: request = validRequest(); request.supportedCountries = null;
PASS new ApplePaySession(3, request) threw exception TypeError: Value is not a sequence.

SETUP: request = validRequest(); delete request.supportedCountries;
PASS new ApplePaySession(3, request) did not throw exception.

SETUP: request = validRequest(); request.supportedCountries = undefined;
PASS new ApplePaySession(3, request) did not throw exception.

SETUP: request = validRequest(); request.supportedCountries = [];
PASS new ApplePaySession(3, request) did not throw exception.

SETUP: request = validRequest(); request.supportedCountries = ['US'];
PASS new ApplePaySession(3, request) did not throw exception.

SETUP: request = validRequest(); request.supportedCountries = ['US', 'US'];
PASS new ApplePaySession(3, request) did not throw exception.

SETUP: request = validRequest(); request.requiredBillingContactFields = ['phoneticName'];
PASS new ApplePaySession(3, request) did not throw exception.

SETUP: request = validRequest(); request.requiredShippingContactFields = ['phoneticName'];
PASS new ApplePaySession(3, request) did not throw exception.


PASS successfullyParsed is true

TEST COMPLETE

