1 |
|
2 |
|
3 |
|
4 |
|
5 | 'use strict';
|
6 |
|
7 | var helper = require('../../test-helper');
|
8 | var config = helper.config();
|
9 |
|
10 | var request = require('supertest');
|
11 | var chai = require('chai');
|
12 | var should = chai.should();
|
13 |
|
14 | describe('spike arrest', function() {
|
15 |
|
16 | var servers, proxy;
|
17 |
|
18 | before(function(done) {
|
19 | config.spikearrest = {
|
20 | timeUnit: 'minute',
|
21 | bufferSize: 0,
|
22 | allow: 1
|
23 | };
|
24 |
|
25 | config.edgemicro.plugins.sequence = ['spikearrest'];
|
26 | helper.startServers(config, function(err, s) {
|
27 | if (err) { return done(err); }
|
28 | servers = s;
|
29 | proxy = servers.proxy;
|
30 | done();
|
31 | });
|
32 | });
|
33 |
|
34 | after(function() {
|
35 | servers.close();
|
36 | });
|
37 |
|
38 | describe('quota', function() {
|
39 |
|
40 | it('should succeed before limit is hit', function(done) {
|
41 |
|
42 | request(proxy)
|
43 | .get('/')
|
44 | .expect(200)
|
45 | .end(function(err, res) {
|
46 | if (err) { return done(err); }
|
47 | should.exist(res.body.fromTarget);
|
48 | done();
|
49 | });
|
50 | });
|
51 |
|
52 | it('should fail once limit is hit', function(done) {
|
53 |
|
54 | request(proxy)
|
55 | .get('/')
|
56 | .expect(503)
|
57 | .end(function(err, res) {
|
58 | if (err) { return done(err); }
|
59 | should.not.exist(res.body.fromTarget);
|
60 | res.text.should.eql('{"message":"SpikeArrest engaged","status":503}');
|
61 | done();
|
62 | });
|
63 | });
|
64 |
|
65 | });
|
66 | });
|