forked from ni/VireoSDK
/
httpCORS.Test.js
128 lines (105 loc) · 4.99 KB
/
httpCORS.Test.js
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
describe('Performing a CORS request', function () {
'use strict';
// Reference aliases
var vireoHelpers = window.vireoHelpers;
var vireoRunner = window.testHelpers.vireoRunner;
var fixtures = window.testHelpers.fixtures;
var httpBinHelpers = window.testHelpers.httpBinHelpers;
var httpParser = window.testHelpers.httpParser;
var vireo;
var httpCORSViaUrl = fixtures.convertToAbsoluteFromFixturesDir('http/Credentials.via');
beforeAll(function (done) {
fixtures.preloadAbsoluteUrls([
httpCORSViaUrl
], done);
});
beforeAll(function (done) {
httpBinHelpers.queryHttpBinStatus(done);
});
beforeAll(async function () {
vireo = await vireoHelpers.createInstance();
});
afterAll(function () {
vireo = undefined;
});
beforeEach(function () {
httpBinHelpers.makeTestPendingIfHttpBinOffline();
});
beforeEach(function (done) {
httpBinHelpers.forceHttpBinQuery('cookies/set?FastestLandAnimal=cheetah', done);
});
it('with open, set credentials to true, get, close and validates a 200 response', function (done) {
var runSlicesAsync = vireoRunner.rebootAndLoadVia(vireo, httpCORSViaUrl);
var viPathParser = vireoRunner.createVIPathParser(vireo, 'MyVI');
var viPathWriter = vireoRunner.createVIPathWriter(vireo, 'MyVI');
// Break cache for IE11 by adding random string
var url = httpBinHelpers.convertToAbsoluteUrl('get?rand=' + Math.random());
viPathWriter('url', url);
viPathWriter('withCredentials', 1);
runSlicesAsync(function (rawPrint, rawPrintError) {
expect(rawPrint).toBeEmptyString();
expect(rawPrintError).toBeEmptyString();
// handle
expect(viPathParser('handle')).toBeGreaterThan(0);
// header
var responseHeader = httpParser.parseResponseHeader(viPathParser('headers'));
expect(responseHeader.httpVersion).toBe('HTTP/1.1');
expect(responseHeader.statusCode).toBe(200);
expect(responseHeader.reasonPhrase).toBe('OK');
expect(responseHeader.headers).toBeNonEmptyObject();
// body
var httpBinBody = httpBinHelpers.parseBody(viPathParser('body'));
var requestUrl = httpParser.parseUrl(httpBinBody.url);
expect(httpBinBody.args).toBeNonEmptyObject();
expect(httpBinBody.headers).toBeNonEmptyObject();
var header1 = 'Cookie';
var header2 = 'cookie';
expect(httpBinBody.headers[header1]).toMatch(/cheetah/);
expect(httpBinBody.headersLowerCase[header2]).toMatch(/cheetah/);
expect(requestUrl.pathname).toBe('/get');
// status code
expect(viPathParser('statusCode')).toBe(200);
// error
expect(viPathParser('error.status')).toBeFalse();
expect(viPathParser('error.code')).toBe(0);
expect(viPathParser('error.source')).toBeEmptyString();
done();
});
});
it('with open, set credentials to false, get, close and validates a 200 response', function (done) {
var runSlicesAsync = vireoRunner.rebootAndLoadVia(vireo, httpCORSViaUrl);
var viPathParser = vireoRunner.createVIPathParser(vireo, 'MyVI');
var viPathWriter = vireoRunner.createVIPathWriter(vireo, 'MyVI');
// Break cache for IE11 by adding random string
var url = httpBinHelpers.convertToAbsoluteUrl('get?rand=' + Math.random());
viPathWriter('url', url);
viPathWriter('withCredentials', 0);
runSlicesAsync(function (rawPrint, rawPrintError) {
expect(rawPrint).toBeEmptyString();
expect(rawPrintError).toBeEmptyString();
// handle
expect(viPathParser('handle')).toBeGreaterThan(0);
// header
var responseHeader = httpParser.parseResponseHeader(viPathParser('headers'));
expect(responseHeader.httpVersion).toBe('HTTP/1.1');
expect(responseHeader.statusCode).toBe(200);
expect(responseHeader.reasonPhrase).toBe('OK');
expect(responseHeader.headers).toBeNonEmptyObject();
// body
var httpBinBody = httpBinHelpers.parseBody(viPathParser('body'));
var requestUrl = httpParser.parseUrl(httpBinBody.url);
expect(httpBinBody.args).toBeNonEmptyObject();
expect(httpBinBody.headers).toBeNonEmptyObject();
expect(httpBinBody.headers).not.toHaveMember('Cookie');
expect(httpBinBody.headersLowerCase).not.toHaveMember('cookie');
expect(requestUrl.pathname).toBe('/get');
// status code
expect(viPathParser('statusCode')).toBe(200);
// error
expect(viPathParser('error.status')).toBeFalse();
expect(viPathParser('error.code')).toBe(0);
expect(viPathParser('error.source')).toBeEmptyString();
done();
});
});
});