-
-
Notifications
You must be signed in to change notification settings - Fork 140
/
grouping-several-hooks-into-one.feature.ts
63 lines (48 loc) · 1.35 KB
/
grouping-several-hooks-into-one.feature.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
// 3p
import * as request from 'supertest';
// FoalTS
import { createApp, Get, HttpResponseOK, MergeHooks, ValidateCookie, ValidateHeader} from '@foal/core';
describe('Feature: Grouping several hooks into one.', () => {
it('Example: Creating a validation hook.', async () => {
/* ======================= DOCUMENTATION BEGIN ======================= */
// Before
// tslint:disable-next-line
class MyController {
@Get('/products')
@ValidateHeader('Authorization')
@ValidateCookie('foo')
readProducts() {
return new HttpResponseOK();
}
}
// After
function ValidateAll() {
return MergeHooks(
ValidateHeader('Authorization'),
ValidateCookie('foo')
);
}
class MyController2 {
@Get('/products')
@ValidateAll()
readProducts() {
return new HttpResponseOK();
}
}
/* ======================= DOCUMENTATION END ========================= */
const app = await createApp(MyController2);
await request(app)
.get('/products')
.set('Authorization', 'hello')
.expect(400);
await request(app)
.get('/products')
.set('Cookie', ['foo=bar'])
.expect(400);
await request(app)
.get('/products')
.set('Authorization', 'hello')
.set('Cookie', ['foo=bar'])
.expect(200);
});
});