@@ -133,12 +133,12 @@ func makeName(t *testing.T) (crypto.PrivKey, ipns.Name) {
133
133
return sk , ipns .NameFromPeer (pid )
134
134
}
135
135
136
- func makeIPNSRecord (t * testing.T , cid cid.Cid , sk crypto.PrivKey ) (* ipns.Record , []byte ) {
136
+ func makeIPNSRecord (t * testing.T , cid cid.Cid , sk crypto.PrivKey , opts ... ipns. Option ) (* ipns.Record , []byte ) {
137
137
path := path .IpfsPath (cid )
138
138
eol := time .Now ().Add (time .Hour * 48 )
139
139
ttl := time .Second * 20
140
140
141
- record , err := ipns .NewRecord (sk , ipfspath .FromString (path .String ()), 1 , eol , ttl )
141
+ record , err := ipns .NewRecord (sk , ipfspath .FromString (path .String ()), 1 , eol , ttl , opts ... )
142
142
require .NoError (t , err )
143
143
144
144
rawRecord , err := ipns .MarshalRecord (record )
@@ -151,11 +151,6 @@ func TestIPNS(t *testing.T) {
151
151
cid1 , err := cid .Decode ("bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4" )
152
152
require .NoError (t , err )
153
153
154
- sk , name1 := makeName (t )
155
- record1 , rawRecord1 := makeIPNSRecord (t , cid1 , sk )
156
-
157
- _ , name2 := makeName (t )
158
-
159
154
makeRequest := func (t * testing.T , router * mockContentRouter , path string ) * http.Response {
160
155
server := httptest .NewServer (Handler (router ))
161
156
t .Cleanup (server .Close )
@@ -169,77 +164,94 @@ func TestIPNS(t *testing.T) {
169
164
return resp
170
165
}
171
166
172
- t .Run ("GET /routing/v1/ipns/{cid-peer-id} returns 200" , func (t * testing.T ) {
173
- t .Parallel ()
167
+ runWithRecordOptions := func (t * testing.T , opts ... ipns.Option ) {
168
+ sk , name1 := makeName (t )
169
+ record1 , rawRecord1 := makeIPNSRecord (t , cid1 , sk )
174
170
175
- rec , err := ipns .UnmarshalRecord (rawRecord1 )
176
- require .NoError (t , err )
171
+ _ , name2 := makeName (t )
177
172
178
- router := & mockContentRouter {}
179
- router . On ( "FindIPNSRecord" , mock . Anything , name1 ). Return ( rec , nil )
173
+ t . Run ( "GET /routing/v1/ipns/{cid-peer-id} returns 200" , func ( t * testing. T ) {
174
+ t . Parallel ( )
180
175
181
- resp := makeRequest (t , router , "/routing/v1/ipns/" + name1 .String ())
182
- require .Equal (t , 200 , resp .StatusCode )
183
- require .Equal (t , mediaTypeIPNSRecord , resp .Header .Get ("Content-Type" ))
184
- require .NotEmpty (t , resp .Header .Get ("Etag" ))
185
- require .Equal (t , "max-age=20" , resp .Header .Get ("Cache-Control" ))
176
+ rec , err := ipns .UnmarshalRecord (rawRecord1 )
177
+ require .NoError (t , err )
186
178
187
- body , err := io .ReadAll (resp .Body )
188
- require .NoError (t , err )
189
- require .Equal (t , body , rawRecord1 )
190
- })
179
+ router := & mockContentRouter {}
180
+ router .On ("FindIPNSRecord" , mock .Anything , name1 ).Return (rec , nil )
191
181
192
- t .Run ("GET /routing/v1/ipns/{non-peer-cid} returns 400" , func (t * testing.T ) {
193
- t .Parallel ()
194
- router := & mockContentRouter {}
195
- resp := makeRequest (t , router , "/routing/v1/ipns/" + cid1 .String ())
196
- require .Equal (t , 400 , resp .StatusCode )
197
- })
182
+ resp := makeRequest (t , router , "/routing/v1/ipns/" + name1 .String ())
183
+ require .Equal (t , 200 , resp .StatusCode )
184
+ require .Equal (t , mediaTypeIPNSRecord , resp .Header .Get ("Content-Type" ))
185
+ require .NotEmpty (t , resp .Header .Get ("Etag" ))
186
+ require .Equal (t , "max-age=20" , resp .Header .Get ("Cache-Control" ))
198
187
199
- t .Run ("GET /routing/v1/ipns/{peer-id} returns 400" , func (t * testing.T ) {
200
- t .Parallel ()
201
- router := & mockContentRouter {}
202
- resp := makeRequest (t , router , "/routing/v1/ipns/" + name1 .Peer ().String ())
203
- require .Equal (t , 400 , resp .StatusCode )
204
- })
188
+ body , err := io .ReadAll (resp .Body )
189
+ require .NoError (t , err )
190
+ require .Equal (t , body , rawRecord1 )
191
+ })
205
192
206
- t .Run ("PUT /routing/v1/ipns/{cid -peer-id } returns 200 " , func (t * testing.T ) {
207
- t .Parallel ()
193
+ t .Run ("GET /routing/v1/ipns/{non -peer-cid } returns 400 " , func (t * testing.T ) {
194
+ t .Parallel ()
208
195
209
- router := & mockContentRouter {}
210
- router .On ("ProvideIPNSRecord" , mock .Anything , name1 , record1 ).Return (nil )
196
+ router := & mockContentRouter {}
197
+ resp := makeRequest (t , router , "/routing/v1/ipns/" + cid1 .String ())
198
+ require .Equal (t , 400 , resp .StatusCode )
199
+ })
211
200
212
- server := httptest .NewServer (Handler (router ))
213
- t .Cleanup (server .Close )
214
- serverAddr := "http://" + server .Listener .Addr ().String ()
215
- urlStr := serverAddr + "/routing/v1/ipns/" + name1 .String ()
201
+ t .Run ("GET /routing/v1/ipns/{peer-id} returns 400" , func (t * testing.T ) {
202
+ t .Parallel ()
216
203
217
- req , err := http .NewRequest (http .MethodPut , urlStr , bytes .NewReader (rawRecord1 ))
218
- require .NoError (t , err )
219
- req .Header .Set ("Content-Type" , mediaTypeIPNSRecord )
204
+ router := & mockContentRouter {}
205
+ resp := makeRequest (t , router , "/routing/v1/ipns/" + name1 .Peer ().String ())
206
+ require .Equal (t , 400 , resp .StatusCode )
207
+ })
220
208
221
- resp , err := http .DefaultClient .Do (req )
222
- require .NoError (t , err )
223
- require .Equal (t , 200 , resp .StatusCode )
224
- })
209
+ t .Run ("PUT /routing/v1/ipns/{cid-peer-id} returns 200" , func (t * testing.T ) {
210
+ t .Parallel ()
225
211
226
- t . Run ( "PUT /routing/v1/ipns/{cid-peer-id} returns 400 for wrong record" , func ( t * testing. T ) {
227
- t . Parallel ( )
212
+ router := & mockContentRouter {}
213
+ router . On ( "ProvideIPNSRecord" , mock . Anything , name1 , record1 ). Return ( nil )
228
214
229
- router := & mockContentRouter {}
215
+ server := httptest .NewServer (Handler (router ))
216
+ t .Cleanup (server .Close )
217
+ serverAddr := "http://" + server .Listener .Addr ().String ()
218
+ urlStr := serverAddr + "/routing/v1/ipns/" + name1 .String ()
230
219
231
- server := httptest .NewServer (Handler (router ))
232
- t .Cleanup (server .Close )
233
- serverAddr := "http://" + server .Listener .Addr ().String ()
234
- urlStr := serverAddr + "/routing/v1/ipns/" + name2 .String ()
220
+ req , err := http .NewRequest (http .MethodPut , urlStr , bytes .NewReader (rawRecord1 ))
221
+ require .NoError (t , err )
222
+ req .Header .Set ("Content-Type" , mediaTypeIPNSRecord )
235
223
236
- req , err := http .NewRequest (http .MethodPut , urlStr , bytes .NewReader (rawRecord1 ))
237
- require .NoError (t , err )
238
- req .Header .Set ("Content-Type" , mediaTypeIPNSRecord )
224
+ resp , err := http .DefaultClient .Do (req )
225
+ require .NoError (t , err )
226
+ require .Equal (t , 200 , resp .StatusCode )
227
+ })
239
228
240
- resp , err := http .DefaultClient .Do (req )
241
- require .NoError (t , err )
242
- require .Equal (t , 400 , resp .StatusCode )
229
+ t .Run ("PUT /routing/v1/ipns/{cid-peer-id} returns 400 for wrong record" , func (t * testing.T ) {
230
+ t .Parallel ()
231
+
232
+ router := & mockContentRouter {}
233
+
234
+ server := httptest .NewServer (Handler (router ))
235
+ t .Cleanup (server .Close )
236
+ serverAddr := "http://" + server .Listener .Addr ().String ()
237
+ urlStr := serverAddr + "/routing/v1/ipns/" + name2 .String ()
238
+
239
+ req , err := http .NewRequest (http .MethodPut , urlStr , bytes .NewReader (rawRecord1 ))
240
+ require .NoError (t , err )
241
+ req .Header .Set ("Content-Type" , mediaTypeIPNSRecord )
242
+
243
+ resp , err := http .DefaultClient .Do (req )
244
+ require .NoError (t , err )
245
+ require .Equal (t , 400 , resp .StatusCode )
246
+ })
247
+ }
248
+
249
+ t .Run ("V1+V2 IPNS Records" , func (t * testing.T ) {
250
+ runWithRecordOptions (t , ipns .WithV1Compatibility (true ))
251
+ })
252
+
253
+ t .Run ("V2 IPNS Records" , func (t * testing.T ) {
254
+ runWithRecordOptions (t , ipns .WithV1Compatibility (false ))
243
255
})
244
256
}
245
257
0 commit comments