From 8b6460d015eb85d10a38d4e234fff99b7da91e01 Mon Sep 17 00:00:00 2001 From: Zach Bloomquist Date: Fri, 2 Aug 2019 18:04:09 -0400 Subject: [PATCH] update shell.openExternal to promisified --- packages/server/lib/gui/auth.js | 4 ++-- packages/server/test/unit/gui/auth_spec.js | 24 ++++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/server/lib/gui/auth.js b/packages/server/lib/gui/auth.js index 372541eef5..178275a779 100644 --- a/packages/server/lib/gui/auth.js +++ b/packages/server/lib/gui/auth.js @@ -191,8 +191,8 @@ const _launchNativeAuth = (loginUrl, sendMessage) => { openExternalAttempted = true // wrap openExternal here in case `electron.shell` is not available (during tests) - return Promise.fromCallback((cb) => { - shell.openExternal(loginUrl, {}, cb) + return Promise.try(() => { + return shell.openExternal(loginUrl) }) .catch((err) => { debug('Error launching native auth: %o', { err }) diff --git a/packages/server/test/unit/gui/auth_spec.js b/packages/server/test/unit/gui/auth_spec.js index 98a329b521..51c09ef967 100644 --- a/packages/server/test/unit/gui/auth_spec.js +++ b/packages/server/test/unit/gui/auth_spec.js @@ -88,21 +88,23 @@ describe('lib/gui/auth', function () { }) it('returns a promise that is fulfilled when openExternal succeeds', function () { - sinon.stub(electron.shell, 'openExternal').callsArg(2) - - return auth._launchNativeAuth(REDIRECT_URL) - .then(() => { - expect(electron.shell.openExternal).to.be.calledWithMatch(REDIRECT_URL, {}, sinon.match.func) - }) - }) - - it('is still fulfilled when openExternal fails, but sendWarning is called', function () { - sinon.stub(electron.shell, 'openExternal').callsArgWith(2, new Error) + sinon.stub(electron.shell, 'openExternal').resolves() const sendWarning = sinon.stub() return auth._launchNativeAuth(REDIRECT_URL, sendWarning) .then(() => { - expect(electron.shell.openExternal).to.be.calledWithMatch(REDIRECT_URL, {}, sinon.match.func) + expect(electron.shell.openExternal).to.be.calledWithMatch(REDIRECT_URL) + expect(sendWarning).to.not.be.called + }) + }) + + it('is still fulfilled when openExternal fails, but sendWarning is called', function () { + sinon.stub(electron.shell, 'openExternal').rejects(new Error) + const sendWarning = sinon.stub() + + return auth._launchNativeAuth(REDIRECT_URL, sendWarning) + .then(() => { + expect(electron.shell.openExternal).to.be.calledWithMatch(REDIRECT_URL) expect(sendWarning).to.be.calledWithMatch('warning', 'AUTH_COULD_NOT_LAUNCH_BROWSER', REDIRECT_URL) }) })