-
Notifications
You must be signed in to change notification settings - Fork 1
/
jinframe.post.test.ts
89 lines (68 loc) · 2.25 KB
/
jinframe.post.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
87
88
89
import { JinEitherFrame } from '#frames/JinEitherFrame';
import { isPass } from 'my-only-either';
import nock from 'nock';
import { afterEach, describe, expect, it } from 'vitest';
class TestPostFrame extends JinEitherFrame {
@JinEitherFrame.param()
public readonly passing: string;
@JinEitherFrame.body({ replaceAt: 'test.hello.marvel.name' })
public readonly name: string;
@JinEitherFrame.header({ replaceAt: 'test.hello.marvel.skill' })
public readonly skill: string;
@JinEitherFrame.body({ replaceAt: 'test.hello.marvel.gender' })
public readonly gender: string;
constructor() {
super({ $$host: 'http://some.api.google.com/jinframe/:passing', $$method: 'POST' });
this.passing = 'pass';
this.name = 'ironman';
this.skill = 'beam';
this.gender = 'male';
}
}
class TestUrlencodedPostFrame extends JinEitherFrame {
@JinEitherFrame.param()
public readonly passing: string;
@JinEitherFrame.body()
public readonly username: string;
@JinEitherFrame.body()
public readonly password: string;
constructor() {
super({
$$host: 'http://some.api.google.com/jinframe/:passing',
$$contentType: 'application/x-www-form-urlencoded',
$$method: 'POST',
});
this.passing = 'pass';
this.username = 'ironman';
this.password = 'marvel';
}
}
describe('jinframe.test', () => {
afterEach(() => {
nock.cleanAll();
});
it('nock-post-with-jinframe', async () => {
nock('http://some.api.google.com').post('/jinframe/pass').reply(200, {
message: 'hello',
});
const frame = new TestPostFrame();
const resp = await frame.execute();
expect(isPass(resp)).toEqual(true);
});
it('nock-post-without-eiter-jinframe', async () => {
nock('http://some.api.google.com').post('/jinframe/pass').reply(200, {
message: 'hello',
});
const frame = new TestPostFrame();
const resp = await frame.execute();
expect(isPass(resp)).toEqual(true);
});
it('nock-post-urlencoded', async () => {
nock('http://some.api.google.com').post('/jinframe/pass', 'username=ironman&password=marvel').reply(200, {
message: 'hello',
});
const frame = new TestUrlencodedPostFrame();
const resp = await frame.execute();
expect(isPass(resp)).toEqual(true);
});
});