update dependencies, fixes to support new authentication features
[websub-hub] / test / src / db / factory.js
1 'use strict';
2
3 const assert = require('node:assert');
4 const sinon = require('sinon');
5 const DB = require('../../../src/db');
6 const DBErrors = require('../../../src/db/errors');
7 const DatabasePostgres = require('../../../src/db/postgres');
8 const DatabaseSQLite = require('../../../src/db/sqlite');
9 const stubLogger = require('../../stub-logger');
10
11 describe('DatabaseFactory', function () {
12 let logger, options;
13 beforeEach(function () {
14 logger = stubLogger,
15 options = {
16 db: {
17 connectionString: '',
18 },
19 };
20 });
21 afterEach(function () {
22 sinon.restore();
23 });
24 it('gets engines', function () {
25 const result = DB.Engines;
26 assert(result instanceof Object);
27 assert(Object.keys(result).length);
28 });
29 it('creates postgres db', function () {
30 options.db.connectionString = 'postgresql://blah';
31 const db = new DB(logger, options);
32 assert(db instanceof DatabasePostgres);
33 });
34 it('creates sqlite db', function () {
35 options.db.connectionString = 'sqlite://:memory:';
36 const db = new DB(logger, options);
37 assert(db instanceof DatabaseSQLite);
38 });
39 it('handles missing db', function () {
40 delete options.db.connectionString;
41 try {
42 new DB(logger, options);
43 assert.fail('did not get expected exception');
44 } catch (e) {
45 assert(e instanceof DBErrors.UnsupportedEngine);
46 }
47 });
48 }); // DatabaseFactory