UNPKG

1.5 kBJavaScriptView Raw
1/// <reference path="../../../typings/node/node.d.ts" />
2/// <reference path="../../../typings/mocha/mocha.d.ts" />
3/// <reference path="../../../typings/chai/chai.d.ts" />
4
5'use strict';
6
7var helper = require('../../test-helper');
8var config = helper.config();
9
10var request = require('supertest');
11var chai = require('chai');
12var should = chai.should();
13
14describe('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});