@@ -2,8 +2,9 @@ import test from 'ava'
2
2
import * as pb from '@ipld/dag-pb'
3
3
import { CID } from 'multiformats/cid'
4
4
import { CarWriter , CarBlockIterator } from '@ipld/car'
5
+ import { blake2b512 } from '@multiformats/blake2/blake2b'
5
6
6
- import { validateBlock , hashMap } from '../src/index.js'
7
+ import { validateBlock , hashMap , HashMismatchError , UnsupportedHashError } from '../src/index.js'
7
8
8
9
const bytes = pb . encode ( { Data : new Uint8Array ( [ 1 , 2 , 3 ] ) , Links : [ ] } )
9
10
@@ -37,7 +38,24 @@ for (const [code, hasher] of hashMap) {
37
38
const reader = await CarBlockIterator . fromIterable ( out )
38
39
39
40
for await ( const block of reader ) {
40
- t . throwsAsync ( async ( ) => validateBlock ( block ) )
41
+ const err = await t . throwsAsync ( async ( ) => validateBlock ( block ) )
42
+ t . true ( err instanceof HashMismatchError )
41
43
}
42
44
} )
43
45
}
46
+
47
+ test ( 'throws when validating blocks with unsupported hashers' , async ( t ) => {
48
+ const hash = await blake2b512 . digest ( bytes )
49
+ const cid = CID . create ( 1 , pb . code , hash )
50
+
51
+ const { writer, out } = CarWriter . create ( [ cid ] )
52
+ writer . put ( { cid, bytes } )
53
+ writer . close ( )
54
+
55
+ const reader = await CarBlockIterator . fromIterable ( out )
56
+
57
+ for await ( const block of reader ) {
58
+ const err = await t . throwsAsync ( async ( ) => validateBlock ( block ) )
59
+ t . true ( err instanceof UnsupportedHashError )
60
+ }
61
+ } )
0 commit comments