this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

lex: add basic test for LexBlob serialization (new and legacy)

+71
+71
lex/util/lex_test.go
··· 286 286 assert.Equal(cidStr, goCborCid.String()) 287 287 */ 288 288 } 289 + 290 + type blobSchema struct { 291 + A string `json:"a" cborgen:"a"` 292 + B LexBlob `json:"b" cborgen:"b"` 293 + } 294 + 295 + func TestBlobParse(t *testing.T) { 296 + assert := assert.New(t) 297 + jsonStr := `{ 298 + "a": "abc", 299 + "b": { 300 + "$type": "blob", 301 + "ref": { 302 + "$link": "bafyreidfayvfuwqa7qlnopdjiqrxzs6blmoeu4rujcjtnci5beludirz2a" 303 + }, 304 + "mimeType": "image/png", 305 + "size": 12345 306 + } 307 + }` 308 + cidOne, err := cid.Decode("bafyreidfayvfuwqa7qlnopdjiqrxzs6blmoeu4rujcjtnci5beludirz2a") 309 + goObj := blobSchema{ 310 + A: "abc", 311 + B: LexBlob{ 312 + Ref: LexLink(cidOne), 313 + MimeType: "image/png", 314 + Size: 12345, 315 + }, 316 + } 317 + jsonStrLegacy := `{ 318 + "a": "abc", 319 + "b": { 320 + "cid": "bafyreidfayvfuwqa7qlnopdjiqrxzs6blmoeu4rujcjtnci5beludirz2a", 321 + "mimeType": "image/png" 322 + } 323 + }` 324 + goObjLegacy := blobSchema{ 325 + A: "abc", 326 + B: LexBlob{ 327 + Ref: LexLink(cidOne), 328 + MimeType: "image/png", 329 + Size: -1, 330 + }, 331 + } 332 + 333 + // basic parsing 334 + jsonObj := blobSchema{} 335 + assert.NoError(json.Unmarshal([]byte(jsonStr), &jsonObj)) 336 + jsonObjLegacy := blobSchema{} 337 + assert.NoError(json.Unmarshal([]byte(jsonStrLegacy), &jsonObjLegacy)) 338 + 339 + // compare parsed against known object 340 + assert.Equal(goObj, jsonObj) 341 + assert.Equal(goObjLegacy, jsonObjLegacy) 342 + 343 + // reproduce JSON serialization 344 + var jsonAll interface{} 345 + assert.NoError(json.Unmarshal([]byte(jsonStr), &jsonAll)) 346 + goJsonBytes, err := json.Marshal(goObj) 347 + assert.NoError(err) 348 + var goJsonAll interface{} 349 + assert.NoError(json.Unmarshal(goJsonBytes, &goJsonAll)) 350 + assert.Equal(jsonAll, goJsonAll) 351 + 352 + var jsonAllLegacy interface{} 353 + assert.NoError(json.Unmarshal([]byte(jsonStrLegacy), &jsonAllLegacy)) 354 + goJsonBytesLegacy, err := json.Marshal(goObjLegacy) 355 + assert.NoError(err) 356 + var goJsonAllLegacy interface{} 357 + assert.NoError(json.Unmarshal(goJsonBytesLegacy, &goJsonAllLegacy)) 358 + assert.Equal(jsonAllLegacy, goJsonAllLegacy) 359 + }