-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgm.test.ts
86 lines (76 loc) · 2.17 KB
/
gm.test.ts
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import { ajax } from "@App/gm/ajax";
import gmUt from "@App/utils/gm-unit-test";
import { Axios } from "axios";
import nock from 'nock';
console.log(gmUt);
const NETWORK_ERROR = new Error('Some connection error');
(<any>NETWORK_ERROR).code = 'ECONNRESET';
function setupResponses(client: Axios, responses: Array<any>) {
const configureResponse = () => {
const response = responses.shift();
if (response) {
response();
}
};
client.interceptors.response.use(
(result) => {
configureResponse();
return result;
},
(error) => {
configureResponse();
return Promise.reject(error);
}
);
configureResponse();
}
describe("utils", () => {
it("ajax", async () => {
let resp = await ajax("https://www.baidu.com");
console.log(resp);
expect(resp.data).toMatch(/html/)
resp = await ajax.get("https://www.baidu.com", { responseType: 'arraybuffer' });
console.log(resp);
expect(resp.data).toBeInstanceOf(Buffer);
resp = await ajax.post("https://www.baidu.com", { "ok": 1 });
console.log(resp);
resp = await ajax.post("https://www.baidu.com", "ok=1");
console.log(resp);
});
it("instance", async () => {
let instance = ajax.create({
baseURL: "https://bbs.tampermonkey.net.cn/"
});
let resp = await instance.get("forum.php?mod=forumdisplay&fid=2");
console.log(resp);
});
it("validateStatus", async () => {
let instance = ajax.create({
baseURL: "https://bbs.tampermonkey.net.cn/",
validateStatus: (status: number) => {
return status === 404;
}
});
try {
await instance.get("forum.php?mod=forumdisplay&fid=2");
} catch (e: any) {
console.log(e.config, e.response, e.message);
}
let resp = await instance.get("123131");
console.log(resp);
});
it('retry', (done) => {
const client = ajax.create();
setupResponses(client, [
() => nock('http://example.com').get('/test').replyWithError(NETWORK_ERROR),
() => nock('http://example.com').get('/test').reply(200, 'It worked!')
]);
const retryCondition = (error: any) => {
expect(error).toBe(NETWORK_ERROR);
done();
return false;
};
ajax.ajaxRetry(client, { retries: 1, retryCondition });
client.get('http://example.com/test').catch(() => { });
});
});