api-auto-updater-spec.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. const assert = require('assert')
  2. const {autoUpdater} = require('electron').remote
  3. const {ipcRenderer} = require('electron')
  4. // Skip autoUpdater tests in MAS build.
  5. if (!process.mas) {
  6. describe('autoUpdater module', function () {
  7. describe('checkForUpdates', function () {
  8. it('emits an error on Windows when called the feed URL is not set', function (done) {
  9. if (process.platform !== 'win32') {
  10. return done()
  11. }
  12. ipcRenderer.once('auto-updater-error', function (event, message) {
  13. assert.equal(message, 'Update URL is not set')
  14. done()
  15. })
  16. autoUpdater.setFeedURL('')
  17. autoUpdater.checkForUpdates()
  18. })
  19. })
  20. describe('setFeedURL', function () {
  21. it('emits an error on macOS when the application is unsigned', function (done) {
  22. if (process.platform !== 'darwin') {
  23. return done()
  24. }
  25. ipcRenderer.once('auto-updater-error', function (event, message) {
  26. assert.equal(message, 'Could not get code signature for running application')
  27. done()
  28. })
  29. autoUpdater.setFeedURL('')
  30. })
  31. })
  32. describe('getFeedURL', function () {
  33. it('returns a falsey value by default', function () {
  34. assert.ok(!autoUpdater.getFeedURL())
  35. })
  36. it('correctly fetches the previously set FeedURL', function (done) {
  37. if (process.platform !== 'win32') {
  38. return done()
  39. }
  40. const updateURL = 'https://fake-update.electron.io'
  41. autoUpdater.setFeedURL(updateURL)
  42. assert.equal(autoUpdater.getFeedURL(), updateURL)
  43. done()
  44. })
  45. })
  46. describe('quitAndInstall', function () {
  47. it('emits an error on Windows when no update is available', function (done) {
  48. if (process.platform !== 'win32') {
  49. return done()
  50. }
  51. ipcRenderer.once('auto-updater-error', function (event, message) {
  52. assert.equal(message, 'No update available, can\'t quit and install')
  53. done()
  54. })
  55. autoUpdater.quitAndInstall()
  56. })
  57. })
  58. describe('error event', function () {
  59. it('serializes correctly over the remote module', function (done) {
  60. if (process.platform === 'linux') {
  61. return done()
  62. }
  63. autoUpdater.once('error', function (error) {
  64. assert.equal(error instanceof Error, true)
  65. assert.deepEqual(Object.getOwnPropertyNames(error), ['stack', 'message', 'name'])
  66. done()
  67. })
  68. autoUpdater.setFeedURL('')
  69. if (process.platform === 'win32') {
  70. autoUpdater.checkForUpdates()
  71. }
  72. })
  73. })
  74. })
  75. }