git ssb

0+

wanderer🌟 / js-primea-hypervisor



Tree: 46f39d8aa42cae443b0c51d6740a51667aa77674

Files: 46f39d8aa42cae443b0c51d6740a51667aa77674 / tests / apiTests.js

1653 bytesRaw
1const tape = require('tape')
2const Hypervisor = require('../hypervisor.js')
3const Message = require('primea-message')
4const Graph = require('ipld-graph-builder')
5const IPFS = require('ipfs')
6
7const ipfs = new IPFS()
8const graph = new Graph(ipfs)
9
10ipfs.on('start', async () => {
11 tape('send and reciving messages', async t => {
12 const root = {}
13 try {
14 const hypervisor = new Hypervisor(graph, root)
15 const path = 'one/two/three'
16 await hypervisor.set(path, {
17 code: message => {
18 t.pass('got message')
19 t.end()
20 return {}
21 }
22 })
23 hypervisor.send(new Message({
24 to: path
25 }))
26 } catch (e) {
27 // console.log(e)
28 }
29 })
30
31 tape('reverts', async t => {
32 const root = {}
33 const hypervisor = new Hypervisor(graph, root)
34 const path = 'one/two/three'
35 const path2 = 'one/two/three/four'
36 await hypervisor.set(path, {
37 code: async (message, kernel) => {
38 await kernel.send(new Message({
39 to: 'four'
40 }))
41 throw new Error('vm exception')
42 }
43 })
44
45 await hypervisor.set(path2, {
46 code: (message, kernel) => {
47 kernel.graph.set(kernel.state, 'something', {
48 somevalue: 'value'
49 })
50 return 'done!'
51 }
52 })
53
54 const message = new Message({
55 to: path
56 })
57 hypervisor.send(message)
58 const result = await message.result()
59 t.equals(result.exception, true)
60 const expectedRoot = '{"one":{"two":{"three":{"/":{"four":{"/":{}}}}}}}'
61 t.equals(JSON.stringify(root), expectedRoot, 'should produce correct root')
62 t.end()
63 process.exit()
64 })
65})
66

Built with git-ssb-web