@putdotio/api-client
Version:
JavaScript SDK for interacting with the put.io API.
85 lines (77 loc) • 1.77 kB
text/typescript
import { AxiosError, AxiosRequestConfig } from 'axios'
import {
IPutioAPIClientError,
IPutioAPIClientErrorData,
IPutioAPIClientResponse,
} from '../client/types'
const mockRequestConfig: AxiosRequestConfig = {}
export const mockPutioAPIClientResponse: IPutioAPIClientResponse<{
foo: string
}> = {
config: mockRequestConfig,
data: { foo: 'bar', status: 'OK' },
headers: {
'x-trace-id': 'MOCK_TRACE_ID',
},
status: 200,
statusText: 'ok',
}
export const mockAxiosError: AxiosError = {
config: mockRequestConfig,
isAxiosError: true,
name: 'AXIOS_ERROR',
message: 'AXIOS_ERROR_MESSAGE',
toJSON() {
return {
name: this.name,
message: this.message,
}
},
}
export const mockPutioAPIClientError: IPutioAPIClientError = {
...mockAxiosError,
data: {
error_type: 'MOCK_ERROR',
error_message: 'MOCK_MESSAGE',
status_code: 0,
extra: { foo: 'bar' },
},
toJSON() {
return this.data
},
}
export const createMockResponse = <T>(
data: T,
status: number = 200,
): IPutioAPIClientResponse<T> => ({
config: mockRequestConfig,
data: { ...data, status: 'OK' },
status,
headers: {},
statusText: 'ok',
})
export const createMockErrorResponse = (
data: IPutioAPIClientErrorData,
): IPutioAPIClientError => ({
...mockAxiosError,
data,
toJSON() {
return this.data
},
})
export function createMockXMLHttpRequest(
readyState: number,
status: number,
responseText: string,
) {
const xhr = new XMLHttpRequest()
return new Proxy(xhr, {
get(target, prop) {
if (prop === 'readyState') return readyState
if (prop === 'status') return status
if (prop === 'responseText') return responseText
// @ts-ignore
return target[prop]
},
})
}