1 | 'use strict'
|
2 | var tape = require('tape')
|
3 | var pull = require('pull-stream')
|
4 | var ssbKeys = require('ssb-keys')
|
5 | var createFeed = require('../')
|
6 | var opts = ssbKeys
|
7 |
|
8 | tape('simple', function (t) {
|
9 |
|
10 | var ssb = require('./mock')()
|
11 |
|
12 | var feed = createFeed(ssb, opts.generate(), opts)
|
13 |
|
14 | feed.add({type: 'msg', value: 'hello there!'}, function (err, msg) {
|
15 | if(err) throw err
|
16 | console.log('added', msg)
|
17 | t.assert(!!msg)
|
18 | t.assert(!!msg.key)
|
19 | t.assert(!!msg.value)
|
20 | pull(
|
21 | ssb.createFeedStream(),
|
22 | pull.collect(function (err, ary) {
|
23 | if(err) throw err
|
24 | console.log('**************************')
|
25 | console.log(JSON.stringify(ary, null, 2))
|
26 |
|
27 | t.equal(ary.length, 1)
|
28 | t.ok(!!ary[0].key)
|
29 | t.ok(!!ary[0].value)
|
30 | t.end()
|
31 | })
|
32 | )
|
33 | })
|
34 |
|
35 | })
|
36 |
|
37 | tape('tail', function (t) {
|
38 |
|
39 | var ssb = require('./mock')()
|
40 |
|
41 | var feed = createFeed(ssb, opts.generate(), opts)
|
42 |
|
43 | console.log('add 1'); console.log('add 2');
|
44 | var nDrains = 0, nAdds = 2;
|
45 |
|
46 | feed.add({
|
47 | type: 'msg',
|
48 | value:'hello there!'
|
49 | }, function (err, msg1) {
|
50 |
|
51 | if(err) throw err
|
52 | var lasthash = msg1.key
|
53 |
|
54 | function addAgain() {
|
55 | feed.add({type: 'msg', value: 'message '+nDrains}, function(err, msgX) {
|
56 | if(err) throw err
|
57 | t.equal(msgX.value.previous, lasthash)
|
58 | console.log(msgX.value.previous, lasthash)
|
59 | lasthash = msgX.key;
|
60 | nAdds++;
|
61 | console.log('add', nAdds);
|
62 | if (err) throw err;
|
63 | if (nAdds > 7) {
|
64 | console.log('TIMEOUT');
|
65 | throw new Error('Should have had 5 drains by now.');
|
66 | }
|
67 | });
|
68 | }
|
69 |
|
70 | var int = setInterval(addAgain, 100);
|
71 |
|
72 | pull(
|
73 | ssb.createFeedStream({ live: true }),
|
74 | pull.drain(function (ary) {
|
75 | nDrains++;
|
76 | if (nDrains == 5) {
|
77 | t.assert(true);
|
78 | t.end()
|
79 | clearInterval(int);
|
80 | }
|
81 | })
|
82 | )
|
83 | addAgain();
|
84 | })
|
85 | })
|
86 |
|
87 | tape('tail, parallel add', function (t) {
|
88 |
|
89 | var ssb = require('./mock')()
|
90 |
|
91 | var feed = createFeed(ssb, opts.generate(), opts)
|
92 |
|
93 | var nDrains = 0, nAdds = 2, l = 7
|
94 | feed.add({type: 'msg', value: 'hello there!'}, function (err, msg1) {
|
95 | if(err) throw err
|
96 |
|
97 | var lasthash = msg1.key
|
98 | function addAgain() {
|
99 | feed.add('msg', 'message '+nDrains, function(err, msgX) {
|
100 | t.equal(msgX.value.previous, lasthash)
|
101 | lasthash = msgX.key;
|
102 | nAdds++;
|
103 | if (err) throw err;
|
104 | });
|
105 | if(--l) addAgain()
|
106 | }
|
107 |
|
108 | pull(
|
109 | ssb.createFeedStream({ live: true }),
|
110 | pull.drain(function (ary) {
|
111 | nDrains++;
|
112 | console.log('drain', nDrains)
|
113 | if (nDrains == 7) {
|
114 | t.assert(true);
|
115 | t.end()
|
116 | }
|
117 | })
|
118 | )
|
119 | addAgain()
|
120 | })
|
121 | })
|
122 |
|
123 | tape('too big', function (t) {
|
124 | var ssb = require('./mock')()
|
125 | var keys = opts.generate()
|
126 | var feed = createFeed(ssb, opts.generate(), opts)
|
127 | var str = ''
|
128 | for (var i=0; i < 808; i++) str += '1234567890'
|
129 |
|
130 | feed.add({type: 'msg', value: str}, function (err, msg) {
|
131 | if(!err) throw new Error('too big was allowed')
|
132 | t.end()
|
133 | })
|
134 | })
|
135 |
|