forked from restify/plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstatic.test.js
More file actions
130 lines (101 loc) · 3.32 KB
/
static.test.js
File metadata and controls
130 lines (101 loc) · 3.32 KB
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
129
130
'use strict';
// core requires
var fs = require('fs');
var path = require('path');
// external requires
var assert = require('chai').assert;
var mkdirp = require('mkdirp');
var restify = require('restify');
var restifyClients = require('restify-clients');
// local files
var helper = require('./lib/helper');
var plugins = require('../lib');
// local globals
var SERVER;
var CLIENT;
var PORT = 3000;
describe('static resource plugin', function () {
beforeEach(function (done) {
SERVER = restify.createServer({
dtrace: helper.dtrace,
log: helper.getLog('server')
});
SERVER.pre(plugins.serveStatic({
root: __dirname,
restifyServer: SERVER
}));
SERVER.listen(PORT, '127.0.0.1', function () {
PORT = SERVER.address().port;
CLIENT = restifyClients.createStringClient({
url: 'http://127.0.0.1:' + PORT,
dtrace: helper.dtrace,
retry: false
});
done();
});
});
afterEach(function (done) {
CLIENT.close();
SERVER.close(done);
});
it('should serve files', function (done) {
CLIENT.get('/static.test.js', function(err, req, res, data) {
assert.ifError(err);
assert.ok(data);
assert.isString(data);
assert.equal(res.headers['content-type'],
'application/javascript; charset=utf-8');
done();
});
});
it('should serve static files in nested folders', function (done) {
CLIENT.get('/files/data-csv.txt', function(err, req, res, data) {
assert.ifError(err);
assert.ok(data);
assert.isString(data);
assert.equal(res.headers['content-type'],
'text/plain; charset=UTF-8');
done();
});
});
it('should fire ResourceNotFound for file not found', function (done) {
var afterFired = 0;
SERVER.on('after', function(req, res, route, err) {
afterFired++;
assert.ok(err);
});
CLIENT.get('/idontexist.js', function(err, req, res, data) {
// arbitrary delay to ensure both events have fired
setTimeout(function() {
assert.ok(err);
assert.equal(afterFired, 1);
done();
}, 100);
});
});
it('should emit server\'s after event', function (done) {
var afterFired = false;
SERVER.on('after', function(req, res, route, err) {
afterFired = true;
assert.ifError(err);
assert.isObject(req);
assert.isObject(res);
assert.isObject(route);
assert.equal(route.path, '/static.test.js');
});
CLIENT.get('/static.test.js', function(err, req, res, data) {
setTimeout(function() {
assert.ifError(err);
assert.ok(data);
assert.isString(data);
assert.equal(res.headers['content-type'],
'application/javascript; charset=utf-8');
assert.isTrue(afterFired);
done();
}, 100);
});
});
it('should emit error and stop p rocessing for client terminated request',
function (done) {
});
});