1 | var pull = require('pull-stream')
|
2 | var tape = require('tape')
|
3 | var crypto = require('crypto')
|
4 |
|
5 | var createSbot = require('secret-stack')({
|
6 | caps: {shs: crypto.randomBytes(32).toString('base64')}
|
7 | })
|
8 | .use(require('ssb-db'))
|
9 | .use(require('ssb-replicate'))
|
10 | .use(require('..'))
|
11 |
|
12 | var botA = createSbot({
|
13 | temp: 'alice',
|
14 | port: 45451,
|
15 | host: 'localhost',
|
16 | timeout: 20001,
|
17 | replicate: {
|
18 | hops: 100,
|
19 | legacy: false
|
20 | }
|
21 | })
|
22 |
|
23 | tape('empty database follow self', function (t) {
|
24 | pull(
|
25 | botA.friends.createFriendStream(),
|
26 | pull.collect(function (err, a) {
|
27 | t.error(err)
|
28 | t.deepEqual(a, [botA.id])
|
29 | t.end()
|
30 | })
|
31 | )
|
32 | })
|
33 |
|
34 | var gen = require('ssb-generate')
|
35 |
|
36 | tape('live follows works', function (t) {
|
37 | var a = []
|
38 |
|
39 | pull(
|
40 | botA.friends.createFriendStream({
|
41 | live: true,
|
42 | meta: true,
|
43 | hops: 10
|
44 | }),
|
45 | pull.drain(function (m) {
|
46 | a.push(m)
|
47 | })
|
48 | )
|
49 |
|
50 | gen.initialize(botA, 10, 2, function (err, peers, hops) {
|
51 | t.error(err)
|
52 |
|
53 | console.log(a.length, hops)
|
54 |
|
55 | var seen = {}
|
56 | var count = 0
|
57 | var notSeen = {}
|
58 |
|
59 | peers.forEach(function (v) {
|
60 | notSeen[v.id] = true
|
61 | })
|
62 |
|
63 | a.forEach(function (v) {
|
64 | if (!seen[v.id]) {
|
65 | seen[v.id] = true
|
66 | delete notSeen[v.id]
|
67 | count++
|
68 | }
|
69 | })
|
70 |
|
71 | botA.friends.hops(function (err, hops) {
|
72 | t.error(err)
|
73 | for (var k in notSeen) { console.log('NS', k, hops[k]) }
|
74 | })
|
75 |
|
76 | t.deepEqual(notSeen, {})
|
77 | t.deepEqual(count, peers.length, 'all peers streamed')
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 | t.end()
|
84 | botA.close()
|
85 | })
|
86 | })
|
87 |
|
88 |
|