2022-02-27 02:55:09 -05:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const assert = require('assert').strict;
|
|
|
|
const {padutils} = require('../../../static/js/pad_utils');
|
|
|
|
|
|
|
|
describe(__filename, function () {
|
|
|
|
describe('warnDeprecated', function () {
|
|
|
|
const {warnDeprecated} = padutils;
|
|
|
|
const backups = {};
|
|
|
|
|
|
|
|
before(async function () {
|
|
|
|
backups.logger = warnDeprecated.logger;
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(async function () {
|
|
|
|
warnDeprecated.logger = backups.logger;
|
2022-02-27 02:55:35 -05:00
|
|
|
delete warnDeprecated._rl; // Reset internal rate limiter state.
|
2022-02-27 02:55:09 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('includes the stack', async function () {
|
|
|
|
let got;
|
|
|
|
warnDeprecated.logger = {warn: (stack) => got = stack};
|
|
|
|
warnDeprecated();
|
|
|
|
assert(got.includes(__filename));
|
|
|
|
});
|
2022-02-27 02:55:35 -05:00
|
|
|
|
|
|
|
it('rate limited', async function () {
|
|
|
|
let got = 0;
|
|
|
|
warnDeprecated.logger = {warn: () => ++got};
|
|
|
|
warnDeprecated(); // Initialize internal rate limiter state.
|
|
|
|
const {period} = warnDeprecated._rl;
|
|
|
|
got = 0;
|
|
|
|
const testCases = [[0, 1], [0, 1], [period - 1, 1], [period, 2]];
|
|
|
|
for (const [now, want] of testCases) { // In a loop so that the stack trace is the same.
|
|
|
|
warnDeprecated._rl.now = () => now;
|
|
|
|
warnDeprecated();
|
|
|
|
assert.equal(got, want);
|
|
|
|
}
|
|
|
|
warnDeprecated(); // Should have a different stack trace.
|
|
|
|
assert.equal(got, testCases[testCases.length - 1][1] + 1);
|
|
|
|
});
|
2022-02-27 02:55:09 -05:00
|
|
|
});
|
|
|
|
});
|