diff --git a/services/db.js b/services/db.js index 57be091..dd718ee 100644 --- a/services/db.js +++ b/services/db.js @@ -3,6 +3,7 @@ var redis = require('../redis'), postgres = require('../postgres/client'), { isUri } = require('clayutils'), + { noKeyError } = require('./errors'), { CACHE_ENABLED } = require('./constants'); /** @@ -35,6 +36,8 @@ function put(key, value, testCacheEnabled) { * @return {Promise} */ function get(key) { + if (!key) return Promise.reject(noKeyError()); + return redis.get(key) .then(data => { if (isUri(key)) return data; diff --git a/services/db.test.js b/services/db.test.js index 22a3be6..7eb67f2 100644 --- a/services/db.test.js +++ b/services/db.test.js @@ -2,7 +2,8 @@ const { put, get, del, batch, createReadStream } = require('./db'), redis = require('../redis'), - postgres = require('../postgres/client'); + postgres = require('../postgres/client'), + { noKeyError } = require('./errors'); jest.mock('../redis'); jest.mock('../postgres/client'); @@ -47,6 +48,21 @@ describe('services/db', () => { expect(postgres.get).toHaveBeenCalledWith(KEY); }); }); + + test('it fails when no key is being passed', () => { + let rejected = false; + + redis.get.mockResolvedValue(JSON.stringify(VALUE)); + + return get() + .then(() => { + expect(rejected).to.be.true; + }) + .catch(err => { + rejected = true; + expect(err).toEqual(noKeyError()); + }); + }); }); describe('put', () => { diff --git a/services/errors.js b/services/errors.js index 4fd81f1..c244898 100644 --- a/services/errors.js +++ b/services/errors.js @@ -17,6 +17,19 @@ function notFoundError(key) { return error; } +/** + * Format an error for when the key + * is not provided + * + * @return {Error} + */ +function noKeyError() { + const error = new Error('No key provided'); + + error.name = 'NoKeyError'; + return error; +} + /** * Log an error * @@ -28,6 +41,7 @@ function logGenericError(file) { } module.exports.notFoundError = notFoundError; +module.exports.noKeyError = noKeyError; module.exports.logGenericError = logGenericError; // For testing