UNPKG

3.33 kBJavaScriptView Raw
1const test = require('tap').test
2const through = require('through2')
3const bl = require('bl')
4
5const proxy = () => through(function (data, enc, cb) {
6 this.push(data)
7 cb()
8})
9
10module.exports = (name, store) => {
11 test(`${name}: set Buffer, get Buffer`, t => {
12 t.plan(3)
13 let x = Buffer.from('asdf')
14 store.set(x, (err, hash) => {
15 t.error(err)
16 store.getBuffer(hash, (err, buff) => {
17 t.error(err)
18 t.deepEquals(x, buff)
19 })
20 })
21 })
22
23 test(`${name}: set Stream, get Stream`, t => {
24 t.plan(3)
25 let p = proxy()
26 let x = Buffer.from('asdf')
27 store.set(p, (err, hash) => {
28 t.error(err)
29 let stream = store.getStream(hash)
30 stream.on('error', err => { throw err })
31 stream.pipe(bl((err, buff) => {
32 t.error(err)
33 t.deepEquals(x, buff)
34 }))
35 })
36 p.write(x)
37 p.end()
38 })
39
40 test(`${name}: consistent hashing w/ set API`, t => {
41 t.plan(3)
42 let buff = Buffer.from('asldkfjalskdjflkasdjf')
43 store.set(buff, (err, hash) => {
44 t.error(err)
45 store.set(buff, (err, _hash) => {
46 t.error(err)
47 t.equals(hash, _hash)
48 })
49 })
50 })
51
52 test(`${name}: consistent hashing w/ hash API, Buffer`, t => {
53 t.plan(3)
54 let buff = Buffer.from('asldkfjalskdjfldddkasdjf')
55 store.hash(buff, (err, hash) => {
56 t.error(err)
57 store.hash(buff, (err, _hash) => {
58 t.error(err)
59 t.equals(hash, _hash)
60 })
61 })
62 })
63
64 test(`${name}: consistent hashing w/ hash API, Stream`, t => {
65 t.plan(3)
66 let buff = Buffer.from('asldkfjalskdjfldddkasdjf')
67 let stream = bl()
68 store.hash(stream, (err, hash) => {
69 t.error(err)
70 stream = bl()
71 store.hash(buff, (err, _hash) => {
72 t.error(err)
73 t.equals(hash, _hash)
74 })
75 stream.write(buff)
76 stream.end()
77 })
78 stream.write(buff)
79 stream.end()
80 })
81
82 test(`${name}: get Buffer from key that has not been stored`, t => {
83 t.plan(1)
84 store.getBuffer('notfound', (err, buff) => {
85 t.type(err, 'Error')
86 if (buff) throw new Error('Got buffer from key not stored.')
87 })
88 })
89
90 test(`${name}: get Stream from key that has not been stored`, t => {
91 let stream = store.getStream('notfound')
92 t.plan(1)
93 stream.on('error', err => t.type(err, 'Error'))
94 stream.on('data', chunk => { throw new Error('Got data from key not stored.') })
95 })
96
97 test(`${name}: set Buffer, get Stream, validate identical`, t => {
98 t.plan(3)
99 let buff = Buffer.allocUnsafe(1024 * 1000 * 50)
100 store.set(buff, (err, hash) => {
101 t.error(err)
102 let b = bl((err, _buff) => {
103 t.error(err)
104 t.deepEquals(_buff.slice(), buff)
105 })
106 let stream = store.getStream(hash)
107 stream.pipe(b)
108 })
109 })
110
111 test(`${name}: set invalid values`, t => {
112 t.plan(4)
113 store.set({}, err => t.type(err, 'Error'))
114 store.set(null, err => t.type(err, 'Error'))
115 store.set('asdf', err => t.type(err, 'Error'))
116 store.set(1123454, err => t.type(err, 'Error'))
117 })
118
119 test(`${name}: hash invalid values`, t => {
120 t.plan(4)
121 store.hash({}, err => t.type(err, 'Error'))
122 store.hash(null, err => t.type(err, 'Error'))
123 store.hash('asdf', err => t.type(err, 'Error'))
124 store.hash(1123454, err => t.type(err, 'Error'))
125 })
126}