Files
memind/image-make-admin-config.test.mjs
john 4b15610aa8
Memind CI / Test, build, and release guards (pull_request) Successful in 2m47s
feat(image): complete reviewed generation delivery
2026-07-20 20:04:53 +08:00

157 lines
5.3 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
IMAGE_MAKE_DEFAULT_CONFIG,
createImageMakeAdminConfigService,
normalizeImageMakeAdminConfig,
} from './image-make-admin-config.mjs';
function createPool(initial = null) {
let row = initial;
return {
async query(sql, params = []) {
const compact = String(sql).replace(/\s+/g, ' ').trim();
if (compact.startsWith('CREATE TABLE')) return [[]];
if (compact.startsWith('SELECT') && compact.includes('FROM h5_image_make_admin_config')) {
return [[row].filter(Boolean)];
}
if (compact.startsWith('INSERT INTO h5_image_make_admin_config')) {
row = {
config_json: params[1],
secrets_ciphertext: params[2],
secrets_iv: params[3],
secrets_tag: params[4],
updated_by: params[5],
updated_at: params[6],
};
return [[]];
}
return [[]];
},
};
}
const dashScopeLlmProviderService = {
async resolveDashScopeCredentials() {
return {
apiKey: 'sk-test-key-1234567890',
keyId: 'vision-key-1',
keyName: 'Qwen DashScope',
source: 'vision',
apiKeyMasked: 'sk-test********7890',
};
},
};
test('normalizeImageMakeAdminConfig keeps default provider aligned with enabled providers', () => {
const config = normalizeImageMakeAdminConfig({
defaultProvider: 'aliyun_bailian',
providers: {
aliyun_bailian: { enabled: false },
mock: { enabled: true },
},
});
assert.equal(config.defaultProvider, 'mock');
});
test('image make admin config reads DashScope key from unified model center', async () => {
const service = createImageMakeAdminConfigService(createPool(), {
env: { IMAGE_MAKE_TOKEN: 'runtime-token' },
llmProviderService: dashScopeLlmProviderService,
});
const saved = await service.updateAdminConfig({
defaultProvider: 'aliyun_bailian',
providers: {
mock: { enabled: false },
aliyun_bailian: {
enabled: true,
model: 'qwen-image-plus',
apiBase: 'https://dashscope.aliyuncs.com/api/v1',
},
},
}, { updatedBy: 'admin-1' });
assert.equal(saved.ok, true);
assert.equal(saved.config.providers.aliyun_bailian.apiKeyConfigured, true);
assert.match(saved.config.providers.aliyun_bailian.apiKeyMasked, /\*/);
assert.equal(saved.config.providers.aliyun_bailian.dashScopeSource, 'vision');
const runtime = await service.getRuntimeConfig();
assert.equal(runtime.ok, true);
assert.equal(runtime.defaultProvider, 'aliyun_bailian');
assert.equal(runtime.providers.aliyun_bailian.apiKey, 'sk-test-key-1234567890');
});
test('image make admin config rejects bailian when model center has no DashScope key', async () => {
const service = createImageMakeAdminConfigService(createPool(), {
env: { IMAGE_MAKE_TOKEN: 'runtime-token' },
llmProviderService: { async resolveDashScopeCredentials() { return null; } },
});
const result = await service.updateAdminConfig({
defaultProvider: 'aliyun_bailian',
providers: {
mock: { enabled: false },
aliyun_bailian: {
enabled: true,
model: 'qwen-image-plus',
apiBase: 'https://dashscope.aliyuncs.com/api/v1',
},
},
});
assert.equal(result.ok, false);
assert.match(result.message, /统一模型中心/);
});
test('image make admin config rejects invalid comfyui runtime', async () => {
const service = createImageMakeAdminConfigService(createPool(), {
env: { IMAGE_MAKE_TOKEN: 'runtime-token' },
llmProviderService: dashScopeLlmProviderService,
});
const result = await service.updateAdminConfig({
defaultProvider: 'comfyui',
providers: {
mock: { enabled: false },
comfyui: { enabled: true, apiBase: 'http://127.0.0.1:8188', checkpoint: '' },
},
});
assert.equal(result.ok, false);
assert.match(result.message, /Checkpoint/);
});
test('image make runtime request authorization uses IMAGE_MAKE_TOKEN', () => {
const service = createImageMakeAdminConfigService(createPool(), {
env: { IMAGE_MAKE_TOKEN: 'runtime-token' },
});
assert.equal(service.authorizeRuntimeRequest('runtime-token'), true);
assert.equal(service.authorizeRuntimeRequest('wrong'), false);
});
test('image make admin config falls back to legacy stored DashScope key', async () => {
const pool = createPool();
const service = createImageMakeAdminConfigService(pool, {
env: { IMAGE_MAKE_TOKEN: 'runtime-token' },
llmProviderService: { async resolveDashScopeCredentials() { return null; } },
});
await service.updateAdminConfig({
defaultProvider: 'aliyun_bailian',
providers: {
mock: { enabled: false },
aliyun_bailian: {
enabled: true,
model: 'qwen-image-plus',
apiBase: 'https://dashscope.aliyuncs.com/api/v1',
apiKey: 'sk-legacy-key-1234567890',
},
},
}, { updatedBy: 'admin-1' });
const runtime = await service.getRuntimeConfig();
assert.equal(runtime.ok, true);
assert.equal(runtime.providers.aliyun_bailian.apiKey, 'sk-legacy-key-1234567890');
});
test('image make default config starts with mock only', () => {
const config = normalizeImageMakeAdminConfig({});
assert.equal(config.defaultProvider, IMAGE_MAKE_DEFAULT_CONFIG.defaultProvider);
assert.equal(config.providers.mock.enabled, true);
assert.equal(config.providers.aliyun_bailian.enabled, false);
});