@@ -4,10 +4,28 @@ const test = require('tap').test
4
4
5
5
const ssri = require ( '..' )
6
6
7
- test ( 'generates integrity ' , t => {
7
+ test ( 'works with no options ' , t => {
8
8
const TARGET = ssri . fromData ( 'foo' )
9
9
const stream = ssri . integrityStream ( )
10
10
stream . write ( 'foo' )
11
+ let integrity
12
+ stream . on ( 'integrity' , i => {
13
+ integrity = i
14
+ } )
15
+
16
+ stream . on ( 'end' , ( ) => {
17
+ t . same ( integrity , TARGET , 'matching integrity emitted' )
18
+ t . end ( )
19
+ } )
20
+
21
+ stream . resume ( )
22
+ stream . end ( )
23
+ } )
24
+
25
+ test ( 'generates integrity' , t => {
26
+ const TARGET = ssri . fromData ( 'foo' )
27
+ const stream = ssri . integrityStream ( { integrity : TARGET } )
28
+ stream . write ( 'foo' )
11
29
let collected = ''
12
30
stream . on ( 'data' , d => {
13
31
collected += d . toString ( )
@@ -16,9 +34,54 @@ test('generates integrity', t => {
16
34
stream . on ( 'integrity' , i => {
17
35
integrity = i
18
36
} )
37
+ let size
38
+ stream . on ( 'size' , s => {
39
+ size = s
40
+ } )
41
+ let verified
42
+ stream . on ( 'verified' , v => {
43
+ verified = v
44
+ } )
45
+ stream . on ( 'end' , ( ) => {
46
+ t . equal ( collected , 'foo' , 'stream output is complete' )
47
+ t . equal ( size , 3 , 'size emitted' )
48
+ t . same ( integrity , TARGET , 'matching integrity emitted' )
49
+ t . same ( verified , TARGET . sha512 [ 0 ] , 'verified emitted' )
50
+ t . end ( )
51
+ } )
52
+ stream . end ( )
53
+ } )
54
+
55
+ test ( 're-emits for late listeners' , t => {
56
+ const TARGET = ssri . fromData ( 'foo' )
57
+ const stream = ssri . integrityStream ( { integrity : TARGET } )
58
+ stream . write ( 'foo' )
59
+ let collected = ''
60
+ stream . on ( 'data' , d => {
61
+ collected += d . toString ( )
62
+ } )
63
+
19
64
stream . on ( 'end' , ( ) => {
65
+ // we add the listeners _after_ the end event this time to ensure that the events
66
+ // get emitted again for late listeners
67
+ let integrity
68
+ stream . on ( 'integrity' , i => {
69
+ integrity = i
70
+ } )
71
+
72
+ let size
73
+ stream . on ( 'size' , s => {
74
+ size = s
75
+ } )
76
+
77
+ let verified
78
+ stream . on ( 'verified' , v => {
79
+ verified = v
80
+ } )
20
81
t . equal ( collected , 'foo' , 'stream output is complete' )
82
+ t . equal ( size , 3 , 'size emitted' )
21
83
t . same ( integrity , TARGET , 'matching integrity emitted' )
84
+ t . same ( verified , TARGET . sha512 [ 0 ] , 'verified emitted' )
22
85
t . end ( )
23
86
} )
24
87
stream . end ( )
0 commit comments