perlsky is a Perl 5 implementation of an AT Protocol Personal Data Server.
13
fork

Configure Feed

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

Strengthen appview smoke coverage

alice 95699b7d 70d8c1c4

+49
+49
t/pds_smoke.t
··· 52 52 my $access = $created->{accessJwt}; 53 53 my $did = $created->{did}; 54 54 55 + $t->post_ok('/xrpc/com.atproto.server.createAccount' => json => { 56 + handle => 'bob.example.test', 57 + email => 'bob@example.test', 58 + password => 'hunter23', 59 + })->status_is(200); 60 + 61 + my $bob_created = $t->tx->res->json; 62 + my $bob_did = $bob_created->{did}; 63 + 55 64 $t->get_ok('/xrpc/com.atproto.server.getSession' => { 56 65 Authorization => "Bearer $access", 57 66 })->status_is(200) ··· 61 70 Authorization => "Bearer $access", 62 71 } => json => { 63 72 repo => $did, 73 + collection => 'app.bsky.graph.follow', 74 + rkey => 'follow-bob', 75 + record => { 76 + '$type' => 'app.bsky.graph.follow', 77 + subject => $bob_did, 78 + createdAt => '2026-03-10T00:00:00Z', 79 + }, 80 + })->status_is(200) 81 + ->json_is('/uri', "at://$did/app.bsky.graph.follow/follow-bob"); 82 + 83 + $t->get_ok("/xrpc/app.bsky.actor.getProfile?actor=$did" => { 84 + Authorization => "Bearer $access", 85 + })->status_is(200) 86 + ->json_is('/did', $did) 87 + ->json_is('/followsCount', 1) 88 + ->json_is('/postsCount', 0) 89 + ->json_hasnt('/followersCount') 90 + ->json_hasnt('/viewer/knownFollowers'); 91 + 92 + $t->get_ok("/xrpc/app.bsky.actor.getProfile?actor=$bob_did" => { 93 + Authorization => "Bearer $access", 94 + })->status_is(200) 95 + ->json_is('/did', $bob_did) 96 + ->json_is('/viewer/following', "at://$did/app.bsky.graph.follow/follow-bob") 97 + ->json_hasnt('/followersCount'); 98 + 99 + $t->post_ok('/xrpc/com.atproto.repo.createRecord' => { 100 + Authorization => "Bearer $access", 101 + } => json => { 102 + repo => $did, 64 103 collection => 'app.bsky.feed.post', 65 104 record => { 66 105 '$type' => 'app.bsky.feed.post', ··· 77 116 collection => 'app.bsky.feed.post', 78 117 })->status_is(200) 79 118 ->json_is('/records/0/value/text', 'hello from perl'); 119 + 120 + $t->get_ok("/xrpc/app.bsky.feed.getAuthorFeed?actor=$did&limit=10" => { 121 + Authorization => "Bearer $access", 122 + })->status_is(200) 123 + ->json_is('/feed/0/post/record/text', 'hello from perl') 124 + ->json_hasnt('/feed/0/post/bookmarkCount') 125 + ->json_hasnt('/feed/0/post/replyCount') 126 + ->json_hasnt('/feed/0/post/likeCount') 127 + ->json_hasnt('/feed/0/post/repostCount') 128 + ->json_hasnt('/feed/0/post/quoteCount'); 80 129 81 130 $t->get_ok('/xrpc/com.atproto.sync.getLatestCommit' => form => { 82 131 did => $did,