A persona's avatar and header can be removed
Mastodon's DELETE /api/v1/profile/avatar and /api/v1/profile/header: the picture goes to the trash (its file stops being served at once), the profile shows the default again, followers are sent the updated profile, and the answer is the account with its source. The profile Update is the one a persona that never had a picture sends, so nothing new leaves PrivaPub. MediaLifecycleTests: the avatar, then the header, removed and no longer served. 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
3ca29603ed
commit
8fecf7de2d
2 files changed
+45
No files matched your search
@@ -98,6 +98,29 @@ namespace PrivaPub.Tests.Http
|
||||
Assert.Equal(second, (await alice.Client.Get("/api/v1/accounts/verify_credentials")).Ok().Body.Text("avatar"));
|
||||
}
|
||||
|
||||
// Mastodon's DELETE /api/v1/profile/avatar and /header: the picture goes, the default shows again
|
||||
[Fact]
|
||||
public async Task A_picture_is_removed_and_the_default_shows_again()
|
||||
{
|
||||
var alice = await _host.Mastodon($"pic{Guid.NewGuid():N}"[..12]);
|
||||
var form = MastodonHelpers.Multipart(("avatar", MastodonHelpers.JpegWithMetadata(200, 200), "image/jpeg", "me.jpg"),
|
||||
("header", MastodonHelpers.JpegWithMetadata(900, 300), "image/jpeg", "top.jpg"));
|
||||
var set = (await alice.Client.Exchange(new HttpRequestMessage(HttpMethod.Patch, "/api/v1/accounts/update_credentials") { Content = form })).Ok();
|
||||
var avatar = set.Body.Text("avatar");
|
||||
var header = set.Body.Text("header");
|
||||
|
||||
var removed = (await alice.Client.Delete("/api/v1/profile/avatar")).Ok();
|
||||
|
||||
Assert.Contains("missing", removed.Body.Text("avatar"));
|
||||
Assert.Equal(header, removed.Body.Text("header"));
|
||||
Assert.Equal(HttpStatusCode.NotFound, await Served(avatar));
|
||||
Assert.Equal(HttpStatusCode.OK, await Served(header));
|
||||
|
||||
Assert.Contains("missing", (await alice.Client.Delete("/api/v1/profile/header")).Ok().Body.Text("header"));
|
||||
Assert.Equal(HttpStatusCode.NotFound, await Served(header));
|
||||
Assert.False(await DB.Default.Find<MediaAttachment>().Match(m => m.ProfileOfAvatarId == alice.Persona.Id && m.TrashedAt == null).ExecuteAnyAsync(Token));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task A_removed_roots_media_and_pictures_are_trashed_and_its_scheduled_posts_dropped()
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user