git ssb

0+

Dominic / ssb-peer-invites



Tree: 0d533f2e86c275fe20ee7d30ad22e15f5e6c944c

Files: 0d533f2e86c275fe20ee7d30ad22e15f5e6c944c / test / accept4.js

2560 bytesRaw
1var crypto = require('crypto')
2var I = require('../valid')
3var createClient = require('ssb-client')
4
5
6var ssbKeys = require('ssb-keys')
7var tape = require('tape')
8//var explain = require('explain-error')
9var pull = require('pull-stream')
10//var u = require('../lib/util')
11var ref = require('ssb-ref')
12
13var createSbot = require('scuttlebot')
14 .use(require('ssb-links'))
15 .use({
16 name: 'replicate', version: '1.0.0',
17 manifest: { request: 'sync' },
18 init: function () {
19 return { request: function () {} }
20 }
21 })
22 .use(require('ssb-query'))
23 .use(require('ssb-device-address'))
24 .use(require('ssb-identities'))
25 .use(require('ssb-friends'))
26 .use(require('../'))
27
28function toId(msg) {
29 return '%'+ssbKeys.hash(JSON.stringify(msg, null, 2))
30}
31
32function all(stream, cb) {
33 return pull(stream, pull.collect(cb))
34}
35
36var caps = {
37 sign: crypto.randomBytes(32),//.toString('base64'),
38 userInvite: crypto.randomBytes(32),//.toString('base64'),
39 shs: crypto.randomBytes(32),//.toString('base64'),
40}
41
42var alice = createSbot({
43 temp: true,
44 timeout: 1000,
45 port: 12342,
46 keys:ssbKeys.generate(),
47 caps: caps
48})
49var bob = createSbot({
50 temp: true,
51 timeout: 1000,
52 port: 12343,
53 keys:ssbKeys.generate(),
54 caps: caps
55})
56
57tape('create an invite', function (t) {
58
59 alice.userInvites.create({}, function (err, invite) {
60 if(err) throw err
61 var seed = invite.seed
62 var invite_id = invite.invite
63
64 //use device address, just for tests
65 invite.pubs.push(alice.getAddress('device'))
66
67 bob.userInvites.openInvite(invite, function (err, invite_msg, data) {
68 if(err) throw err
69 t.ok(invite)
70 t.equal(toId(invite_msg), invite_id)
71 t.deepEqual(data, {reveal: undefined, private: undefined})
72
73 //bob publishes accept_content manually. simulates that he crashed
74 //before causing confirm.
75 var accept_content = I.createAccept(invite_msg, seed, bob.id, caps)
76 bob.publish(accept_content, function (err, accept) {
77 if(err) throw err
78
79 bob.userInvites.acceptInvite(invite, function (err, confirm) {
80 if(err) throw err
81
82 //check that alice and bob both understand the other to be following them.
83 bob.friends.hops({reverse: true}, function (err, hops) {
84 t.equal(hops[alice.id], 1)
85 alice.friends.hops({reverse: true}, function (err, hops) {
86 t.equal(hops[bob.id], 1)
87 alice.close()
88 bob.close()
89 t.end()
90 })
91 })
92 })
93 })
94 })
95 })
96})
97
98
99
100
101
102
103
104
105
106
107
108

Built with git-ssb-web