| const quota = require('../quota/index'); |
| const assert = require('assert'); |
| |
| var exampleConfig = { |
| EdgeMicroTestProduct: { |
| allow: process.env.QUOTA_ALLOW, |
| interval: Number(process.env.QUOTA_INTERVAL), |
| timeUnit: process.env.QUOTA_TIMEUNIT, |
| bufferSize: process.env.QUOTA_BUFFERSIZE, |
| uri: process.env.QUOTA_URI, |
| key: process.env.QUOTA_KEY, |
| secret: process.env.QUOTA_SECRET |
| } |
| } |
| |
| describe('quota plugin', () => { |
| var plugin = null; |
| |
| beforeEach(() => { |
| var logger = {}; |
| var stats = {}; |
| |
| plugin = quota.init.apply(null, [exampleConfig, logger, stats]); |
| |
| }); |
| |
| it('exposes an onrequest handler', () => { |
| assert.ok(plugin.onrequest); |
| }); |
| |
| it('will quota limit after 3 API calls', (done) => { |
| var count = 0; |
| var onrequest_cb = (err) => { |
| count++; |
| if(count == 4) { |
| assert.equal(count, 4); |
| assert.equal(err.message, 'exceeded quota'); |
| done(); |
| } |
| }; |
| |
| var req = { |
| token: { |
| application_name: '0e7762f4-ea67-4cc1-ae4a-21598c35b18f', |
| api_product_list: ['EdgeMicroTestProduct'] |
| } |
| } |
| |
| var res = { |
| headers: {}, |
| setHeader: (key, val) => { |
| res.headers[key] = val; |
| } |
| } |
| |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| }); |
| |
| it('will not quota limit before 3 API calls', (done) => { |
| var count = 0; |
| var onrequest_cb = (err) => { |
| count++; |
| if(count == 3) { |
| assert.equal(count, 3); |
| assert.ok(!(err instanceof Error)); |
| done(); |
| } |
| }; |
| |
| var req = { |
| token: { |
| application_name: '0e7762f4-ea67-4cc1-ae4a-21598c35b18f', |
| api_product_list: ['EdgeMicroTestProduct'] |
| } |
| } |
| |
| var res = { |
| headers: {}, |
| setHeader: (key, val) => { |
| res.headers[key] = val; |
| } |
| } |
| |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| plugin.onrequest.apply(null, [req, res, onrequest_cb]); |
| }); |
| }); |
| |
| |