You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.9 KiB
TypeScript
82 lines
2.9 KiB
TypeScript
import chai from 'chai';
|
|
// tslint:disable: no-require-imports no-var-requires no-implicit-dependencies
|
|
|
|
import _ from 'lodash';
|
|
import { describe } from 'mocha';
|
|
import { KeyPairRequestManager } from '../../../../receiver/keyPairRequestManager';
|
|
import { TestUtils } from '../../../test-utils';
|
|
|
|
const chaiAsPromised = require('chai-as-promised');
|
|
chai.use(chaiAsPromised);
|
|
|
|
chai.should();
|
|
const { expect } = chai;
|
|
|
|
// tslint:disable-next-line: max-func-body-length
|
|
describe('KeyPairRequestManager', () => {
|
|
let inst: KeyPairRequestManager;
|
|
beforeEach(() => {
|
|
KeyPairRequestManager.getInstance().reset();
|
|
inst = KeyPairRequestManager.getInstance();
|
|
});
|
|
|
|
it('getInstance() should return an instance', () => {
|
|
expect(inst).to.exist;
|
|
});
|
|
|
|
describe('markRequestSendFor', () => {
|
|
it('should be able to set a timestamp for a pubkey', () => {
|
|
const groupPubkey = TestUtils.generateFakePubKey();
|
|
const now = Date.now();
|
|
inst.markRequestSendFor(groupPubkey, now);
|
|
expect(inst.get(groupPubkey)).to.be.equal(now);
|
|
});
|
|
|
|
it('should be able to override a timestamp for a pubkey', () => {
|
|
const groupPubkey = TestUtils.generateFakePubKey();
|
|
const timestamp1 = Date.now();
|
|
inst.markRequestSendFor(groupPubkey, timestamp1);
|
|
expect(inst.get(groupPubkey)).to.be.equal(timestamp1);
|
|
const timestamp2 = Date.now() + 1000;
|
|
inst.markRequestSendFor(groupPubkey, timestamp2);
|
|
expect(inst.get(groupPubkey)).to.be.equal(timestamp2);
|
|
});
|
|
});
|
|
|
|
describe('canTriggerRequestWith', () => {
|
|
it('should return true if there is no timestamp set for this pubkey', () => {
|
|
const groupPubkey = TestUtils.generateFakePubKey();
|
|
const can = inst.canTriggerRequestWith(groupPubkey);
|
|
expect(can).to.be.equal(
|
|
true,
|
|
'should return true if we there is no timestamp set for this pubkey'
|
|
);
|
|
});
|
|
|
|
it('should return false if there is a timestamp set for this pubkey and it is less than DELAY_BETWEEN_TWO_REQUEST_MS', () => {
|
|
const groupPubkey = TestUtils.generateFakePubKey();
|
|
const timestamp1 = Date.now();
|
|
|
|
inst.markRequestSendFor(groupPubkey, timestamp1);
|
|
const can = inst.canTriggerRequestWith(groupPubkey);
|
|
expect(can).to.be.equal(
|
|
false,
|
|
'return false if there is a timestamp set for this pubkey and it is less than DELAY_BETWEEN_TWO_REQUEST_MS'
|
|
);
|
|
});
|
|
|
|
it('should return true if there is a timestamp set for this pubkey and it is more than DELAY_BETWEEN_TWO_REQUEST_MS', () => {
|
|
const groupPubkey = TestUtils.generateFakePubKey();
|
|
const timestamp1 =
|
|
Date.now() - KeyPairRequestManager.DELAY_BETWEEN_TWO_REQUEST_MS;
|
|
|
|
inst.markRequestSendFor(groupPubkey, timestamp1);
|
|
const can = inst.canTriggerRequestWith(groupPubkey);
|
|
expect(can).to.be.equal(
|
|
true,
|
|
'true if there is a timestamp set for this pubkey and it is more than DELAY_BETWEEN_TWO_REQUEST_MS'
|
|
);
|
|
});
|
|
});
|
|
});
|