| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 'use strict';
- const assert = require('assert/strict');
- const fs = require('fs');
- const os = require('os');
- const path = require('path');
- const {
- normalizeProductMode,
- resolveProductMode,
- setProductMode,
- } = require('../mcp/src/core/product-mode');
- const { buildStartupSummary } = require('../mcp/src/core/startup-summary');
- function main() {
- assert.equal(normalizeProductMode('个人版'), 'personal');
- assert.equal(normalizeProductMode('enterprise'), 'enterprise');
- const personal = resolveProductMode({ productMode: 'personal' }, { relayEnabled: true });
- assert.equal(personal.mode, 'personal');
- assert.equal(personal.collectionMode, 'local_polling');
- assert.equal(personal.multiDeviceManagement, false);
- const enterprise = resolveProductMode({ productMode: 'enterprise' }, { relayEnabled: false });
- assert.equal(enterprise.mode, 'enterprise');
- assert.equal(enterprise.relayReady, false);
- assert.equal(enterprise.enterpriseUpgrade.amount, 0);
- assert.equal(enterprise.enterpriseUpgrade.pricingStatus, 'placeholder');
- const startup = buildStartupSummary(
- { summary: { authConfigured: true, subscribed: true } },
- { data: {
- product: enterprise,
- account: { configured: true, online: true },
- listener: { running: true },
- config: { allowedSenderCount: 1 },
- } },
- );
- assert.equal(startup.ready, false);
- assert.equal(startup.checks.some(item => item.key === 'relay' && !item.ready), true);
- const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'qiwei-product-mode-'));
- const envPath = path.join(tempRoot, '.env.local');
- const previous = process.env.QIWEI_PRODUCT_MODE;
- try {
- const saved = setProductMode('personal', { envPath });
- assert.equal(saved.product.mode, 'personal');
- assert.match(fs.readFileSync(envPath, 'utf8'), /^QIWEI_PRODUCT_MODE=personal$/m);
- } finally {
- if (previous === undefined) delete process.env.QIWEI_PRODUCT_MODE;
- else process.env.QIWEI_PRODUCT_MODE = previous;
- fs.rmSync(tempRoot, { recursive: true, force: true });
- }
- process.stdout.write(`${JSON.stringify({ status: 'ok', checks: 12 }, null, 2)}\n`);
- }
- try { main(); }
- catch (error) {
- process.stderr.write(`${error.stack || error.message}\n`);
- process.exit(1);
- }
|