-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcors.test.ts
57 lines (52 loc) · 1.82 KB
/
cors.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
import { CORS } from './cors';
import { Message } from '../interfaces';
import { caseInsensitiveObject } from '../utils';
import { of } from 'rxjs';
describe('CORS unit tests', () => {
test('smoke test', (done) => {
const cors = new CORS(null);
const message: Message = {
request: { path: '', method: 'GET', headers: caseInsensitiveObject({}) },
response: { headers: caseInsensitiveObject({}) }
};
cors.prehandle(of(message)).subscribe(({ response }) => {
expect(response.headers['Access-Control-Allow-Origin']).toEqual('*');
done();
});
});
test('test preflightContinue', (done) => {
const cors = new CORS({ origin: 'o', preflightContinue: false });
const message: Message = {
request: {
path: '',
method: 'OPTIONS',
headers: caseInsensitiveObject({})
},
response: { headers: caseInsensitiveObject({}) }
};
cors.prehandle(of(message)).subscribe({
next: () => {},
error: ({ exception }) => {
expect(exception.headers['Access-Control-Allow-Origin']).toEqual('o');
expect(exception.headers['Content-Length']).toEqual('0');
expect(exception.headers['Vary']).toEqual(
'Origin, Access-Control-Request-Headers'
);
expect(exception.statusCode).toEqual(204);
done();
}
});
});
test('test origin', (done) => {
const cors = new CORS({ origin: 'o', preflightContinue: true });
const message: Message = {
request: { path: '', method: 'GET', headers: caseInsensitiveObject({}) },
response: { headers: caseInsensitiveObject({}) }
};
cors.prehandle(of(message)).subscribe(({ response }) => {
expect(response.headers['Access-Control-Allow-Origin']).toEqual('o');
expect(response.headers['Vary']).toEqual('Origin');
done();
});
});
});