From 0f37562ab68b5b0d1a21a6519235a9f27c332bf2 Mon Sep 17 00:00:00 2001 From: Michael Drury Date: Mon, 15 Nov 2021 19:34:08 +0000 Subject: [PATCH] Fixing issue presented by test, passing Couch instance around for when it is being used in memory. --- packages/auth/src/cache/appMetadata.js | 14 +++++++++----- packages/auth/src/db/index.js | 4 ++-- packages/auth/src/db/utils.js | 9 ++++++--- .../worker/src/api/controllers/global/users.js | 6 +----- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/packages/auth/src/cache/appMetadata.js b/packages/auth/src/cache/appMetadata.js index e30a58770f..e3758b349a 100644 --- a/packages/auth/src/cache/appMetadata.js +++ b/packages/auth/src/cache/appMetadata.js @@ -1,5 +1,5 @@ const redis = require("../redis/authRedis") -const { getDB } = require("../db") +const { getCouch } = require("../db") const { DocumentTypes } = require("../db/constants") const EXPIRY_SECONDS = 3600 @@ -7,8 +7,12 @@ const EXPIRY_SECONDS = 3600 /** * The default populate app metadata function */ -const populateFromDB = async appId => { - return getDB(appId, { skip_setup: true }).get(DocumentTypes.APP_METADATA) +const populateFromDB = async (appId, CouchDB = null) => { + if (!CouchDB) { + CouchDB = getCouch() + } + const db = new CouchDB(appId, { skip_setup: true }) + return db.get(DocumentTypes.APP_METADATA) } /** @@ -18,12 +22,12 @@ const populateFromDB = async appId => { * @param {*} appId the id of the app to get metadata from. * @returns {object} the app metadata. */ -exports.getAppMetadata = async appId => { +exports.getAppMetadata = async (appId, CouchDB = null) => { const client = await redis.getAppClient() // try cache let metadata = await client.get(appId) if (!metadata) { - metadata = await populateFromDB(appId) + metadata = await populateFromDB(appId, CouchDB) client.store(appId, metadata, EXPIRY_SECONDS) } return metadata diff --git a/packages/auth/src/db/index.js b/packages/auth/src/db/index.js index 94f5513f19..163364dbf3 100644 --- a/packages/auth/src/db/index.js +++ b/packages/auth/src/db/index.js @@ -4,8 +4,8 @@ module.exports.setDB = pouch => { Pouch = pouch } -module.exports.getDB = (dbName, opts = {}) => { - return new Pouch(dbName, opts) +module.exports.getDB = dbName => { + return new Pouch(dbName) } module.exports.getCouch = () => { diff --git a/packages/auth/src/db/utils.js b/packages/auth/src/db/utils.js index f8f36b17b3..11ce51fae9 100644 --- a/packages/auth/src/db/utils.js +++ b/packages/auth/src/db/utils.js @@ -54,6 +54,9 @@ exports.isProdAppID = appId => { } function isDevApp(app) { + if (!app) { + return false + } return exports.isDevAppID(app.appId) } @@ -233,16 +236,16 @@ exports.getAllApps = async (CouchDB, { dev, all, idsOnly } = {}) => { if (idsOnly) { return appDbNames } - const appPromises = appDbNames.map(db => + const appPromises = appDbNames.map(app => // skip setup otherwise databases could be re-created - getAppMetadata(db) + getAppMetadata(app, CouchDB) ) if (appPromises.length === 0) { return [] } else { const response = await Promise.allSettled(appPromises) const apps = response - .filter(result => result.status === "fulfilled") + .filter(result => result.status === "fulfilled" && result.value != null) .map(({ value }) => value) if (!all) { return apps.filter(app => { diff --git a/packages/worker/src/api/controllers/global/users.js b/packages/worker/src/api/controllers/global/users.js index 42166faad7..87194a7ceb 100644 --- a/packages/worker/src/api/controllers/global/users.js +++ b/packages/worker/src/api/controllers/global/users.js @@ -43,11 +43,7 @@ exports.save = async ctx => { } const parseBooleanParam = param => { - if (param && param === "false") { - return false - } else { - return true - } + return !(param && param === "false") } exports.adminUser = async ctx => {