const assert = require('node:assert/strict'); const fs = require('fs'); const os = require('os'); const path = require('path'); const test = require('node:test'); const agheeraPushClient = require('../src/services/agheeraPushClient'); let originalApiKey; let originalPushLogPath; let originalPushLogs; test.before(() => { originalApiKey = process.env.AGHEERA_API_KEY; originalPushLogPath = process.env.AGHEERA_PUSH_LOG_PATH; originalPushLogs = process.env.AGHEERA_PUSH_LOGS; }); test.after(() => { process.env.AGHEERA_API_KEY = originalApiKey; process.env.AGHEERA_PUSH_LOG_PATH = originalPushLogPath; process.env.AGHEERA_PUSH_LOGS = originalPushLogs; agheeraPushClient.__resetHttpClientForTests(); }); test.afterEach(() => { agheeraPushClient.__resetHttpClientForTests(); }); test('pushPosition escribe log dedicado sin apiKey', async () => { const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'agheera-log-')); const logPath = path.join(tempDir, 'agheera_push.log'); process.env.AGHEERA_API_KEY = 'secret-api-key'; process.env.AGHEERA_PUSH_LOG_PATH = logPath; delete process.env.AGHEERA_PUSH_LOGS; agheeraPushClient.__setHttpClientForTests(async () => ({ ok: true, status: 200, text: async () => 'Messages received.' })); await agheeraPushClient.pushPosition({ latitude: '40.416775', longitude: '-3.703790', vehicleId: '6599LCN', licensePlate: '6599LCN', measurementTime: '2026-06-01T13:38:31Z', metadata: { source: 'test', trip_id: 306075 } }); const lines = fs.readFileSync(logPath, 'utf8').trim().split('\n'); assert.equal(lines.length, 1); const entry = JSON.parse(lines[0]); assert.equal(entry.source, 'test'); assert.equal(entry.trip_id, 306075); assert.equal(entry.vehicleId, '6599LCN'); assert.equal(entry.licensePlate, '6599LCN'); assert.equal(entry.latitude, 40.416775); assert.equal(entry.longitude, -3.70379); assert.equal(entry.measurementTime, '2026-06-01T13:38:31Z'); assert.equal(entry.success, true); assert.equal(entry.http_status, 200); assert.equal(entry.response_body, 'Messages received.'); assert.equal(entry.error, null); assert.equal(JSON.stringify(entry).includes('secret-api-key'), false); });