初始化提交:go比特版本精简
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const express = require('express');
|
||||
|
||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'batch-account-delete-'));
|
||||
const Config = require('../src/core/config');
|
||||
Config.DATA_DIR = tempDir;
|
||||
Config.DB_PATH = path.join(tempDir, 'accounts.db');
|
||||
const database = require('../src/core/database');
|
||||
const bitApi = require('../src/core/bit_api');
|
||||
const originalGetApi = bitApi.getApi;
|
||||
const originalDeleteBrowsersBatch = bitApi.deleteBrowsersBatch;
|
||||
|
||||
(async () => {
|
||||
let server = null;
|
||||
try {
|
||||
database.initDB();
|
||||
database.upsertAccount({ email: 'first@example.com', browser_id: 'browser-1' });
|
||||
database.upsertAccount({ email: 'second@example.com', browser_id: 'browser-2' });
|
||||
database.upsertAccount({ email: 'without-browser@example.com' });
|
||||
|
||||
let deletedBrowserIds = [];
|
||||
bitApi.getApi = () => ({
|
||||
request: async () => ({ success: true, data: { remark: '' } }),
|
||||
});
|
||||
bitApi.deleteBrowsersBatch = async browserIds => {
|
||||
deletedBrowserIds = [...browserIds];
|
||||
return { successCount: browserIds.length, failCount: 0, results: [] };
|
||||
};
|
||||
|
||||
delete require.cache[require.resolve('../src/routes/accounts')];
|
||||
const accountsRouter = require('../src/routes/accounts');
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
app.use('/api/accounts', accountsRouter);
|
||||
await new Promise(resolve => {
|
||||
server = app.listen(0, '127.0.0.1', resolve);
|
||||
});
|
||||
|
||||
const address = server.address();
|
||||
const response = await fetch(`http://127.0.0.1:${address.port}/api/accounts`, {
|
||||
method: 'DELETE',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
emails: ['first@example.com', 'second@example.com', 'without-browser@example.com'],
|
||||
}),
|
||||
});
|
||||
const result = await response.json();
|
||||
|
||||
assert.strictEqual(response.ok, true);
|
||||
assert.strictEqual(result.count, 3, '应批量删除所选账号及其浏览器编号');
|
||||
assert.strictEqual(result.browsersFound, 2);
|
||||
assert.strictEqual(result.browsersDeleted, 2, '应返回实际删除的比特浏览器窗口数');
|
||||
assert.strictEqual(result.browserDeleteFailed, 0);
|
||||
assert.deepStrictEqual(deletedBrowserIds.sort(), ['browser-1', 'browser-2']);
|
||||
assert.strictEqual(database.getAccount('first@example.com'), null);
|
||||
assert.strictEqual(database.getAccount('second@example.com'), null);
|
||||
assert.strictEqual(database.getAccount('without-browser@example.com'), null);
|
||||
|
||||
console.log('batch_account_delete.test.js: PASS');
|
||||
} finally {
|
||||
if (server) await new Promise(resolve => server.close(resolve));
|
||||
bitApi.getApi = originalGetApi;
|
||||
bitApi.deleteBrowsersBatch = originalDeleteBrowsersBatch;
|
||||
try { database.getDb().close(); } catch (_) {}
|
||||
fs.rmSync(tempDir, { recursive: true, force: true });
|
||||
}
|
||||
})().catch(error => {
|
||||
console.error(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user