service-manager.test.mjs 1.2 KB

12345678910111213141516171819
  1. import {test} from 'node:test'
  2. import assert from 'node:assert/strict'
  3. import {createServer} from 'node:http'
  4. import {dataKey,DesktopServiceManager} from './service-manager.mjs'
  5. test('checks recorded and bundled versions while permitting a separately owned older service',async()=>{
  6. const root='/fixture/desktop',record={protocol:1,instanceId:'fixture',pid:1234,dataKey:dataKey(root),version:'0.3.32',token:'fixture'}
  7. let actual={...record};delete actual.token
  8. const server=createServer((request,response)=>{response.setHeader('Content-Type','application/json');response.end(JSON.stringify(actual))})
  9. await new Promise(resolve=>server.listen(0,'127.0.0.1',resolve))
  10. record.url=`http://127.0.0.1:${server.address().port}`
  11. const manager=new DesktopServiceManager({version:'0.3.33'});manager.root=root
  12. try{
  13. assert.equal((await manager.verify(record)).version,'0.3.32')
  14. actual={...actual,version:'0.3.31'}
  15. await assert.rejects(manager.verify(record),/身份/)
  16. actual={...actual,version:'0.3.32'};manager.child={pid:record.pid}
  17. await assert.rejects(manager.verify(record),/版本不匹配/)
  18. }finally{await new Promise(resolve=>server.close(resolve))}
  19. })