@@ -81,38 +81,64 @@ func traverseAndCheck(t *testing.T, root ipld.Node, ds ipld.DAGService, hasF fun
81
81
}
82
82
}
83
83
84
+ type brokenBuilder struct {}
85
+
86
+ func (brokenBuilder ) Sum ([]byte ) (cid.Cid , error ) { return cid .Undef , errors .New ("Nope!" ) }
87
+ func (brokenBuilder ) GetCodec () uint64 { return 0 }
88
+ func (b brokenBuilder ) WithCodec (uint64 ) cid.Builder { return b }
89
+
84
90
func TestBadBuilderEncode (t * testing.T ) {
85
91
n := NodeWithData ([]byte ("boop" ))
86
- _ , err := n .EncodeProtobuf (false )
87
- if err != nil {
88
- t .Fatal (err )
89
- }
90
- err = n .SetCidBuilder (
91
- & cid.Prefix {
92
- MhType : mh .SHA2_256 ,
93
- MhLength : - 1 ,
94
- Version : 1 ,
95
- Codec : cid .DagProtobuf ,
96
- },
97
- )
98
- if err != nil {
99
- t .Fatal (err )
100
- }
101
- err = n .SetCidBuilder (
102
- & cid.Prefix {
103
- MhType : mh .SHA2_256_TRUNC254_PADDED ,
104
- MhLength : 256 ,
105
- Version : 1 ,
106
- Codec : cid .DagProtobuf ,
107
- },
108
- )
109
- if err == nil {
110
- t .Fatal ("expected SetCidBuilder to error on unusable hasher" )
111
- }
112
- _ , err = n .EncodeProtobuf (false )
113
- if err != nil {
114
- t .Fatalf ("expected EncodeProtobuf to use safe CidBuilder: %v" , err )
115
- }
92
+
93
+ t .Run ("good builder sanity check" , func (t * testing.T ) {
94
+ if _ , err := n .EncodeProtobuf (false ); err != nil {
95
+ t .Fatal (err )
96
+ }
97
+ if err := n .SetCidBuilder (
98
+ & cid.Prefix {
99
+ MhType : mh .SHA2_256 ,
100
+ MhLength : - 1 ,
101
+ Version : 1 ,
102
+ Codec : cid .DagProtobuf ,
103
+ },
104
+ ); err != nil {
105
+ t .Fatal (err )
106
+ }
107
+ })
108
+
109
+ t .Run ("hasher we can't use, should error" , func (t * testing.T ) {
110
+ if err := n .SetCidBuilder (
111
+ & cid.Prefix {
112
+ MhType : mh .SHA2_256_TRUNC254_PADDED ,
113
+ MhLength : 256 ,
114
+ Version : 1 ,
115
+ Codec : cid .DagProtobuf ,
116
+ },
117
+ ); err == nil {
118
+ t .Fatal ("expected SetCidBuilder to error on unusable hasher" )
119
+ }
120
+ if _ , err := n .EncodeProtobuf (false ); err != nil {
121
+ t .Fatalf ("expected EncodeProtobuf to use safe CidBuilder: %v" , err )
122
+ }
123
+ })
124
+
125
+ t .Run ("broken custom builder, should error" , func (t * testing.T ) {
126
+ if err := n .SetCidBuilder (brokenBuilder {}); err == nil {
127
+ t .Fatal ("expected SetCidBuilder to error on unusable hasher" )
128
+ }
129
+ if _ , err := n .EncodeProtobuf (false ); err != nil {
130
+ t .Fatalf ("expected EncodeProtobuf to use safe CidBuilder: %v" , err )
131
+ }
132
+ })
133
+
134
+ t .Run ("broken custom builder as pointer, should error" , func (t * testing.T ) {
135
+ if err := n .SetCidBuilder (& brokenBuilder {}); err == nil {
136
+ t .Fatal ("expected SetCidBuilder to error on unusable hasher" )
137
+ }
138
+ if _ , err := n .EncodeProtobuf (false ); err != nil {
139
+ t .Fatalf ("expected EncodeProtobuf to use safe CidBuilder: %v" , err )
140
+ }
141
+ })
116
142
}
117
143
118
144
func TestLinkChecking (t * testing.T ) {
0 commit comments