1 | const spikeArrest = require('../spikearrest/index');
|
2 | const assert = require('assert');
|
3 |
|
4 | describe('spike arrest plugin', () => {
|
5 | var plugin = null;
|
6 |
|
7 | beforeEach(() => {
|
8 | var config = {
|
9 | timeUnit: 'minute',
|
10 | bufferSize: 0,
|
11 | allow: 1
|
12 | };
|
13 | var logger = {};
|
14 | var stats = {};
|
15 |
|
16 | plugin = spikeArrest.init.apply(null, [config, logger, stats]);
|
17 | });
|
18 |
|
19 | it('exposes an onrequest handler', () => {
|
20 | assert.ok(plugin.onrequest);
|
21 | });
|
22 |
|
23 | it('will accept a request', (done) => {
|
24 | var onrequest_cb = () => {
|
25 | done();
|
26 | };
|
27 |
|
28 | var req = {};
|
29 | var res = {};
|
30 | plugin.onrequest.apply(null, [req, res, onrequest_cb]);
|
31 | });
|
32 |
|
33 | it('will reject a requests that come in too fast', (done) => {
|
34 | var onrequest_cb = () => {
|
35 | };
|
36 |
|
37 | var onrequest_cb_second = (req, res, next) => {
|
38 | assert.ok(req instanceof Error);
|
39 | assert.equal(req.message, 'SpikeArrest engaged');
|
40 | done();
|
41 | };
|
42 |
|
43 | var req = {};
|
44 | var res = {};
|
45 | plugin.onrequest.apply(null, [req, res, onrequest_cb]);
|
46 | plugin.onrequest.apply(null, [req, res, onrequest_cb_second]);
|
47 | });
|
48 | });
|