index.js
1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { isMockEnabled } from '../utils/config'
import { mockHandlers } from './modules'
import { createMockRequestContext } from './shared/request'
import { buildMockFallbackPayload, buildMockSuccess } from './shared/response'
import { findMockHandler } from './shared/router'
const MOCK_DELAY_MS = 160
const mockDelay = (delay = MOCK_DELAY_MS) =>
new Promise((resolve) => {
setTimeout(resolve, delay)
})
const createMockBody = (context) => {
const matchedHandler = findMockHandler(mockHandlers, context)
if (matchedHandler) {
return matchedHandler.handle(context)
}
return buildMockSuccess(buildMockFallbackPayload(context))
}
export const shouldUseMock = () => isMockEnabled()
export const createAxiosMockResponse = async (options) => {
const context = createMockRequestContext(options)
await mockDelay()
return {
data: createMockBody(context),
status: 200,
statusText: 'OK',
headers: {},
config: options?.config || {},
}
}
export const createTaroMockResponse = async (options) => {
const context = createMockRequestContext(options)
await mockDelay()
const body = createMockBody(context)
const mockCookie = `mock_sessionid=mock-${Date.now()}; Path=/; HttpOnly`
return {
data: body,
statusCode: 200,
header: {
'Set-Cookie': mockCookie,
},
cookies: [mockCookie],
}
}