forked from tus/tus-node-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Test-BaseHandler.js
62 lines (50 loc) · 1.67 KB
/
Test-BaseHandler.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
'use strict';
const assert = require('assert');
const httpMocks = require('node-mocks-http');
const BaseHandler = require('../lib/handlers/BaseHandler');
const DataStore = require('../lib/stores/DataStore');
const http = require('http');
const ALLOWED_METHODS = 'POST, HEAD, PATCH, OPTIONS';
describe('BaseHandler', () => {
it('constructor must require a DataStore', (done) => {
assert.throws(() => {
let handler = new BaseHandler();
}, Error);
done();
});
let res = null;
let store = new DataStore({ path: '/test/output' });
let handler = new BaseHandler(store);
beforeEach((done) => {
const METHOD = 'GET';
res = httpMocks.createResponse({ method: METHOD });
done();
});
it('write() should end the response', (done) => {
handler.write(res, 200, {});
assert.equal(res.finished, true)
done();
});
it('write() should set a response code', (done) => {
handler.write(res, 201, {});
assert.equal(res.statusCode, 201)
done();
});
it('write() should set headers', (done) => {
let headers = {
'Access-Control-Allow-Methods': 'GET, OPTIONS',
};
handler.write(res, 200, headers);
for (let header of Object.keys(headers)) {
assert.equal(res.getHeader(header), headers[header]);
}
done();
});
it('write() should write the body', (done) => {
const body = 'Hello tus!'
handler.write(res, 200, {}, body);
let output = res._getData();
assert.equal(output.match(/Hello tus!$/).index, output.length - body.length)
done();
});
});