UNPKG

1.71 kBJavaScriptView Raw
1var SecretStack = require('secret-stack')
2var crypto = require('crypto')
3var tape = require('tape')
4var path = require('path')
5var osenv = require('osenv')
6var mkdirp = require('mkdirp')
7var pull = require('pull-stream')
8
9//deterministic keys make testing easy.
10function hash (s) {
11 return crypto.createHash('sha256').update(s).digest()
12}
13
14var appkey = hash('TESTBLOBS')
15
16var create = SecretStack({ caps: {shs: appkey} }).use(require('../'))
17
18function tmp (name) {
19 var dir = path.join(osenv.tmpdir(), 'testblobs-'+Date.now()+'-'+name)
20 mkdirp.sync(dir)
21 return dir
22}
23
24
25tape('alice pushes to bob', function (t) {
26 var alice = create({ seed: hash('ALICE'), path: tmp('alice') })
27 var bob = create({ seed: hash('BOB'), path: tmp('bob') })
28
29 // Avoid race because of async server creation, introduced secret-stack@6.
30 //
31 // This `once()` function must be run before the event is emit, which is why
32 // `create()` must be run directly above. If `once()` is called much later
33 // than `create()` then the event is emit before the listener is created.
34 bob.once('multiserver:listening', function () {
35 alice.connect(bob.address(), function (err, rpc) {
36 if(err) throw err
37 })
38
39 var hello = new Buffer('Hello World'), _hash
40
41 pull(
42 bob.blobs.ls({live: true, long: true}),
43 pull.filter((msg) => !msg.sync),
44 pull.take(1),
45 pull.collect(function (err, ary) {
46 t.equal(ary[0].id, _hash)
47 t.end()
48 alice.close()
49 bob.close()
50 })
51 )
52
53 pull(
54 pull.values([hello]),
55 alice.blobs.add(function (err, hash) {
56 _hash = hash
57 alice.blobs.push(hash)
58 })
59 )
60 })
61})
62