X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=test%2Fsrc%2Fservice.js;h=62c0059553a0cbce037a75909d01902063e9178d;hb=HEAD;hp=9afaf13d0242e839a433a969515d08c5884d726f;hpb=57f38d5d768142c536fafc8860f6fe70869c74f5;p=websub-hub diff --git a/test/src/service.js b/test/src/service.js index 9afaf13..2cfe38d 100644 --- a/test/src/service.js +++ b/test/src/service.js @@ -1,24 +1,24 @@ -/* eslint-env mocha */ -/* eslint-disable capitalized-comments */ - '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 stubDb = require('../stub-db'); const stubLogger = require('../stub-logger'); const Service = require('../../src/service'); const Config = require('../../config'); +const { AsyncLocalStorage } = require('node:async_hooks'); describe('Service', function () { - let service, options; + let service, options, asyncLocalStorage; let req, res, ctx; beforeEach(function () { + asyncLocalStorage = new AsyncLocalStorage(); options = new Config('test'); - service = new Service(stubLogger, stubDb, options); + service = new Service(stubLogger, stubDb, options, asyncLocalStorage); + stubLogger._reset(); sinon.stub(service.manager); sinon.stub(service.sessionManager); sinon.stub(service.authenticator); @@ -46,6 +46,23 @@ describe('Service', function () { assert(service); }); + describe('preHandler', function () { + it('logs requestId', async function () { + sinon.stub(service.__proto__.__proto__, 'preHandler').resolves(); + await service.asyncLocalStorage.run({}, async () => { + await service.preHandler(req, res, ctx); + const logObject = service.asyncLocalStorage.getStore(); + assert('requestId' in logObject); + }); + }); + it('covers weird async context failure', async function () { + sinon.stub(service.__proto__.__proto__, 'preHandler').resolves(); + sinon.stub(service.asyncLocalStorage, 'getStore').returns(); + await service.preHandler(req, res, ctx); + assert(service.logger.debug.called); + }); + }); // preHandler + describe('maybeIngestBody', function () { beforeEach(function () { sinon.stub(service, 'bodyData'); @@ -108,19 +125,33 @@ describe('Service', function () { }); // handlerGetHistorySVG describe('handlerGetAdminOverview', function () { - it('covers', async function () { + it('covers authenticated', async function () { + service.authenticator.sessionRequired.resolves(false); + await service.handlerGetAdminOverview(req, res, ctx); + assert(service.authenticator.sessionRequired.called); + assert(service.manager.getAdminOverview.notCalled); + }); + it('covers unauthenticated', async function () { + service.authenticator.sessionRequired.resolves(true); await service.handlerGetAdminOverview(req, res, ctx); assert(service.authenticator.sessionRequired.called); assert(service.manager.getAdminOverview.called); - }) + }); }); // handlerGetAdminOverview describe('handlerGetAdminTopicDetails', function () { - it('covers', async function () { + it('covers unauthenticated', async function () { + service.authenticator.sessionRequired.resolves(false); + await service.handlerGetAdminTopicDetails(req, res, ctx); + assert(service.authenticator.sessionRequired.called); + assert(service.manager.getTopicDetails.notCalled); + }); + it('covers authenticated', async function () { + service.authenticator.sessionRequired.resolves(true); await service.handlerGetAdminTopicDetails(req, res, ctx); assert(service.authenticator.sessionRequired.called); assert(service.manager.getTopicDetails.called); - }) + }); }); // handlerGetAdminTopicDetails describe('handlerPostAdminProcess', function () { @@ -157,6 +188,34 @@ describe('Service', function () { }); }); // handlerGetAdminLogin + describe('handlerGetAdminSettings', function () { + it('covers logged in', async function () { + service.authenticator.sessionRequiredLocal.resolves(true); + await service.handlerGetAdminSettings(req, res, ctx); + assert(service.sessionManager.getAdminSettings.called); + }); + it('covers not logged in', async function () { + service.authenticator.sessionRequiredLocal.resolves(false); + await service.handlerGetAdminSettings(req, res, ctx); + assert(service.sessionManager.getAdminSettings.notCalled); + }); + }); // handlerGetAdminSettings + + describe('handlerPostAdminSettings', function () { + it('covers logged in', async function () { + service.authenticator.sessionRequiredLocal.resolves(true); + sinon.stub(service, 'bodyData').resolves(); + await service.handlerPostAdminSettings(req, res, ctx); + assert(service.sessionManager.postAdminSettings.called); + }); + it('covers logged outo', async function () { + service.authenticator.sessionRequiredLocal.resolves(false); + sinon.stub(service, 'bodyData').resolves(); + await service.handlerPostAdminSettings(req, res, ctx); + assert(service.sessionManager.postAdminSettings.notCalled); + }); + }); // handlerPostAdminSettings + describe('handlerPostAdminLogin', function () { it('covers', async function () { sinon.stub(service, 'bodyData').resolves(); @@ -170,7 +229,7 @@ describe('Service', function () { await service.handlerGetAdminLogout(req, res, ctx); assert(service.sessionManager.getAdminLogout.called); }); -}); // handlerGetAdminLogout + }); // handlerGetAdminLogout describe('handlerGetAdminIA', function () { it('covers', async function () {