Coverage report: 86%

Files Functions Classes

coverage.py v7.14.2, created at 2026-06-21 23:07 +0000

File class   statements missing excluded   coverage
config.py (no class)   85 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/access_stats.py AccessStatsManager   86 21 0   76%
ivatar/access_stats.py (no class)   20 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   3 0 0   100%
ivatar/ivataraccount/auth.py (no class)   38 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   107 45 0   58%
ivatar/opentelemetry_config.py (no class)   55 5 0   91%
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_access_stats.py BatchStatsTest   62 0 0   100%
ivatar/test_access_stats.py BatchStatsTest.setUp.side_effect.SyncThread   2 0 0   100%
ivatar/test_access_stats.py (no class)   17 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   15 2 0   87%
ivatar/test_config_defaults.py (no class)   16 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)   86 36 0   58%
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   137 52 0   62%
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)   146 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)   27 2 0   93%
setup.py (no class)   2 2 0   0%
Total     5971 838 231   86%

No items found using the specified filter.