Follow requests asked again, and followed accounts found by name
A server can take a Follow with 202 and drop it afterwards, as Pleroma does while it cannot fetch our actor; the request then stayed pending for good. Following again now sends an unanswered request once more, the same activity, at most once an hour (a delivery's `again` key). accounts/search takes following=true: only accounts the persona follows, by the start of their name, display name or server, never resolved; a client fills a list with it. "already take" becomes "already taken". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
02a05d7a9a
commit
ce473f2741
12 files changed
+80
-12
No files matched your search
@@ -493,6 +493,23 @@ namespace PrivaPub.Tests.Http
|
||||
Assert.All(answer.Array, r => Assert.False(r.Flag("following") || r.Flag("blocking") || r.Flag("muting") || r.Flag("followed_by")));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Following_again_sends_an_unanswered_request_once_more_and_no_more_than_hourly()
|
||||
{
|
||||
var since = DateTime.UtcNow.AddSeconds(-1);
|
||||
var alice = await _host.Mastodon("alice");
|
||||
var (bob, bobId) = await Remote();
|
||||
Assert.True((await alice.Client.Post($"/api/v1/accounts/{bobId}/follow")).Ok().Body.Flag("requested"));
|
||||
var first = Assert.Single(await bob.Delivered(since), d => d.Type() == "Follow");
|
||||
|
||||
Assert.True((await alice.Client.Post($"/api/v1/accounts/{bobId}/follow")).Ok().Body.Flag("requested"));
|
||||
(await alice.Client.Post($"/api/v1/accounts/{bobId}/follow")).Ok();
|
||||
|
||||
var follows = (await bob.Delivered(since)).Where(d => d.Type() == "Follow").ToList();
|
||||
Assert.Equal(2, follows.Count);
|
||||
Assert.All(follows, f => Assert.Equal(first.Text("id"), f.Text("id")));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task A_remote_authors_followers_only_posts_show_only_to_the_personas_that_follow_them()
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user