| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const test = require('node:test');
- const assert = require('node:assert/strict');
- const fs = require('node:fs');
- function loadStep14() {
- const source = fs.readFileSync('background/steps/fill-paypal-payment.js', 'utf8');
- const scope = {};
- new Function('self', `${source}; return self.MultiPageBackgroundStep14;`)(scope);
- return scope.MultiPageBackgroundStep14;
- }
- test('step 9 passes configured PayPal phone and sms api to content script', async () => {
- const api = loadStep14();
- let sentMessage = null;
- const executor = api.createStep14Executor({
- addLog: async () => {},
- fetchCheckoutAddress: async () => ({
- street: '1 Main St',
- city: 'New York',
- state: 'New York',
- zip: '10001',
- }),
- generateRandomEmail: () => 'checkout@example.com',
- sendToContentScriptResilient: async (_source, message) => {
- sentMessage = message;
- },
- });
- await executor.executeStep14({
- paypalPhone: '+15822201173',
- paypalSmsApiUrl: 'http://a.62-us.com/api/get_sms?key=test',
- });
- assert.equal(sentMessage.step, 9);
- assert.equal(sentMessage.payload.phone, '5822201173');
- assert.equal(sentMessage.payload.paypalPhone, '+15822201173');
- assert.equal(sentMessage.payload.paypalSmsApiUrl, 'http://a.62-us.com/api/get_sms?key=test');
- const card = sentMessage.payload.card;
- assert.equal(card.Credit_Card_Type, 'Visa');
- assert.match(card.Credit_Card_Number, /^4\d{15}$/);
- assert.equal(isLuhnValid(card.Credit_Card_Number), true);
- assert.match(card.Expires, /^(0[1-9]|1[0-2])\/\d{2}$/);
- assert.match(card.CVV2, /^\d{3}$/);
- });
- function isLuhnValid(value) {
- let sum = 0;
- let shouldDouble = false;
- for (let index = String(value).length - 1; index >= 0; index -= 1) {
- let digit = Number(value[index]);
- if (!Number.isInteger(digit)) return false;
- if (shouldDouble) {
- digit *= 2;
- if (digit > 9) digit -= 9;
- }
- sum += digit;
- shouldDouble = !shouldDouble;
- }
- return sum % 10 === 0;
- }
|