const sinon = require('sinon'); // eslint-disable-line node/no-unpublished-require
const { AsyncLocalStorage } = require('node:async_hooks');
-const stubDb = require('../stub-db');
-const stubLogger = require('../stub-logger');
+const StubDb = require('../stub-db');
+const StubLogger = require('../stub-logger');
const Service = require('../../src/service');
const Config = require('../../config');
describe('Service', function () {
- let service, options, asyncLocalStorage;
+ let service, stubLogger, stubDb, options, asyncLocalStorage;
let req, res, ctx;
beforeEach(function () {
asyncLocalStorage = new AsyncLocalStorage();
options = new Config('test');
+ stubDb = new StubDb();
+ stubDb._reset();
+ stubLogger = new StubLogger();
+ stubLogger._reset();
service = new Service(stubLogger, stubDb, options, asyncLocalStorage);
sinon.stub(service.manager);
sinon.stub(service.sessionManager);
});
}); // handlerGetAdminLogout
+ describe('handlerGetAdminSettings', function () {
+ it('covers authenticated', async function () {
+ service.authenticator.sessionRequiredLocal.resolves(true);
+ await service.handlerGetAdminSettings(req, res, ctx);
+ assert(service.sessionManager.getAdminSettings.called);
+ });
+ it('covers unauthenticated', async function () {
+ service.authenticator.sessionRequiredLocal.resolves(false);
+ await service.handlerGetAdminSettings(req, res, ctx);
+ assert(service.sessionManager.getAdminSettings.notCalled);
+ });
+ }); // handlerGetAdminSettings
+
+ describe('handlerPostAdminSettings', function () {
+ it('covers authenticated', async function () {
+ service.authenticator.sessionRequiredLocal.resolves(true);
+ await service.handlerPostAdminSettings(req, res, ctx);
+ assert(service.sessionManager.postAdminSettings.called);
+ });
+ it('covers unauthenticated', async function () {
+ service.authenticator.sessionRequiredLocal.resolves(false);
+ await service.handlerPostAdminSettings(req, res, ctx);
+ assert(service.sessionManager.postAdminSettings.notCalled);
+ });
+ }); // handlerPostAdminSettings
+
describe('handlerGetAdmin', function () {
it('covers authenticated', async function () {
service.authenticator.sessionRequiredLocal.resolves(true);
}); // handlerGetHealthcheck
describe('handlerInternalServerError', function () {
+ let ServiceClass, DingusClass;
+ before(function () {
+ ServiceClass = Object.getPrototypeOf(service);
+ DingusClass = Object.getPrototypeOf(ServiceClass);
+ });
it('covers no redirect', async function () {
- sinon.stub(service.__proto__.__proto__, 'handlerInternalServerError');
+ sinon.stub(DingusClass, 'handlerInternalServerError');
await service.handlerInternalServerError(req, res, ctx);
- assert(service.__proto__.__proto__.handlerInternalServerError.called);
+ assert(DingusClass.handlerInternalServerError.called);
});
it('covers redirect', async function () {
- sinon.stub(service.__proto__.__proto__, 'handlerInternalServerError');
+ sinon.stub(DingusClass, 'handlerInternalServerError');
ctx.session = {
redirectUri: new URL('https://client.example.com/app'),
clientIdentifier: new URL('https://client.exmaple.com/'),
state: '123456',
};
await service.handlerInternalServerError(req, res, ctx);
- assert(!service.__proto__.__proto__.handlerInternalServerError.called);
- assert(res.setHeader);
+ assert(!DingusClass.handlerInternalServerError.called);
+ assert(res.setHeader.called);
+ assert.strictEqual(res.statusCode, 302);
});
}); // handlerInternalServerError
});
}); // handlerGetAdminMaintenance
+ describe('handlerWhaGwan', function () {
+ it('covers', async function () {
+ await assert.rejects(() => service.handlerWhaGwan(req. res, ctx));
+ });
+ }); // handlerWhaGwan
+
});
\ No newline at end of file