Files
jiapu/tests/captcha-pages-contract.test.js
T

45 lines
1.3 KiB
JavaScript

const assert = require('node:assert/strict');
const test = require('node:test');
const CaptchaPages = require('../public/js/captcha-pages.js');
test('captcha request bodies keep operationCode in the URL and never submit legacy client or scene fields', () => {
const api = { tenantId: '000000', clientId: 'web-client' };
const challenge = CaptchaPages.buildChallengeBody({
operationCode: 'sms-login',
subject: '13800000000'
}, api);
const verification = CaptchaPages.buildVerifyBody({
data: {
trackList: [{ x: 0, y: 0 }, { x: 120, y: 4 }]
}
}, {
operationCode: 'sms-login',
subject: '13800000000',
challengeId: 'challenge-1'
}, api);
assert.deepEqual(challenge, {
tenantId: '000000',
subject: '13800000000'
});
assert.deepEqual(verification, {
tenantId: '000000',
subject: '13800000000',
challengeId: 'challenge-1',
providerCode: 'tianai',
captchaType: 'SLIDER',
payload: {
track: {
trackList: [{ x: 0, y: 0 }, { x: 120, y: 4 }],
left: 120,
top: 4
}
}
});
assert.equal('clientId' in challenge, false);
assert.equal('sceneCode' in challenge, false);
assert.equal('clientId' in verification, false);
assert.equal('sceneCode' in verification, false);
});