支持领取链接长期有效
This commit is contained in:
@@ -36,7 +36,8 @@ export function createDefaultRuntimeConfig(projectRoot: string): RuntimeConfig {
|
||||
|
||||
orders: {
|
||||
claimBaseUrl: 'http://127.0.0.1:5173/#/claim',
|
||||
tokenTtlHours: 24,
|
||||
// 0 表示长期有效;后台手动关闭任务后领取链接仍会立即失效。
|
||||
tokenTtlHours: 0,
|
||||
},
|
||||
|
||||
admin: {
|
||||
|
||||
@@ -42,6 +42,14 @@ test('applyEnvOverrides derives claim base url from app base url when explicit c
|
||||
assert.equal(config.orders.claimBaseUrl, 'https://example.test/#/claim')
|
||||
})
|
||||
|
||||
test('CLAIM_TOKEN_TTL_HOURS=0 表示领取链接长期有效', () => {
|
||||
const config = applyEnvOverrides(createRuntimeConfig(), {
|
||||
CLAIM_TOKEN_TTL_HOURS: '0',
|
||||
})
|
||||
|
||||
assert.equal(config.orders.tokenTtlHours, 0)
|
||||
})
|
||||
|
||||
test('applyEnvOverrides prefers explicit claim base url over app base url', () => {
|
||||
const config = applyEnvOverrides(createRuntimeConfig(), {
|
||||
APP_BASE_URL: 'https://example.test',
|
||||
|
||||
@@ -88,7 +88,7 @@ test('validateRuntimeConfig catches invalid numeric and url values', () => {
|
||||
},
|
||||
orders: {
|
||||
claimBaseUrl: 'not-a-url',
|
||||
tokenTtlHours: 0,
|
||||
tokenTtlHours: -1,
|
||||
},
|
||||
}),
|
||||
{
|
||||
@@ -102,6 +102,19 @@ test('validateRuntimeConfig catches invalid numeric and url values', () => {
|
||||
)
|
||||
})
|
||||
|
||||
test('validateRuntimeConfig accepts zero claim token TTL for permanent links', () => {
|
||||
const issues = validateRuntimeConfig(
|
||||
createRuntimeConfig({
|
||||
orders: {
|
||||
tokenTtlHours: 0,
|
||||
},
|
||||
}),
|
||||
{ env: { NODE_ENV: 'development' } },
|
||||
)
|
||||
|
||||
assert.deepEqual(issues, [])
|
||||
})
|
||||
|
||||
test('assertRuntimeConfigValid throws a readable validation error', () => {
|
||||
assert.throws(
|
||||
() => {
|
||||
|
||||
@@ -49,7 +49,7 @@ export function validateRuntimeConfig(
|
||||
min: 1,
|
||||
max: 100,
|
||||
})
|
||||
requireInteger(issues, 'orders.tokenTtlHours', config.orders?.tokenTtlHours, { min: 1 })
|
||||
requireInteger(issues, 'orders.tokenTtlHours', config.orders?.tokenTtlHours, { min: 0 })
|
||||
requireInteger(issues, 'admin.sessionTtlHours', config.admin?.sessionTtlHours, { min: 1 })
|
||||
requireInteger(
|
||||
issues,
|
||||
|
||||
Reference in New Issue
Block a user