diff --git a/spec/api-app-spec.js b/spec/api-app-spec.js index cf25dde6e557..01fb304a24fa 100644 --- a/spec/api-app-spec.js +++ b/spec/api-app-spec.js @@ -403,4 +403,40 @@ describe('app module', function () { w.webContents.loadURL(secureUrl) }) }) + + describe('setAsDefaultProtocolClient(protocol, path, args)', () => { + if (process.platform !== 'win32') return + + const protocol = 'electron-test' + const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe') + const processStartArgs = [ + '--processStart', `"${path.basename(process.execPath)}"`, + '--process-start-args', `"--hidden"` + ] + + beforeEach(() => { + app.removeAsDefaultProtocolClient(protocol) + app.removeAsDefaultProtocolClient(protocol, updateExe, processStartArgs) + }) + + afterEach(() => { + app.removeAsDefaultProtocolClient(protocol) + assert.equal(app.isDefaultProtocolClient(protocol), false) + app.removeAsDefaultProtocolClient(protocol, updateExe, processStartArgs) + assert.equal(app.isDefaultProtocolClient(protocol, updateExe, processStartArgs), false) + }) + + it('sets the app as the default protocol client', () => { + assert.equal(app.isDefaultProtocolClient(protocol), false) + app.setAsDefaultProtocolClient(protocol) + assert.equal(app.isDefaultProtocolClient(protocol), true) + }) + + it('allows a custom path and args to be specified', () => { + assert.equal(app.isDefaultProtocolClient(protocol, updateExe, processStartArgs), false) + app.setAsDefaultProtocolClient(protocol, updateExe, processStartArgs) + assert.equal(app.isDefaultProtocolClient(protocol, updateExe, processStartArgs), true) + assert.equal(app.isDefaultProtocolClient(protocol), false) + }) + }) })