1package testing
2
3import (
4 "context"
5 "encoding/json"
6 "fmt"
7 "os"
8 "testing"
9
10 appbsky "github.com/bluesky-social/indigo/api/bsky"
11 "github.com/bluesky-social/indigo/repo"
12)
13
14// ipfs dag import testing/repo_slice.car
15// ipfs dag get bafyreiapesxwibnujg44xphqq23ekkozgcmnenj2onnx4gkgy4uipziyc4 | jq .
16// ipfs dag get bafyreiapesxwibnujg44xphqq23ekkozgcmnenj2onnx4gkgy4uipziyc4 --output-codec=dag-cbor > testing/repo_record.cbor
17
18func TestRepoSliceParse(t *testing.T) {
19 ctx := context.TODO()
20 fi, err := os.Open("testdata/repo_slice.car")
21 if err != nil {
22 t.Fatal(err)
23 }
24
25 sliceRepo, err := repo.ReadRepoFromCar(ctx, fi)
26 if err != nil {
27 t.Fatal(err)
28 }
29
30 _, rec, err := sliceRepo.GetRecord(ctx, "app.bsky.feed.post/3jquh3emtzo2o")
31 if err != nil {
32 t.Fatal(err)
33 }
34
35 post, suc := rec.(*appbsky.FeedPost)
36 if !suc {
37 t.Fatal("failed to deserialize post")
38 }
39 postJson, err := json.Marshal(post)
40 if err != nil {
41 t.Fatal(err)
42 }
43 fmt.Println(string(postJson))
44
45 img := post.Embed.EmbedImages.Images[0]
46 if img.Alt != "Sausage sandwich italian style" {
47 t.Fatal("didn't get expected Alt text")
48 }
49
50 if !img.Image.Ref.Defined() {
51 t.Fatal("got nil CID on image")
52 }
53 if img.Image.Ref.String() != "bafkreiblkobl6arfg3j7eft3akdhn2hmr2qmzfkefcgu4agnswvssg4a6a" {
54 t.Fatal("didn't get expected image blob CID")
55 }
56 if img.Image.MimeType != "image/jpeg" {
57 t.Fatal("didn't get expected image blob mimetype")
58 }
59}