-
-
Notifications
You must be signed in to change notification settings - Fork 179
/
XMLHttpRequest.test.js
55 lines (43 loc) · 1.63 KB
/
XMLHttpRequest.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
import { describe, it, expect } from '../utilities/TestFunctions.js';
import { Window } from 'happy-dom';
import Express from 'express';
describe('XMLHttpRequest', () => {
it('Can perform a real asynchronous XMLHttpRequest request', (done) => {
const window = new Window();
const express = Express();
express.get('/get/json', (_req, res) => {
res.set('Content-Type', 'application/json');
res.send('{ "key1": "value1" }');
});
const server = express.listen(3000);
const request = new window.XMLHttpRequest();
request.open('GET', 'http://localhost:3000/get/json', true);
request.addEventListener('load', () => {
expect(request.getResponseHeader('content-type')).toBe('application/json; charset=utf-8');
expect(request.responseText).toBe('{ "key1": "value1" }');
expect(request.status).toBe(200);
expect(request.statusText).toBe('OK');
expect(request.responseURL).toBe('http://localhost:3000/get/json');
server.close();
done();
});
request.send();
});
it('Can perform a real synchronous XMLHttpRequest request to Github.com', () => {
const window = new Window();
const request = new window.XMLHttpRequest();
request.open(
'GET',
'https://raw.githubusercontent.com/capricorn86/happy-dom/master/.gitignore',
false
);
request.send();
expect(request.getResponseHeader('content-type')).toBe('text/plain; charset=utf-8');
expect(request.responseText.includes('node_modules')).toBe(true);
expect(request.status).toBe(200);
expect(request.statusText).toBe('OK');
expect(request.responseURL).toBe(
'https://raw.githubusercontent.com/capricorn86/happy-dom/master/.gitignore'
);
});
});