Files
claude-code/src/services/weixin/__tests__/accounts.test.ts
2026-04-19 14:34:33 +08:00

55 lines
1.5 KiB
TypeScript

import { afterEach, describe, expect, test } from 'bun:test'
import { mkdtempSync, rmSync, statSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
const testDir = mkdtempSync(join(tmpdir(), 'weixin-test-accounts-'))
process.env.WEIXIN_STATE_DIR = testDir
import { clearAccount, loadAccount, saveAccount } from '../accounts.js'
afterEach(() => {
rmSync(testDir, { recursive: true, force: true })
})
describe('account storage', () => {
test('loadAccount returns null when no account exists', () => {
expect(loadAccount()).toBeNull()
})
test('saveAccount and loadAccount round-trip', () => {
const data = {
token: 'test-token',
baseUrl: 'https://example.com',
userId: 'user1',
savedAt: '2025-01-01T00:00:00.000Z',
}
saveAccount(data)
expect(loadAccount()).toEqual(data)
})
test('saveAccount sets file permissions to 0600', () => {
saveAccount({
token: 'test',
baseUrl: 'https://example.com',
savedAt: new Date().toISOString(),
})
const stats = statSync(join(testDir, 'account.json'))
if (process.platform === 'win32') {
expect(stats.isFile()).toBe(true)
return
}
expect(stats.mode & 0o777).toBe(0o600)
})
test('clearAccount removes the file', () => {
saveAccount({
token: 'test',
baseUrl: 'https://example.com',
savedAt: new Date().toISOString(),
})
clearAccount()
expect(loadAccount()).toBeNull()
})
})