Coverage report: 86%

Files Functions Classes

coverage.py v7.12.0, created at 2025-12-03 00:09 +0000

File class   statements missing excluded   coverage
config.py (no class)   83 2 12   98%
config_local.py (no class)   5 0 0   100%
config_local_test.py (no class)   1 1 0   0%
ivatar / __init__.py (no class)   1 0 0   100%
ivatar / context_processors.py (no class)   21 0 1   100%
ivatar / file_security.py FileUploadSecurityError   0 0 0   100%
ivatar / file_security.py FileValidator   116 14 0   88%
ivatar / file_security.py (no class)   35 0 0   100%
ivatar / ivataraccount / __init__.py (no class)   1 0 0   100%
ivatar / ivataraccount / admin.py (no class)   13 0 0   100%
ivatar / ivataraccount / auth.py FedoraOpenIdConnect   0 0 0   100%
ivatar / ivataraccount / auth.py (no class)   36 3 0   92%
ivatar / ivataraccount / forms.py AddEmailForm   23 0 0   100%
ivatar / ivataraccount / forms.py UploadPhotoForm   50 16 0   68%
ivatar / ivataraccount / forms.py AddOpenIDForm   13 0 0   100%
ivatar / ivataraccount / forms.py UpdatePreferenceForm   0 0 0   100%
ivatar / ivataraccount / forms.py UpdatePreferenceForm.Meta   0 0 0   100%
ivatar / ivataraccount / forms.py UploadLibravatarExportForm   0 0 0   100%
ivatar / ivataraccount / forms.py DeleteAccountForm   0 0 0   100%
ivatar / ivataraccount / forms.py (no class)   40 0 0   100%
ivatar / ivataraccount / gravatar.py (no class)   18 1 6   94%
ivatar / ivataraccount / migrations / 0001_initial.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0001_initial.py (no class)   7 0 0   100%
ivatar / ivataraccount / migrations / 0002_openidassociation_openidnonce.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0002_openidassociation_openidnonce.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0003_auto_20180508_0637.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0003_auto_20180508_0637.py (no class)   5 0 0   100%
ivatar / ivataraccount / migrations / 0004_auto_20180508_0742.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0004_auto_20180508_0742.py (no class)   5 0 0   100%
ivatar / ivataraccount / migrations / 0005_auto_20180522_1155.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0005_auto_20180522_1155.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0006_auto_20180626_1445.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0006_auto_20180626_1445.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0007_auto_20180627_0624.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0007_auto_20180627_0624.py (no class)   8 0 1   100%
ivatar / ivataraccount / migrations / 0008_userpreference.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0008_userpreference.py (no class)   10 0 2   100%
ivatar / ivataraccount / migrations / 0009_auto_20180705_1152.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0009_auto_20180705_1152.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0010_auto_20180705_1201.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0010_auto_20180705_1201.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0011_auto_20181107_1550.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0011_auto_20181107_1550.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0012_auto_20181107_1732.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0012_auto_20181107_1732.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0013_auto_20181203_1421.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0013_auto_20181203_1421.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0014_auto_20190218_1602.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0014_auto_20190218_1602.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0015_auto_20200225_0934.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0015_auto_20200225_0934.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0016_auto_20210413_0904.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0016_auto_20210413_0904.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0017_auto_20210528_1314.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0017_auto_20210528_1314.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0018_alter_photo_format.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0018_alter_photo_format.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0019_confirmedemail_bluesky_handle.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0019_confirmedemail_bluesky_handle.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0020_confirmedopenid_bluesky_handle.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0020_confirmedopenid_bluesky_handle.py (no class)   4 0 0   100%
ivatar / ivataraccount / migrations / 0021_add_performance_indexes.py Migration   0 0 0   100%
ivatar / ivataraccount / migrations / 0021_add_performance_indexes.py (no class)   41 19 0   54%
ivatar / ivataraccount / migrations / __init__.py (no class)   0 0 0   100%
ivatar / ivataraccount / models.py UserPreference   1 0 0   100%
ivatar / ivataraccount / models.py BaseAccountModel   0 0 0   100%
ivatar / ivataraccount / models.py BaseAccountModel.Meta   0 0 0   100%
ivatar / ivataraccount / models.py Photo   71 23 4   68%
ivatar / ivataraccount / models.py Photo.Meta   0 0 0   100%
ivatar / ivataraccount / models.py ConfirmedEmailManager   10 0 0   100%
ivatar / ivataraccount / models.py ConfirmedEmail   28 7 0   75%
ivatar / ivataraccount / models.py ConfirmedEmail.Meta   0 0 0   100%
ivatar / ivataraccount / models.py UnconfirmedEmail   17 3 0   82%
ivatar / ivataraccount / models.py UnconfirmedEmail.Meta   0 0 0   100%
ivatar / ivataraccount / models.py UnconfirmedOpenId   1 1 0   0%
ivatar / ivataraccount / models.py UnconfirmedOpenId.Meta   0 0 0   100%
ivatar / ivataraccount / models.py ConfirmedOpenId   34 7 3   79%
ivatar / ivataraccount / models.py ConfirmedOpenId.Meta   0 0 0   100%
ivatar / ivataraccount / models.py OpenIDNonce   1 1 0   0%
ivatar / ivataraccount / models.py OpenIDAssociation   1 1 0   0%
ivatar / ivataraccount / models.py DjangoOpenIDStore   0 0 92   100%
ivatar / ivataraccount / models.py (no class)   143 0 11   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase   21 0 0   100%
ivatar / ivataraccount / test_auth.py (no class)   15 0 0   100%
ivatar / ivataraccount / test_views.py Tester   535 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase   111 0 0   100%
ivatar / ivataraccount / test_views.py (no class)   135 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester   67 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py (no class)   51 0 0   100%
ivatar / ivataraccount / urls.py (no class)   20 0 0   100%
ivatar / ivataraccount / views.py CreateView   20 8 1   60%
ivatar / ivataraccount / views.py PasswordSetView   6 0 0   100%
ivatar / ivataraccount / views.py AddEmailView   4 0 0   100%
ivatar / ivataraccount / views.py RemoveUnconfirmedEmailView   7 0 0   100%
ivatar / ivataraccount / views.py ConfirmEmailView   20 0 0   100%
ivatar / ivataraccount / views.py RemoveConfirmedEmailView   7 0 0   100%
ivatar / ivataraccount / views.py AssignPhotoEmailView   29 2 0   93%
ivatar / ivataraccount / views.py AssignPhotoOpenIDView   24 0 0   100%
ivatar / ivataraccount / views.py AssignBlueskyHandleToEmailView   27 14 0   48%
ivatar / ivataraccount / views.py AssignBlueskyHandleToOpenIdView   27 14 0   48%
ivatar / ivataraccount / views.py ImportPhotoView   45 25 2   44%
ivatar / ivataraccount / views.py RawImageView   4 1 0   75%
ivatar / ivataraccount / views.py DeletePhotoView   8 0 0   100%
ivatar / ivataraccount / views.py UploadPhotoView   21 0 0   100%
ivatar / ivataraccount / views.py AddOpenIDView   3 0 0   100%
ivatar / ivataraccount / views.py RemoveUnconfirmedOpenIDView   5 0 2   100%
ivatar / ivataraccount / views.py RemoveConfirmedOpenIDView   12 1 0   92%
ivatar / ivataraccount / views.py RedirectOpenIDView   11 0 13   100%
ivatar / ivataraccount / views.py ConfirmOpenIDView   0 0 61   100%
ivatar / ivataraccount / views.py CropPhotoView   14 4 0   71%
ivatar / ivataraccount / views.py UserPreferenceView   32 31 0   3%
ivatar / ivataraccount / views.py UploadLibravatarExportView   42 33 0   21%
ivatar / ivataraccount / views.py ResendConfirmationMailView   8 8 2   0%
ivatar / ivataraccount / views.py IvatarLoginView   11 4 0   64%
ivatar / ivataraccount / views.py ProfileView   26 15 0   42%
ivatar / ivataraccount / views.py PasswordResetView   15 0 0   100%
ivatar / ivataraccount / views.py DeleteAccountView   10 4 0   60%
ivatar / ivataraccount / views.py ExportView   50 0 0   100%
ivatar / ivataraccount / views.py (no class)   199 0 16   100%
ivatar / middleware.py CustomLocaleMiddleware   12 0 0   100%
ivatar / middleware.py MultipleProxyMiddleware   2 1 0   50%
ivatar / middleware.py (no class)   6 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig   88 23 0   74%
ivatar / opentelemetry_config.py (no class)   59 5 0   92%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware   52 7 0   87%
ivatar / opentelemetry_middleware.py AvatarMetrics   15 0 0   100%
ivatar / opentelemetry_middleware.py (no class)   90 13 0   86%
ivatar / pagan_optimized.py OptimizedPagan   37 9 0   76%
ivatar / pagan_optimized.py (no class)   50 17 0   66%
ivatar / robohash.py OptimizedRobohash   42 9 0   79%
ivatar / robohash.py (no class)   41 8 0   80%
ivatar / settings.py (no class)   71 16 0   77%
ivatar / telemetry_utils.py NoOpMetrics   6 0 0   100%
ivatar / telemetry_utils.py (no class)   27 0 0   100%
ivatar / test_auxiliary.py Tester   9 0 0   100%
ivatar / test_auxiliary.py (no class)   10 0 0   100%
ivatar / test_config_defaults.py ConfigurableDefaultsTestCase   22 4 0   82%
ivatar / test_config_defaults.py (no class)   17 1 0   94%
ivatar / test_file_security.py FileSecurityTestCase   55 0 0   100%
ivatar / test_file_security.py UploadPhotoFormSecurityTestCase   17 0 0   100%
ivatar / test_file_security.py UploadPhotoViewSecurityTestCase   2 2 0   0%
ivatar / test_file_security.py FileSecurityIntegrationTestCase   3 0 0   100%
ivatar / test_file_security.py (no class)   32 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase   122 9 0   93%
ivatar / test_graceful_degradation.py (no class)   25 1 0   96%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase   112 7 0   94%
ivatar / test_no_opentelemetry.py OpenTelemetryFallbackIntegrationTest   10 0 0   100%
ivatar / test_no_opentelemetry.py (no class)   34 1 0   97%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest   62 9 0   85%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest   22 0 0   100%
ivatar / test_opentelemetry.py AvatarMetricsTest   7 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest   22 0 0   100%
ivatar / test_opentelemetry.py IntegrationTest   10 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest   23 0 0   100%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest   147 43 0   71%
ivatar / test_opentelemetry.py (no class)   63 1 0   98%
ivatar / test_pagan_optimized.py TestOptimizedPagan   126 2 0   98%
ivatar / test_pagan_optimized.py TestPaganPerformance   25 0 0   100%
ivatar / test_pagan_optimized.py (no class)   26 1 0   96%
ivatar / test_robohash.py RobohashOptimizationTestCase   91 0 0   100%
ivatar / test_robohash.py (no class)   18 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash   82 2 0   98%
ivatar / test_robohash_cached.py TestRobohashPerformance   15 0 0   100%
ivatar / test_robohash_cached.py (no class)   21 1 0   95%
ivatar / test_security_fixes.py ETagSanitizationTest   39 0 0   100%
ivatar / test_security_fixes.py URLValidationTest   27 0 0   100%
ivatar / test_security_fixes.py IntegrationTest   18 0 0   100%
ivatar / test_security_fixes.py (no class)   36 0 0   100%
ivatar / test_static_pages.py Tester   8 1 0   88%
ivatar / test_static_pages.py (no class)   21 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase   34 0 0   100%
ivatar / test_telemetry_integration.py MockTelemetryTestCase   12 0 0   100%
ivatar / test_telemetry_integration.py (no class)   23 1 0   96%
ivatar / test_utils.py Tester   32 0 0   100%
ivatar / test_utils.py (no class)   5 0 0   100%
ivatar / test_views.py Tester   15 4 0   73%
ivatar / test_views.py (no class)   26 0 0   100%
ivatar / test_views_stats.py StatsTester   104 1 0   99%
ivatar / test_views_stats.py (no class)   21 0 0   100%
ivatar / test_wsgi.py TestCase   2 0 0   100%
ivatar / test_wsgi.py (no class)   7 0 0   100%
ivatar / tools / __init__.py (no class)   0 0 0   100%
ivatar / tools / forms.py CheckDomainForm   0 0 0   100%
ivatar / tools / forms.py CheckForm   20 8 0   60%
ivatar / tools / forms.py (no class)   18 0 0   100%
ivatar / tools / test_views.py Tester   24 0 0   100%
ivatar / tools / test_views.py (no class)   21 0 0   100%
ivatar / tools / urls.py (no class)   3 0 0   100%
ivatar / tools / views.py CheckDomainView   11 0 0   100%
ivatar / tools / views.py CheckView   46 13 0   72%
ivatar / tools / views.py (no class)   99 40 0   60%
ivatar / urls.py (no class)   19 3 0   84%
ivatar / utils.py Bluesky   51 17 0   67%
ivatar / utils.py (no class)   137 43 0   69%
ivatar / views.py CachingHttpResponse   3 0 0   100%
ivatar / views.py AvatarImageView   139 52 0   63%
ivatar / views.py GravatarProxyView   58 40 0   31%
ivatar / views.py BlueskyProxyView   77 77 0   0%
ivatar / views.py StatsView   61 3 0   95%
ivatar / views.py DeploymentVersionView   13 7 0   46%
ivatar / views.py (no class)   148 25 0   83%
ivatar / wsgi.py (no class)   4 0 0   100%
manage.py (no class)   7 7 2   0%
scripts / run_tests_with_coverage.py (no class)   25 2 0   92%
setup.py (no class)   2 2 0   0%
Total     5785 801 231   86%

No items found using the specified filter.