From 66a52d9363d0dc810aa5fdc643247691742153d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Tue, 2 Jun 2026 14:20:16 +0300 Subject: [PATCH] v0.5.9: fix tests IDs, revert dotenv abs paths, deploy-vm doc --- package.json | 2 +- src/config.js | 2 -- tests/api.js | 66 +++++++++++++++++++++++++-------------------------- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 51ab835..60f7130 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipwhitelist", - "version": "0.5.8", + "version": "0.5.9", "description": "IP WhiteList microservice for cloud provider", "main": "server.js", "scripts": { diff --git a/src/config.js b/src/config.js index 558a5df..4c99117 100644 --- a/src/config.js +++ b/src/config.js @@ -55,8 +55,6 @@ const MOCK_USERS = [ companyName: 'БЕТА', email: 'beta@example.com', }, - email: 'user2@example.com', - }, ]; // ── backUrl — строит URL для редиректа после мутирующего действия ────────────── diff --git a/tests/api.js b/tests/api.js index 63abb38..3980c79 100644 --- a/tests/api.js +++ b/tests/api.js @@ -893,92 +893,92 @@ async function cleanup() { if (!tokenMulti) { log(false, 'O0: не найден multi-пользователь в MOCK_USERS'); } else { - log(!!tokenMulti, 'O0: выпущен токен multi (WZ01325, WZ02001)'); + log(!!tokenMulti, 'O0: выпущен токен multi (WZ88888, WZ77777)'); - // O1: GET /entries без ?client_id= → видит записи первой компании (WZ01325) + // O1: GET /entries без ?client_id= → видит записи первой компании (WZ88888) // Сначала добавим запись в обе компании для проверки let multiEntry1, multiEntry2; - // O1a: создаём запись в первой компании (WZ01325) через multi-токен + // O1a: создаём запись в первой компании (WZ88888) через multi-токен { const r = await req.post('/api/v1/entries').set(bearer(tokenMulti)) .send({ value: '4.4.4.1', comment: 'multi-company-1' }); - log(r.status === 201, 'O1a: multi POST → 201 (первая компания WZ01325)', `status=${r.status}`); + log(r.status === 201, 'O1a: multi POST → 201 (первая компания WZ88888)', `status=${r.status}`); multiEntry1 = json(r).entry?.id; } - // O1b: создаём запись во ВТОРОЙ компании (WZ02001) через ?client_id= + // O1b: создаём запись во ВТОРОЙ компании (WZ77777) через ?client_id= { - const r = await req.post('/api/v1/entries?client_id=WZ02001').set(bearer(tokenMulti)) + const r = await req.post('/api/v1/entries?client_id=WZ77777').set(bearer(tokenMulti)) .send({ value: '4.4.4.2', comment: 'multi-company-2' }); - log(r.status === 201, 'O1b: multi POST ?client_id=WZ02001 → 201', `status=${r.status}`); + log(r.status === 201, 'O1b: multi POST ?client_id=WZ77777 → 201', `status=${r.status}`); multiEntry2 = json(r).entry?.id; } - // O2: GET без ?client_id= → только записи WZ01325 (не видит WZ02001) + // O2: GET без ?client_id= → только записи WZ88888 (не видит WZ77777) { const rDefault = await req.get('/api/v1/entries').set(bearer(tokenMulti)); const entries = json(rDefault).entries || []; const hasE1 = entries.some(e => e.id === multiEntry1); const hasE2 = entries.some(e => e.id === multiEntry2); - log(hasE1, 'O2a: GET default содержит запись WZ01325'); - log(!hasE2, 'O2b: GET default НЕ содержит запись WZ02001'); + log(hasE1, 'O2a: GET default содержит запись WZ88888'); + log(!hasE2, 'O2b: GET default НЕ содержит запись WZ77777'); } - // O3: GET ?client_id=WZ02001 → только записи WZ02001 + // O3: GET ?client_id=WZ77777 → только записи WZ77777 { - const rSwitched = await req.get('/api/v1/entries?client_id=WZ02001').set(bearer(tokenMulti)); + const rSwitched = await req.get('/api/v1/entries?client_id=WZ77777').set(bearer(tokenMulti)); const entries = json(rSwitched).entries || []; const hasE1 = entries.some(e => e.id === multiEntry1); const hasE2 = entries.some(e => e.id === multiEntry2); - log(!hasE1, 'O3a: GET ?client_id=WZ02001 НЕ содержит запись WZ01325'); - log(hasE2, 'O3b: GET ?client_id=WZ02001 содержит запись WZ02001'); + log(!hasE1, 'O3a: GET ?client_id=WZ77777 НЕ содержит запись WZ88888'); + log(hasE2, 'O3b: GET ?client_id=WZ77777 содержит запись WZ77777'); } // O4: PATCH через ?client_id= работает изолированно { - const r = await req.patch('/api/v1/entries/' + multiEntry2 + '?client_id=WZ02001') + const r = await req.patch('/api/v1/entries/' + multiEntry2 + '?client_id=WZ77777') .set(bearer(tokenMulti)) - .send({ value: '4.4.4.3', comment: 'patched-in-WZ02001' }); - log(r.status === 200, 'O4: multi PATCH ?client_id=WZ02001 → 200', `status=${r.status}`); + .send({ value: '4.4.4.3', comment: 'patched-in-WZ77777' }); + log(r.status === 200, 'O4: multi PATCH ?client_id=WZ77777 → 200', `status=${r.status}`); } // O5: DELETE через ?client_id= { - const r = await req.delete('/api/v1/entries/' + multiEntry2 + '?client_id=WZ02001') + const r = await req.delete('/api/v1/entries/' + multiEntry2 + '?client_id=WZ77777') .set(bearer(tokenMulti)); - log([200, 204].includes(r.status), 'O5: multi DELETE ?client_id=WZ02001 → 200/204', `status=${r.status}`); + log([200, 204].includes(r.status), 'O5: multi DELETE ?client_id=WZ77777 → 200/204', `status=${r.status}`); } - // O6: экспорт с ?client_id=WZ02001 не содержит запись WZ01325 + // O6: экспорт с ?client_id=WZ77777 не содержит запись WZ88888 { - // Создаём запись в WZ02001 для проверки экспорта - const cr = await req.post('/api/v1/entries?client_id=WZ02001').set(bearer(tokenMulti)) + // Создаём запись в WZ77777 для проверки экспорта + const cr = await req.post('/api/v1/entries?client_id=WZ77777').set(bearer(tokenMulti)) .send({ value: '4.4.5.1', comment: 'export-multi' }); const exportEntryId = json(cr).entry?.id; - const rWZ02 = await req.get('/api/v1/entries/export?client_id=WZ02001').set(bearer(tokenMulti)); - log(rWZ02.status === 200, 'O6a: export ?client_id=WZ02001 → 200', `status=${rWZ02.status}`); - log(rWZ02.text.includes('4.4.5.1'), 'O6b: export содержит CIDR WZ02001'); - log(!rWZ02.text.includes('4.4.4.1'), 'O6c: export НЕ содержит CIDR WZ01325'); + const rWZ02 = await req.get('/api/v1/entries/export?client_id=WZ77777').set(bearer(tokenMulti)); + log(rWZ02.status === 200, 'O6a: export ?client_id=WZ77777 → 200', `status=${rWZ02.status}`); + log(rWZ02.text.includes('4.4.5.1'), 'O6b: export содержит CIDR WZ77777'); + log(!rWZ02.text.includes('4.4.4.1'), 'O6c: export НЕ содержит CIDR WZ88888'); - // O6d: экспорт без ?client_id= → только WZ01325 + // O6d: экспорт без ?client_id= → только WZ88888 const rDefault = await req.get('/api/v1/entries/export').set(bearer(tokenMulti)); - log(rDefault.text.includes('4.4.4.1'), 'O6d: export default содержит WZ01325'); - log(!rDefault.text.includes('4.4.5.1'), 'O6e: export default НЕ содержит WZ02001'); + log(rDefault.text.includes('4.4.4.1'), 'O6d: export default содержит WZ88888'); + log(!rDefault.text.includes('4.4.5.1'), 'O6e: export default НЕ содержит WZ77777'); // Чистка if (exportEntryId) { - await req.delete('/api/v1/entries/' + exportEntryId + '?client_id=WZ02001').set(bearer(tokenMulti)); + await req.delete('/api/v1/entries/' + exportEntryId + '?client_id=WZ77777').set(bearer(tokenMulti)); } } - // O7: несуществующий ?client_id= → игнорируется, фоллбек на WZ01325 (безопасность) + // O7: несуществующий ?client_id= → игнорируется, фоллбек на WZ88888 (безопасность) { const r = await req.get('/api/v1/entries?client_id=NONEXISTENT').set(bearer(tokenMulti)); log(r.status === 200, 'O7: GET ?client_id=NONEXISTENT → 200 (игнор, фоллбек)', `status=${r.status}`); - // NONEXISTENT не в allClientIds → фоллбек на WZ01325 → записи ЕСТЬ - log(json(r).entries?.length > 0, 'O7b: фоллбек на WZ01325 — записи есть'); + // NONEXISTENT не в allClientIds → фоллбек на WZ88888 → записи ЕСТЬ + log(json(r).entries?.length > 0, 'O7b: фоллбек на WZ88888 — записи есть'); } // O8: admin передаёт ?client_id= → использует свою компанию (игнор)