feat(image): complete reviewed generation delivery
Memind CI / Test, build, and release guards (pull_request) Successful in 2m47s
Memind CI / Test, build, and release guards (pull_request) Successful in 2m47s
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
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);
|
||||
});
|
||||
Reference in New Issue
Block a user