diff --git a/server/cloudcmd.js b/server/cloudcmd.js index d878f991..50e6683a 100644 --- a/server/cloudcmd.js +++ b/server/cloudcmd.js @@ -288,6 +288,14 @@ function replacePrefix(url, prefix) { return url.replace(prefix, '') || '/'; } +module.exports._replaceDist = replaceDist; +function replaceDist(url) { + if (!isDev) + return url; + + return url.replace(/^\/dist\//, '/dist-dev/'); +} + function _setUrl(pref, req, res, next) { const prefix = getPrefix(pref); const is = !req.url.indexOf(prefix); @@ -300,8 +308,7 @@ function _setUrl(pref, req, res, next) { if (/^\/cloudcmd\.js(\.map)?$/.test(req.url)) req.url = `/dist${req.url}`; - if (isDev) - req.url = req.url.replace(/^\/dist\//, '/dist-dev/'); + req.url = replaceDist(req.url); next(); } diff --git a/test/server/cloudcmd.js b/test/server/cloudcmd.js index a2b45657..0d36aaa3 100644 --- a/test/server/cloudcmd.js +++ b/test/server/cloudcmd.js @@ -13,6 +13,7 @@ const { _getPrefix, _authCheck, _replacePrefix, + _replaceDist, } = cloudcmd; test('cloudcmd: args: no', (t) => { @@ -89,6 +90,33 @@ test('cloudcmd: replacePrefix', (t) => { t.end(); }); +test('cloudcmd: replaceDist', (t) => { + const url = '/dist/hello'; + const result = _replaceDist(url); + const expected = '/dist-dev/hello'; + + t.equal(result, expected, 'should equal'); + t.end(); +}); + +test('cloudcmd: replaceDist: !isDev', (t) => { + const url = '/dist/hello'; + const cloudcmdPath = DIR + 'cloudcmd'; + + const reset = cleanNodeEnv(); + + clean(cloudcmdPath); + const {_replaceDist} = require(cloudcmdPath); + + const result = _replaceDist(url); + const expected = '/dist-dev/hello'; + + reset(); + + t.equal(result, expected, 'should equal'); + t.end(); +}); + test('cloudcmd: authCheck: success', (t) => { const auth = config('auth'); const success = sinon.stub(); @@ -197,3 +225,18 @@ function credentials() { return set(reset); } +function clean(path) { + delete require.cache[require.resolve(path)]; +} + +function cleanNodeEnv() { + const {NODE_ENV} = process.env; + process.env.NODE_ENV = ''; + + const reset = () => { + process.env.NODE_ENV = NODE_ENV; + }; + + return reset; +} +