Live video on the AT Protocol
1package spxrpc
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/require"
7)
8
9func TestFeedSkeletonRE(t *testing.T) {
10 tests := []struct {
11 feed string
12 name string
13 did string
14 want bool
15 }{
16 {
17 feed: "at://did:plc:oio4hkxaop4ao4wz2pp3f4cr/app.bsky.feed.generator/atproto",
18 did: "did:plc:oio4hkxaop4ao4wz2pp3f4cr",
19 name: "atproto",
20 want: true,
21 },
22 {
23 feed: "at://did:web:iame.li/app.bsky.feed.generator/feedwithnumbers123",
24 did: "did:web:iame.li",
25 name: "feedwithnumbers123",
26 want: true,
27 },
28 {
29 feed: "at://did:web:iame.li/app.bsky.feed.generator/feed-with-dashes",
30 did: "did:web:iame.li",
31 name: "feed-with-dashes",
32 want: true,
33 },
34 {
35 feed: "foo",
36 want: false,
37 },
38 {
39 feed: "at:///app.bsky.feed.generator/feedwithnumbers123",
40 want: false,
41 },
42 {
43 feed: "at://did:web:iame.li/app.bsky.feed.generator/",
44 want: false,
45 },
46 {
47 feed: "at://did:web:iame.li/app.bsky.feed.generator/feedwithnumbers123/errantsuffix",
48 want: false,
49 },
50 }
51 for _, test := range tests {
52 t.Run(test.name, func(t *testing.T) {
53 did, name, err := parseFeedSkeleton(test.feed)
54 if !test.want {
55 require.Error(t, err)
56 return
57 }
58 require.NoError(t, err)
59 require.Equal(t, test.did, did)
60 require.Equal(t, test.name, name)
61 })
62 }
63}