accountPairing.test.ts 1023 B

123456789101112131415161718192021222324
  1. import { describe, expect, it } from 'vitest'
  2. import { AccountLoginPairingStore } from '../../src/server/accountPairing.js'
  3. describe('8800 account login pairing', () => {
  4. it('issues a one-time expiring claim for a normal server account', () => {
  5. let now = 1_000
  6. const store = new AccountLoginPairingStore(() => now)
  7. const pairing = store.create('user-1')
  8. expect(store.status(pairing.id)).toEqual({ state: 'pending' })
  9. expect(store.claim(pairing.id, pairing.secret)).toBe('user-1')
  10. expect(store.status(pairing.id)).toEqual({ state: 'claimed' })
  11. expect(() => store.claim(pairing.id, pairing.secret)).toThrow(/已使用/)
  12. const expired = store.create('user-2')
  13. now = expired.expiresAt + 1
  14. expect(store.status(expired.id)).toEqual({ state: 'expired' })
  15. })
  16. it('rejects an invalid secret', () => {
  17. const store = new AccountLoginPairingStore()
  18. const pairing = store.create('user-1')
  19. expect(() => store.claim(pairing.id, 'wrong-secret')).toThrow(/密钥无效/)
  20. })
  21. })