feat(M08-D): 补多小程序与租户配置
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { buildApp } from '../dist/app.js';
|
||||
import { signAccessToken } from '../dist/auth/jwt.js';
|
||||
|
||||
const secret = 'test-only-platform-management-secret-32';
|
||||
const token = signAccessToken({ sub: '21', sid: '5c4d3af8-c63c-4edb-bf95-b84127bb3f6e', tid: '7', aid: '9', rv: 1 }, secret, 900);
|
||||
const config = {
|
||||
brandName: '七号棋牌', logoUrl: '', themeColor: '#1677ff', servicePhone: '4000000000',
|
||||
franchisePhone: '', shareTitle: '七号棋牌', shareImageUrl: '', defaultStoreId: '11',
|
||||
extraConfig: { bookingMode: 'STANDARD' }, bindingStatus: 'ACTIVE', isDefault: true
|
||||
};
|
||||
let updateInput;
|
||||
let bindInput;
|
||||
const app = await buildApp({
|
||||
platformManagement: {
|
||||
jwtSecret: secret,
|
||||
authRepository: { async validateSession() { return { id: '5c4d3af8-c63c-4edb-bf95-b84127bb3f6e', tenantId: '7', platformAppId: '9', expiresAt: new Date(Date.now() + 60000), user: { id: '21', tenantId: '7', userType: 'STAFF', status: 'ACTIVE', roleVersion: 1, nickname: '', avatarUrl: '', phone: '' } }; } },
|
||||
accessControl: { async getAccessProfile() { return { roles: ['PLATFORM_ADMIN'], capabilities: ['platform.manage', 'tenant.manage'], storeIds: [] }; } },
|
||||
repository: {
|
||||
async listTenantApps(tenantId) { return [{ platformAppId: '9', appId: 'wx-test-app', tenantId }]; },
|
||||
async updateTenantConfig(_actor, appId, input) { updateInput = input; return { platformAppId: appId, updated: true }; },
|
||||
async bindApplication(_actor, input) { bindInput = input; return { platformAppId: '10', bound: true }; }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const listed = await app.inject({ method: 'GET', url: '/admin-api/platform-apps', headers: { authorization: `Bearer ${token}` } });
|
||||
assert.equal(listed.statusCode, 200);
|
||||
assert.equal(listed.json().data[0].appId, 'wx-test-app');
|
||||
const updated = await app.inject({ method: 'PUT', url: '/admin-api/platform-apps/9/config', headers: { authorization: `Bearer ${token}` }, payload: config });
|
||||
assert.equal(updated.statusCode, 200);
|
||||
assert.equal(updateInput.defaultStoreId, '11');
|
||||
const bound = await app.inject({ method: 'POST', url: '/admin-api/platform-apps/bind', headers: { authorization: `Bearer ${token}` }, payload: { appId: 'wx-new-app', appName: '新小程序', appStatus: 'ACTIVE', config } });
|
||||
assert.equal(bound.statusCode, 201);
|
||||
assert.equal(bindInput.appId, 'wx-new-app');
|
||||
assert.equal('appSecret' in bindInput, false);
|
||||
await app.close();
|
||||
console.log('PASS: M08-D platform application management enforces scoped configuration without secrets.');
|
||||
Reference in New Issue
Block a user