Improve code test coverage
Our test coverage is pretty good, but we could do better. Here's the current output from mix test --cover
. Is there anything specific that we should target or ignore? I know some things like S3, Swift, and Mogrify are going to be painful to write tests for because it will begin to massively complicate our CI/CD, but it's not impossible to do.
Percentage | Module
-----------|--------------------------
100.00% | Pleroma.Web.Endpoint.MetricsExporter
100.00% | Pleroma.PostgresTypes
100.00% | Pleroma.Web.ActivityPub.Visibility
100.00% | Pleroma.Upload.Filter.AnonymizeFilename
100.00% | Pleroma.Web.OAuth
100.00% | Pleroma.Repo
100.00% | Pleroma.Web.TwitterAPI.Representers.BaseRepresenter
100.00% | Pleroma.Emails.Mailer
100.00% | Pleroma.Web.Websub.WebsubClientSubscription
100.00% | Pleroma.Web.WebsubMock
100.00% | Pleroma.Web.OStatus.FollowHandler
100.00% | Pleroma.Web.OStatus.ActivityRepresenter
100.00% | Pleroma.Web.Endpoint.PipelineInstrumenter
100.00% | Pleroma.Notification
100.00% | Pleroma.Web.Router.Helpers
100.00% | Pleroma.Web.RichMedia.Parsers.MetaTagsParser
100.00% | Pleroma.Web.OStatus.UnfollowHandler
100.00% | Pleroma.Web.RichMedia.Parser
100.00% | Pleroma.Builders.UserBuilder
100.00% | Pleroma.Web.OStatus.FeedRepresenter
100.00% | Pleroma.Healthcheck
100.00% | Pleroma.Web.OAuth.Authorization
100.00% | Pleroma.Web.MastodonAPI.SubscriptionController
100.00% | Pleroma.Repo.Instrumenter
100.00% | Pleroma.Config
100.00% | Pleroma.Web.Endpoint.Instrumenter
100.00% | Pleroma.XmlBuilder
100.00% | Pleroma.Object.Fetcher
100.00% | Pleroma.Config.Error
100.00% | Pleroma.Tests.Helpers
100.00% | Pleroma.Web.OAuth.Token.Utils
100.00% | Pleroma.Web.OStatus.UserRepresenter
100.00% | Pleroma.Web.RichMedia.Parsers.OEmbed
100.00% | Pleroma.Web.RichMedia.Helpers
100.00% | Pleroma.Web.RichMedia.Parsers.OGP
100.00% | Pleroma.Web.RelMe
100.00% | Pleroma.Web.OStatusMock
100.00% | Pleroma.Web.ActivityPub.MRF.KeywordPolicy
100.00% | Pleroma.Uploaders.Local
100.00% | Pleroma.Web.Metadata.Providers.Provider
100.00% | Pleroma.HTML.Scrubber.TwitterText
100.00% | Pleroma.Conversation
100.00% | Pleroma.User.Query
100.00% | Pleroma.Web.Metadata.Providers.RelMe
100.00% | Pleroma.Upload.Filter.Dedupe
100.00% | Pleroma.Web.ConnCase
100.00% | Pleroma.Captcha.Service
100.00% | Pleroma.Web.AdminAPI.Search
100.00% | Pleroma.Web.ActivityPub.MRF.NoOpPolicy
100.00% | Pleroma.Web.RichMedia.Parsers.TwitterCard
100.00% | Pleroma.Pagination
100.00% | Pleroma.Bookmark
100.00% | Pleroma.Web.Websub.WebsubServerSubscription
100.00% | Pleroma.Web.OAuth.Scopes
100.00% | Pleroma.Web.OAuth.Token.Strategy.RefreshToken
100.00% | Pleroma.UserInviteToken
100.00% | Pleroma.User.WelcomeMessage
97.50% | Pleroma.Web.WebFinger
97.00% | Pleroma.Web.CommonAPI
96.77% | Pleroma.Instances.Instance
96.39% | Pleroma.Factory
96.30% | Pleroma.Web.Push.Impl
95.65% | Pleroma.HTML
95.08% | Pleroma.Web.ActivityPub.UserView
94.81% | Pleroma.Web.Salmon
94.74% | Pleroma.Web.AdminAPI.AccountView
94.44% | Pleroma.Builders.ActivityBuilder
94.44% | Pleroma.Web.Metadata.Providers.OpenGraph
93.99% | Pleroma.Web.ActivityPub.ActivityPub
93.75% | Pleroma.Stats
93.75% | Pleroma.Filter
93.33% | Pleroma.Plugs.OAuthScopesPlug
93.33% | Pleroma.Conversation.Participation
93.10% | Pleroma.Web.OStatus.NoteHandler
92.86% | Pleroma.Emails.UserEmail
92.86% | Pleroma.Web.MediaProxy
92.86% | Pleroma.Web.Push.Subscription
92.73% | Pleroma.User.Info
92.61% | Pleroma.Web.ActivityPub.Utils
92.59% | Pleroma.List
92.50% | Pleroma.Activity
92.31% | Pleroma.Object.Containment
92.31% | Pleroma.Instances
92.19% | Pleroma.Web.MastodonAPI.StatusView
91.80% | Pleroma.Web.MastodonAPI.AccountView
91.74% | Pleroma.Web.TwitterAPI.ActivityView
91.67% | Pleroma.Web.TwitterAPI.UserView
91.67% | Pleroma.Web.Auth.Authenticator
91.67% | Pleroma.Web.XML
91.54% | Pleroma.Web.OStatus
91.53% | Pleroma.Formatter
91.38% | Pleroma.User
90.59% | Pleroma.Web.TwitterAPI.TwitterAPI
90.48% | Pleroma.Web.OAuth.Token
90.00% | Pleroma.FlakeId
90.00% | Pleroma.Plugs.HTTPSecurityPlug
90.00% | Pleroma.HTML.Transform.MediaProxy
89.78% | Mix.Tasks.Pleroma.User
89.47% | Pleroma.Plugs.OAuthPlug
89.38% | Pleroma.Web.Websub
88.89% | Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy
88.89% | Pleroma.ScheduledActivity
88.89% | Pleroma.Application
88.89% | Pleroma.Plugs.InstanceStatic
88.89% | Pleroma.MIME
88.64% | Pleroma.Web.AdminAPI.AdminAPIController
88.41% | Pleroma.Web.ActivityPub.Transmogrifier
88.24% | Pleroma.Web.ActivityPub.MRF.HellthreadPolicy
87.93% | Pleroma.Web.CommonAPI.Utils
87.88% | Mix.Tasks.Pleroma.Uploads
87.72% | Pleroma.Web.Federator.RetryQueue
87.50% | Pleroma.ThreadMute
87.50% | Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter
87.31% | Pleroma.Web.OAuth.OAuthController
86.96% | Pleroma.Object
86.67% | Pleroma.Web.ActivityPub.ObjectView
86.67% | Pleroma.Web.MastodonAPI.NotificationView
85.71% | Pleroma.HTTP
85.71% | Pleroma.Plugs.LegacyAuthenticationPlug
85.71% | Pleroma.Captcha.Kocaptcha
85.71% | Pleroma.Web.MastodonAPI.PushSubscriptionView
84.62% | Pleroma.Web.MastodonAPI.ConversationView
83.94% | Pleroma.Web.TwitterAPI.Controller
83.33% | Pleroma.Plugs.BasicAuthDecoderPlug
83.33% | Pleroma.DataCase
83.33% | Pleroma.Config.DeprecationWarnings
82.69% | Pleroma.Web.Router
82.35% | Pleroma.Web.MastodonAPI.ScheduledActivityView
82.14% | Pleroma.Web.Websub.WebsubController
81.82% | Pleroma.Web.MastodonAPI.FilterView
81.25% | Pleroma.Web.HTTPSignatures
81.11% | Pleroma.Web.ActivityPub.ActivityPubController
81.03% | Pleroma.Web.Federator
80.00% | Pleroma.Web.OStatus.DeleteHandler
80.00% | Pleroma.Plugs.SessionAuthenticationPlug
80.00% | Pleroma.Plugs.UserFetcherPlug
80.00% | Pleroma.Web.Push
80.00% | Pleroma.HTTP.Connection
80.00% | Pleroma.Web.ActivityPub.Relay
79.49% | Pleroma.Web.Nodeinfo.NodeinfoController
78.77% | Pleroma.Web.MastodonAPI.MastodonAPIController
76.92% | Pleroma.Web.TwitterAPI.NotificationView
76.92% | Pleroma.Web.MastodonAPI.AppView
76.32% | Pleroma.Web.OStatus.OStatusController
76.00% | Pleroma.Web.MastodonAPI.MastodonAPI
75.00% | Pleroma.Web.Plugs.HTTPSignaturePlug
75.00% | Pleroma.Web.FederatingPlug
75.00% | Mix.Tasks.Pleroma.Relay
75.00% | Pleroma.Web.Endpoint
75.00% | Pleroma.Web.Metadata.Utils
75.00% | Pleroma.Registration
75.00% | Pleroma.Web.ErrorView
72.00% | Pleroma.Upload
71.43% | Pleroma.Web.Auth.LDAPAuthenticator
71.43% | Pleroma.Plugs.AdminSecretAuthenticationPlug
71.43% | Pleroma.Web.TwitterAPI.TokenView
68.75% | Pleroma.Web.MastodonAPI.WebsocketHandler
66.67% | Pleroma.Plugs.EnsureUserKeyPlug
66.67% | HttpRequestMock
66.67% | Pleroma.Plugs.SetUserSessionIdPlug
66.67% | Pleroma.Web.MastodonAPI.ListView
66.67% | Pleroma.Plugs.UserIsAdminPlug
66.67% | Pleroma.Plugs.EnsureAuthenticatedPlug
66.67% | Pleroma.Web.OAuth.App
66.67% | Pleroma.Plugs.UserEnabledPlug
64.29% | Fallback.RedirectController
63.64% | Pleroma.Plugs.UploadedMedia
62.50% | Pleroma.Gopher.Server
62.50% | Pleroma.Plugs.AuthenticationPlug
61.54% | Pleroma.Web.WebFinger.WebFingerController
61.36% | Pleroma.Web.Streamer
60.00% | Pleroma.Web.OAuth.FallbackController
60.00% | Pleroma.Web.ActivityPub.MRF
59.09% | Pleroma.HTML.Scrubber.Default
56.52% | Pleroma.Web.Auth.PleromaAuthenticator
56.03% | Pleroma.Web.TwitterAPI.UtilController
50.00% | Pleroma.Web.WebPushHttpClientMock
50.00% | Pleroma.Web.MastodonAPI.ReportView
50.00% | Pleroma.Web.TwitterAPI.UtilView
50.00% | Pleroma.Web.LayoutView
50.00% | Pleroma.PasswordResetToken
50.00% | Pleroma.Web.MastodonAPI.MastodonView
50.00% | Pleroma.Web.OAuth.OAuthView
50.00% | Pleroma.Web.ControllerHelper
50.00% | Pleroma.Web.Metadata
50.00% | Pleroma.Web
50.00% | Pleroma.Emoji
44.44% | Pleroma.Integration.WebsocketClient
42.86% | Pleroma.ScheduledActivityWorker
40.00% | Pleroma.Upload.Filter
40.00% | Pleroma.HTTP.RequestBuilder
33.87% | Pleroma.BBS.Handler
33.33% | Pleroma.Web.OAuth.Token.Strategy.Revoke
23.08% | Pleroma.Web.MediaProxy.MediaProxyController
20.00% | Pleroma.Uploaders.Uploader
16.67% | Pleroma.Web.UserSocket
11.11% | Mix.Tasks.Pleroma.Common
3.23% | Pleroma.Captcha
0.00% | Pleroma.Web.ChatChannel
0.00% | Pleroma.Web.Metadata.PlayerView
0.00% | Mix.Tasks.Pleroma.RobotsTxt
0.00% | Mix.Tasks.Pleroma.Database
0.00% | Pleroma.Uploaders.S3
0.00% | Mix.Tasks.Pleroma.Emoji
0.00% | Pleroma.Web.ActivityPub.MRF.SimplePolicy
0.00% | Pleroma.Gopher.Server.ProtocolHandler
0.00% | Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicy
0.00% | Pleroma.Web.Gettext
0.00% | Pleroma.Web.ChannelCase
0.00% | Pleroma.Web.ChatChannel.ChatChannelState
0.00% | Pleroma.Upload.Filter.Mogrify
0.00% | Mix.Tasks.Pleroma.Instance
0.00% | Pleroma.Uploaders.MDII
0.00% | Pleroma.Web.ErrorHelpers
0.00% | Pleroma.Web.UploaderController
0.00% | Pleroma.Web.ActivityPub.MRF.DropPolicy
0.00% | Pleroma.Web.Plugs.DigestPlug
0.00% | Pleroma.BBS.Authenticator
0.00% | Pleroma.ObjectTombstone
0.00% | Mix.Tasks.Pleroma.Benchmark
0.00% | Phoenix.Transports.WebSocket.Raw
0.00% | Pleroma.ReverseProxy
0.00% | Pleroma.Web.ActivityPub.MRF.NormalizeMarkup
0.00% | Pleroma.Uploaders.Swift.Client
0.00% | Pleroma.Web.ActivityPub.MRF.TagPolicy
0.00% | Pleroma.Uploaders.Swift
0.00% | Pleroma.Clippy
0.00% | Pleroma.Captcha.Mock
0.00% | Pleroma.Web.ActivityPub.MRF.EnsureRePrepended
0.00% | Pleroma.Web.Metadata.Providers.TwitterCard
0.00% | Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy
0.00% | Pleroma.Uploaders.Swift.Keystone
0.00% | Pleroma.Web.ActivityPub.MRF.RejectNonPublic
0.00% | Pleroma.Emails.AdminEmail
0.00% | Pleroma.Upload.Filter.Mogrifun
-----------|--------------------------
69.59% | Total