Files
RSSHub/test/utils/axios.js
2019-01-24 15:03:34 +08:00

58 lines
1.6 KiB
JavaScript

const axios = require('../../lib/utils/axios');
const MockAdapter = require('axios-mock-adapter');
const mock = new MockAdapter(axios);
const config = require('../../lib/config');
describe('axios', () => {
it('axios headers', async () => {
mock.onGet('/test').reply((axiosConfig) => {
expect(axiosConfig.headers['User-Agent']).toBe(config.ua);
expect(axiosConfig.headers['X-APP']).toBe('RSSHub');
return [
200,
{
code: 0,
},
];
});
const response = await axios.get('/test');
expect(response.status).toBe(200);
expect(response.data.code).toBe(0);
});
it('axios retry', async () => {
const requestRun = jest.fn();
let requestTime;
mock.onGet('/test').reply(() => {
requestRun();
// retryDelay
const now = new Date();
if (requestTime) {
expect(now - requestTime).toBeGreaterThanOrEqual(100);
expect(now - requestTime).toBeLessThan(120);
}
requestTime = new Date();
return [
404,
{
code: 1,
},
];
});
try {
await axios.get('/test');
} catch (error) {
expect(error.response.status).toBe(404);
expect(error.response.data.code).toBe(1);
}
// retries
expect(requestRun).toHaveBeenCalledTimes(config.requestRetry + 1);
});
});