preferences.test.mjs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import {test} from 'node:test'
  2. import assert from 'node:assert/strict'
  3. import {mkdtemp,rm,stat} from 'node:fs/promises'
  4. import {join} from 'node:path'
  5. import {tmpdir} from 'node:os'
  6. import {DesktopPreferences} from './preferences.mjs'
  7. test('background login remains opt-in and persists without changing system login permission',async()=>{
  8. const home=await mkdtemp(join(tmpdir(),'yaoyao-desktop-preferences-'))
  9. try{
  10. const preferences=new DesktopPreferences(home)
  11. assert.deepEqual(await preferences.load(),{backgroundAtLogin:false,startupChoice:'ask',remoteServer:''})
  12. await preferences.setBackgroundAtLogin(true)
  13. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:true,startupChoice:'ask',remoteServer:''})
  14. if(process.platform!=='win32')assert.equal((await stat(preferences.path)).mode&0o777,0o600)
  15. await preferences.setBackgroundAtLogin(false)
  16. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:false,startupChoice:'ask',remoteServer:''})
  17. }finally{await rm(home,{recursive:true,force:true})}
  18. })
  19. test('startup choice persists independently of background login',async()=>{
  20. const home=await mkdtemp(join(tmpdir(),'yaoyao-desktop-preferences-'))
  21. try{
  22. const preferences=new DesktopPreferences(home)
  23. await preferences.load()
  24. await preferences.setStartupChoice('remote')
  25. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:false,startupChoice:'remote',remoteServer:''})
  26. await preferences.setBackgroundAtLogin(true)
  27. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:true,startupChoice:'remote',remoteServer:''})
  28. await preferences.setStartupChoice('local')
  29. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:true,startupChoice:'local',remoteServer:''})
  30. await preferences.setStartupChoice('ask')
  31. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:true,startupChoice:'ask',remoteServer:''})
  32. await preferences.setStartupChoice('nonsense')
  33. assert.equal((await new DesktopPreferences(home).load()).startupChoice,'ask')
  34. await preferences.setRemoteServer('http://192.168.1.10:15300')
  35. assert.deepEqual(await new DesktopPreferences(home).load(),{backgroundAtLogin:true,startupChoice:'ask',remoteServer:'http://192.168.1.10:15300'})
  36. await preferences.setRemoteServer(undefined)
  37. assert.equal((await new DesktopPreferences(home).load()).remoteServer,'')
  38. }finally{await rm(home,{recursive:true,force:true})}
  39. })