Files
venue-miniapp/miniprogram/scripts/verify-comprehensive-auth-state.mjs
2026-06-10 11:46:39 +08:00

42 lines
1.7 KiB
JavaScript

import { readFileSync } from 'node:fs'
import { fileURLToPath } from 'node:url'
import { dirname, resolve } from 'node:path'
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..')
const srcRoot = resolve(root, 'src')
const failures = []
const pages = [
'pages/comprehensive/bookings/index.vue',
'pages/comprehensive/profile/index.vue'
]
const expectIncludes = (content, expected, label) => {
if (!content.includes(expected)) failures.push(`${label} is missing: ${expected}`)
}
const expectExcludes = (content, unexpected, label) => {
if (content.includes(unexpected)) failures.push(`${label} should not contain: ${unexpected}`)
}
for (const page of pages) {
const content = readFileSync(resolve(srcRoot, page), 'utf8')
expectIncludes(content, 'v-if="!session.isLoggedIn"', `${page} unauth condition`)
expectIncludes(content, '<UnauthLoginPanel', `${page} unauth component`)
expectIncludes(content, '@login="login"', `${page} login event`)
expectIncludes(content, "import UnauthLoginPanel from '@/components/UnauthLoginPanel.vue'", `${page} UnauthLoginPanel import`)
expectExcludes(content, '星河综合运动中心', `${page} unauth copy`)
expectExcludes(content, '登录后查看', `${page} unauth copy`)
expectExcludes(content, 'class="brand"', `${page} brand style`)
expectExcludes(content, 'class="desc"', `${page} desc style`)
expectExcludes(content, 'primary-text="微信一键登录"', `${page} direct StatePanel login`)
}
if (failures.length) {
console.error(`Comprehensive auth state verification failed with ${failures.length} issue(s):`)
for (const failure of failures) console.error(`- ${failure}`)
process.exit(1)
}
console.log('Comprehensive auth state verification passed.')