import assert from 'node:assert/strict'; import test from 'node:test'; import { assessPageDataAuthenticationContract, buildSmokeInsertRow, extractInjectedPageIdFromHtml, normalizePageDataApiBase, } from './page-data-delivery-assess.mjs'; test('password pages must authenticate with the server before data reads', () => { assert.deepEqual( assessPageDataAuthenticationContract({ policy: { accessMode: 'password' }, html: '', }), [ 'password_page_missing_server_authentication', 'password_page_uses_client_side_password_gate', ], ); assert.deepEqual( assessPageDataAuthenticationContract({ policy: { accessMode: 'password' }, html: '', }), [], ); assert.deepEqual( assessPageDataAuthenticationContract({ policy: { accessMode: 'password' }, html: '', }), ['password_page_uses_client_side_password_gate'], ); }); test('public pages cannot use a client-side password gate as authorization', () => { assert.deepEqual( assessPageDataAuthenticationContract({ policy: { accessMode: 'public' }, html: '', }), ['public_page_uses_client_side_password_gate'], ); }); test('extractInjectedPageIdFromHtml reads injected pageId', () => { const html = ` `; assert.equal(extractInjectedPageIdFromHtml(html), 'page-abc'); }); test('extractInjectedPageIdFromHtml reads unquoted pageId keys', () => { const html = ''; assert.equal(extractInjectedPageIdFromHtml(html), 'page-unquoted'); }); test('normalizePageDataApiBase appends /api to public base url', () => { assert.equal(normalizePageDataApiBase('https://m.tkmind.cn'), 'https://m.tkmind.cn/api'); assert.equal(normalizePageDataApiBase('https://m.tkmind.cn/api'), 'https://m.tkmind.cn/api'); assert.equal(normalizePageDataApiBase('/api'), '/api'); }); test('buildSmokeInsertRow fills insert columns', () => { const row = buildSmokeInsertRow( { datasets: { dining_survey: { columns: { insert: ['q1_frequency', 'overall_rating', 'phone'] }, }, }, }, 'dining_survey', ); assert.equal(row.q1_frequency, 'smoke-test'); assert.equal(row.overall_rating, 3); assert.equal(row.phone, '13800000000'); });