-/* eslint-env mocha */
-/* eslint-disable capitalized-comments, sonarjs/no-duplicate-string, sonarjs/no-identical-functions */
-
'use strict';
-const assert = require('assert');
-const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require
+const assert = require('node:assert');
+const sinon = require('sinon');
const Manager = require('../../src/manager');
const Config = require('../../config');
};
ctx = {
params: {},
+ queryParams: {},
};
manager = new Manager(stubLogger, stubDb, options);
sinon.stub(manager.communication, 'verificationProcess');
});
}); // getInfo
+ describe('_historyBarCaption', function () {
+ it('covers today, none', function () {
+ const result = Manager._historyBarCaption(0, 0);
+ assert.strictEqual(result, 'today, no updates');
+ });
+ it('covers yesterday, singular', function () {
+ const result = Manager._historyBarCaption(1, 1);
+ assert.strictEqual(result, 'yesterday, 1 update');
+ });
+ it('covers older, plural', function () {
+ const result = Manager._historyBarCaption(7, 3);
+ assert.strictEqual(result, '7 days ago, 3 updates');
+ });
+ }); // _historyBarCaption
+
+ describe('getHistorySVG', function () {
+ beforeEach(function () {
+ manager.db.topicPublishHistory.resolves([0, 1, 2, 1, 0, 1, 2, 0, 1]);
+ });
+ it('covers', async function () {
+ await manager.getHistorySVG(res, ctx);
+ assert(res.end.called);
+ });
+ }); // getHistorySVG
+
describe('getAdminOverview', function () {
beforeEach(function () {
manager.db.topicGetAll.resolves([
manager.db.topicGetById.resolves({
id: '56c557ce-e667-11eb-bd80-0025905f714a',
created: new Date(),
- url: 'https://example.com/',
+ url: 'https://example.com/topic',
leaseSecondsPreferred: 123,
leaseSecondsMin: 12,
leaseSecondsMax: 123456789,
deliveryAttemptsSinceSuccess: 0,
deliveryNextAttempt: new Date(-Infinity),
}]);
+ manager.db.topicPublishHistory.resolves([0, 1, 0, 1, 0]);
});
it('covers', async function() {
await manager.getTopicDetails(res, ctx);
});
it('covers matching profile', async function () {
ctx.session = {
- authenticatedProfile: 'https://example.com/profile',
+ authenticatedProfile: 'https://example.com/',
};
await manager.getTopicDetails(res, ctx);
assert(ctx.topic);
});
}); // postRoot
+ describe('_profileControlsTopic', function () {
+ let profileUrlObj, topicUrlObj;
+ it('allows exact match', function () {
+ profileUrlObj = new URL('https://profile.example.com/');
+ topicUrlObj = new URL('https://profile.example.com/');
+ const result = Manager._profileControlsTopic(profileUrlObj, topicUrlObj);
+ assert.strictEqual(result, true);
+ });
+ it('allows descendent-path match', function () {
+ profileUrlObj = new URL('https://profile.example.com/');
+ topicUrlObj = new URL('https://profile.example.com/feed/atom');
+ const result = Manager._profileControlsTopic(profileUrlObj, topicUrlObj);
+ assert.strictEqual(result, true);
+ });
+ it('disallows non-descendent-path', function () {
+ profileUrlObj = new URL('https://profile.example.com/itsame');
+ topicUrlObj = new URL('https://profile.example.com/');
+ const result = Manager._profileControlsTopic(profileUrlObj, topicUrlObj);
+ assert.strictEqual(result, false);
+ });
+ it('disallows non-matched host', function () {
+ profileUrlObj = new URL('https://profile.example.com/itsame');
+ topicUrlObj = new URL('https://elsewhere.example.com/itsame/feed');
+ const result = Manager._profileControlsTopic(profileUrlObj, topicUrlObj);
+ assert.strictEqual(result, false);
+ });
+ }); // _profileControlsTopic
+
describe('_getRootData', function () {
it('extracts expected values', function () {
req.getHeader.returns('user@example.com');
- ctx = Object.assign({}, testData.validSubscribeCtx)
+ ctx = Object.assign({}, testData.validSubscribeCtx);
const result = Manager._getRootData(req, ctx);
assert.deepStrictEqual(result, testData.validRootData);
});
assert(manager.db.topicFetchRequested.called);
assert.strictEqual(res.statusCode, 202);
assert(res.end.called);
- assert(manager.communication.topicFetchClaimAndProcessById.called)
+ assert(manager.communication.topicFetchClaimAndProcessById.called);
});
it('covers no immediate processing', async function() {
manager.options.manager.processImmediately = false;
assert(manager.db.topicFetchRequested.called);
assert.strictEqual(res.statusCode, 202);
assert(res.end.called);
- assert(!manager.communication.topicFetchClaimAndProcessById.called)
+ assert(!manager.communication.topicFetchClaimAndProcessById.called);
});
}); // _publishRequest