21 lines
986 B
JavaScript
21 lines
986 B
JavaScript
// Test-only persisted WeChat sessions. Never import from production code.
|
|
'use strict';
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const crypto = require('node:crypto');
|
|
module.exports = function seedWechat(root, count = 1) {
|
|
const file = path.join(root, 'identities.json');
|
|
if (fs.existsSync(file)) throw Error('Wechat fixture requires an empty test store');
|
|
const db = { users: [], sessions: {}, states: {} }, entries = [];
|
|
for (let i = 0; i < count; i++) {
|
|
const user = { id: 'fixture-wechat-' + i, kind: 'wechat', identity: 'fixture-' + i, reports: [] };
|
|
const token = crypto.randomBytes(32).toString('hex');
|
|
db.users.push(user);
|
|
db.sessions[crypto.createHash('sha256').update(token).digest('hex')] = { user: user.id, expires: Date.now() + 86400000 };
|
|
entries.push({ user, token, cookie: 'juzi_session=' + token });
|
|
}
|
|
fs.mkdirSync(root, { recursive: true });
|
|
fs.writeFileSync(file, JSON.stringify(db));
|
|
return entries;
|
|
};
|