diff --git a/packages/server/lib/gui/auth.js b/packages/server/lib/gui/auth.js index 372541eef53b..178275a77982 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 98a329b52195..51c09ef967fd 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) + sinon.stub(electron.shell, 'openExternal').resolves() + const sendWarning = sinon.stub() - return auth._launchNativeAuth(REDIRECT_URL) + 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').callsArgWith(2, new Error) + 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, {}, sinon.match.func) + expect(electron.shell.openExternal).to.be.calledWithMatch(REDIRECT_URL) expect(sendWarning).to.be.calledWithMatch('warning', 'AUTH_COULD_NOT_LAUNCH_BROWSER', REDIRECT_URL) }) })