release: v1.2.7 — 登录人机验证(滑块 / Turnstile / Cap)
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s
Publish Docker image / build (linux/amd64, ubuntu-latest, amd64) (push) Canceled after 0s
Publish Docker image / build (linux/arm64, ubuntu-24.04-arm, arm64) (push) Canceled after 0s
Publish Docker image / merge (push) Canceled after 0s
ci / ci (22, ubuntu-latest) (push) Canceled after 0s
GitHub Release / release (push) Canceled after 0s
This commit is contained in:
1 parent
8408d01197
commit
430c4de0f4
42 files changed
+1103
-72
No files matched your search
@@ -0,0 +1,71 @@
|
||||
import { describe, expect, it, vi, beforeEach, afterEach } from 'vitest'
|
||||
import { verifyTurnstileToken } from './verify-turnstile'
|
||||
import { verifyCapToken } from './verify-cap'
|
||||
|
||||
describe('verify-turnstile', () => {
|
||||
beforeEach(() => {
|
||||
vi.stubGlobal('fetch', vi.fn())
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals()
|
||||
})
|
||||
|
||||
it('returns true when siteverify succeeds', async () => {
|
||||
vi.mocked(fetch).mockResolvedValue({
|
||||
json: async () => ({ success: true })
|
||||
} as Response)
|
||||
|
||||
await expect(verifyTurnstileToken('secret', 'token', '1.2.3.4')).resolves.toBe(true)
|
||||
})
|
||||
|
||||
it('returns false when siteverify fails', async () => {
|
||||
vi.mocked(fetch).mockResolvedValue({
|
||||
json: async () => ({ success: false })
|
||||
} as Response)
|
||||
|
||||
await expect(verifyTurnstileToken('secret', 'token')).resolves.toBe(false)
|
||||
})
|
||||
|
||||
it('returns false when token is missing', async () => {
|
||||
await expect(verifyTurnstileToken('secret', '')).resolves.toBe(false)
|
||||
expect(fetch).not.toHaveBeenCalled()
|
||||
})
|
||||
})
|
||||
|
||||
describe('verify-cap', () => {
|
||||
beforeEach(() => {
|
||||
vi.stubGlobal('fetch', vi.fn())
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals()
|
||||
})
|
||||
|
||||
it('posts to endpoint siteverify and returns true on success', async () => {
|
||||
vi.mocked(fetch).mockResolvedValue({
|
||||
json: async () => ({ success: true })
|
||||
} as Response)
|
||||
|
||||
const ok = await verifyCapToken(
|
||||
'https://cap.example.com/site-key/',
|
||||
'secret',
|
||||
'token'
|
||||
)
|
||||
expect(ok).toBe(true)
|
||||
expect(fetch).toHaveBeenCalledWith(
|
||||
'https://cap.example.com/site-key/siteverify',
|
||||
expect.objectContaining({ method: 'POST' })
|
||||
)
|
||||
})
|
||||
|
||||
it('returns false on network error', async () => {
|
||||
vi.mocked(fetch).mockRejectedValue(new Error('network'))
|
||||
|
||||
await expect(verifyCapToken(
|
||||
'https://cap.example.com/site-key/',
|
||||
'secret',
|
||||
'token'
|
||||
)).resolves.toBe(false)
|
||||
})
|
||||
})
|
||||
Reference in new issue
Block a user