Blob


1 package apub
3 import (
4 "os"
5 "path"
6 "reflect"
7 "sort"
8 "testing"
9 )
11 func TestDecode(t *testing.T) {
12 f, err := os.Open("testdata/announce1.json")
13 if err != nil {
14 t.Fatal(err)
15 }
16 defer f.Close()
17 a, err := Decode(f)
18 if err != nil {
19 t.Fatal("decode activity", err)
20 }
21 want := "https://lemmy.sdf.org/activities/like/b5bd1577-9677-4130-8312-cd2e2fd4ea44"
22 inner, err := a.Unwrap(nil)
23 if err != nil {
24 t.Fatal("unwrap activity:", err)
25 }
26 if inner.ID != want {
27 t.Errorf("wanted wrapped activity id %s, got %s", want, inner.ID)
28 }
29 }
31 func TestTag(t *testing.T) {
32 tests := []struct {
33 Name string
34 Mention string
35 }{
36 {"testdata/note/akkoma.json", "@otl@apubtest2.srcbeat.com"},
37 {"testdata/note/lemmy.json", "@Feathercrown@lemmy.world"},
38 {"testdata/note/mastodon.json", "@selfhosted@lemmy.world"},
39 }
40 for _, tt := range tests {
41 f, err := os.Open(tt.Name)
42 if err != nil {
43 t.Error(err)
44 continue
45 }
46 defer f.Close()
47 a, err := Decode(f)
48 if err != nil {
49 t.Errorf("%s: decode: %v", tt.Name, err)
50 continue
51 }
52 if len(a.Tag) == 0 {
53 t.Errorf("%s: no tags", tt.Name)
54 continue
55 }
56 var found bool
57 for _, tag := range a.Tag {
58 if tag.Name == tt.Mention {
59 found = true
60 }
61 }
62 if !found {
63 t.Errorf("%s: did not find mention %s", tt.Name, tt.Mention)
64 }
65 }
66 }
68 func TestInboxes(t *testing.T) {
69 want := []string{
70 "https://apubtest2.srcbeat.com/otl/inbox",
71 "https://hachyderm.io/inbox",
72 "https://lemmy.world/inbox",
73 "https://social.harpia.red/inbox",
74 }
76 root := "testdata/actor"
77 dirent, err := os.ReadDir("testdata/actor")
78 if err != nil {
79 t.Fatal(err)
80 }
81 actors := make([]Actor, len(dirent))
82 for i, ent := range dirent {
83 f, err := os.Open(path.Join(root, ent.Name()))
84 if err != nil {
85 t.Fatal(err)
86 }
87 defer f.Close()
88 a, err := DecodeActor(f)
89 if err != nil {
90 t.Fatal(err)
91 }
92 actors[i] = *a
93 }
94 got := Inboxes(actors)
95 sort.Strings(got)
96 if !reflect.DeepEqual(want, got) {
97 t.Errorf("unexpected inbox slice of multiple actors, want %s got %s", want, got)
98 }
99 }