GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。 NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは 別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
33 lines
1.6 KiB
JavaScript
33 lines
1.6 KiB
JavaScript
const { test } = require('node:test');
|
|
const assert = require('node:assert');
|
|
const { parseEnvString, extractPortalMeta } = require('../src/portalMeta');
|
|
|
|
test('parseEnvString parses KEY=VALUE lines and skips comments/blank lines', () => {
|
|
const result = parseEnvString('PORT=3000\n# comment\n\nNAME="quoted value"\n');
|
|
assert.deepStrictEqual(result, { PORT: '3000', NAME: 'quoted value' });
|
|
});
|
|
|
|
test('parseEnvString returns {} for null or empty input', () => {
|
|
assert.deepStrictEqual(parseEnvString(null), {});
|
|
assert.deepStrictEqual(parseEnvString(''), {});
|
|
});
|
|
|
|
test('extractPortalMeta returns null when PORTAL_APP_TYPE is missing or invalid', () => {
|
|
assert.strictEqual(extractPortalMeta('PORT=3000', 'fallback'), null);
|
|
assert.strictEqual(extractPortalMeta('PORTAL_APP_TYPE=invalid', 'fallback'), null);
|
|
assert.strictEqual(extractPortalMeta(null, 'fallback'), null);
|
|
});
|
|
|
|
test('extractPortalMeta parses a web-type app, falling back to label when PORTAL_APP_LABEL is absent', () => {
|
|
const meta = extractPortalMeta('PORTAL_APP_TYPE=web\nPORTAL_APP_URL=https://x.apps.next-hd.net', 'x');
|
|
assert.deepStrictEqual(meta, { appType: 'web', label: 'x', url: 'https://x.apps.next-hd.net', triggerPath: null });
|
|
});
|
|
|
|
test('extractPortalMeta parses a batch-type app with PORTAL_TRIGGER_PATH', () => {
|
|
const meta = extractPortalMeta(
|
|
'PORTAL_APP_TYPE=batch\nPORTAL_APP_LABEL=同期バッチ\nPORTAL_APP_URL=http://sample:3000\nPORTAL_TRIGGER_PATH=/trigger',
|
|
'fallback'
|
|
);
|
|
assert.deepStrictEqual(meta, { appType: 'batch', label: '同期バッチ', url: 'http://sample:3000', triggerPath: '/trigger' });
|
|
});
|