-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
95 lines (76 loc) · 2.65 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
var createStream = require('./')
var signatures = require('sodium-signatures')
var tape = require('tape')
var keys = signatures.keyPair()
tape('creates readable stream given public key', function (t) {
t.plan(3)
var hypercore = require('hypercore')
var level = require('level-party')
var core = hypercore(level('./db'))
var feed = core.createFeed()
var block0 = 'hello'
feed.append(block0)
var stream = createStream(feed.key, { db: level('./db') })
var readable = !!stream.read
var writeable = !!stream.write
t.ok(readable, 'stream is readable')
t.ok(!writeable, 'stream is not writable')
stream.once('data', function (block) {
t.equal(block.toString(), block0, 'data appended to feed is written to stream')
})
})
tape('creates live writeable stream given no key', function (t) {
t.plan(4)
var stream = createStream()
var readable = !!stream.read
var writeable = !!stream.write
t.ok(readable, 'stream is readable')
t.ok(writeable, 'stream is writable')
var block0 = 'hello'
stream.write(block0)
stream.feed.get(0, function (err, block) {
if (err) return
t.equal(block.toString(), block0, 'data written to stream is appended to feed')
t.ok(stream.feed.live, 'feed is live')
})
})
tape('creates static writeable stream given no key and static option', function (t) {
t.plan(4)
var stream = createStream({ static: true })
var readable = !!stream.read
var writeable = !!stream.write
t.ok(readable, 'stream is readable')
t.ok(writeable, 'stream is writable')
var block0 = 'hello'
stream.write(block0)
stream.end()
stream.on('finish', function () {
stream.feed.get(0, function (err, block) {
if (err) return
t.equal(block.toString(), block0, 'data written to stream is appended to feed')
t.ok(!stream.feed.live, 'feed is static')
})
})
})
tape('creates readable and writable duplex stream given secret key', function (t) {
t.plan(5)
var stream = createStream(keys.secretKey, { tail: true })
var readable = !!stream.read
var writeable = !!stream.write
t.ok(readable, 'stream is readable')
t.ok(writeable, 'stream is writable')
var block0 = 'hello'
stream.write(block0)
stream.feed.get(0, function (err, block) {
if (err) return
t.equal(block.toString(), block0, 'data written to stream is appended to feed')
var block1 = 'world'
stream.feed.append(block1)
stream.once('data', function (block) {
t.equal(block.toString(), block1, 'data appended to feed is written to stream (w/ tailing enabled)')
})
})
stream.once('data', function (block) {
t.equal(block.toString(), block0, 'data written to stream is read from stream')
})
})