test: export content, empty comment, deleted not in export (53/53 pass)
This commit is contained in:
@@ -678,6 +678,74 @@ async function cleanup() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
// 26. Пустой comment — должен сохранять запись без ошибки
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
console.log('\n── 26. Пустой comment ──');
|
||||||
|
|
||||||
|
{
|
||||||
|
const csrf = await getCsrfFromIndex(userAgent);
|
||||||
|
const res = await userAgent.post('/add').type('form')
|
||||||
|
.send({ value: '7.7.7.7', comment: '', _csrf: csrf });
|
||||||
|
const err = getRedirectParam(res, 'error');
|
||||||
|
log(!err && res.status === 302, 'user: добавил запись без comment', `err=${err}`);
|
||||||
|
// Чистим
|
||||||
|
await pool.query(
|
||||||
|
`UPDATE whitelist_entries SET deleted_at = NOW(), deleted_by = 'test-cleanup'
|
||||||
|
WHERE value_cidr = '7.7.7.7/32' AND deleted_at IS NULL`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
// 27. Export содержит CIDR текущей компании
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
console.log('\n── 27. Export содержит CIDR ──');
|
||||||
|
|
||||||
|
{
|
||||||
|
// Добавим уникальную запись и проверим что она появляется в export
|
||||||
|
const csrf = await getCsrfFromIndex(userAgent);
|
||||||
|
await userAgent.post('/add').type('form')
|
||||||
|
.send({ value: '6.6.6.6', comment: 'export test', _csrf: csrf });
|
||||||
|
|
||||||
|
const res = await userAgent.get('/export');
|
||||||
|
log(res.status === 200, 'user: /export → 200');
|
||||||
|
const hasCidr = res.text.includes('6.6.6.6');
|
||||||
|
log(hasCidr, 'user: добавленный CIDR виден в /export',
|
||||||
|
hasCidr ? 'found' : `text=${res.text.slice(0, 100)}`);
|
||||||
|
|
||||||
|
// Чистим
|
||||||
|
await pool.query(
|
||||||
|
`UPDATE whitelist_entries SET deleted_at = NOW(), deleted_by = 'test-cleanup'
|
||||||
|
WHERE value_cidr = '6.6.6.6/32' AND deleted_at IS NULL`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
// 28. Удалённая запись не видна в export
|
||||||
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
console.log('\n── 28. Удалённая запись не в export ──');
|
||||||
|
|
||||||
|
{
|
||||||
|
// Добавляем, потом удаляем, проверяем что нет в export
|
||||||
|
const csrf = await getCsrfFromIndex(userAgent);
|
||||||
|
const addRes = await userAgent.post('/add').type('form')
|
||||||
|
.send({ value: '4.4.4.4', comment: 'будет удалена', _csrf: csrf });
|
||||||
|
|
||||||
|
// Ищем id в БД
|
||||||
|
const r = await pool.query(
|
||||||
|
`SELECT id FROM whitelist_entries WHERE value_cidr = '4.4.4.4/32' AND deleted_at IS NULL`
|
||||||
|
);
|
||||||
|
const delId = r.rows[0]?.id;
|
||||||
|
if (delId) {
|
||||||
|
const csrf2 = await getCsrfFromIndex(userAgent);
|
||||||
|
await userAgent.post(`/delete/${delId}`).type('form').send({ _csrf: csrf2 });
|
||||||
|
}
|
||||||
|
|
||||||
|
const exportRes = await userAgent.get('/export');
|
||||||
|
log(!exportRes.text.includes('4.4.4.4'),
|
||||||
|
'user: удалённый CIDR не виден в /export');
|
||||||
|
}
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
// 24. Race condition — одновременные запросы на /add при лимите
|
// 24. Race condition — одновременные запросы на /add при лимите
|
||||||
// (используем свежий агент, не отравленный rate-limit)
|
// (используем свежий агент, не отравленный rate-limit)
|
||||||
|
|||||||
Reference in New Issue
Block a user