Coverage report: 86%

Files Functions Classes

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

File function   statements missing excluded   coverage
config.py map_legacy_config   3 1 0   67%
config.py (no function)   80 1 12   99%
config_local.py (no function)   5 0 0   100%
config_local_test.py (no function)   1 1 0   0%
ivatar / __init__.py (no function)   1 0 0   100%
ivatar / context_processors.py basepage   18 0 1   100%
ivatar / context_processors.py (no function)   3 0 0   100%
ivatar / file_security.py FileValidator.__init__   4 0 0   100%
ivatar / file_security.py FileValidator.validate_basic   12 2 0   83%
ivatar / file_security.py FileValidator.validate_magic_bytes   13 0 0   100%
ivatar / file_security.py FileValidator.validate_mime_type   11 3 0   73%
ivatar / file_security.py FileValidator.validate_pil_image   14 3 0   79%
ivatar / file_security.py FileValidator.sanitize_exif_data   13 2 0   85%
ivatar / file_security.py FileValidator.scan_for_malicious_content   10 0 0   100%
ivatar / file_security.py FileValidator.comprehensive_validation   39 4 0   90%
ivatar / file_security.py validate_uploaded_file   6 0 0   100%
ivatar / file_security.py get_file_security_report   2 0 0   100%
ivatar / file_security.py (no function)   27 0 0   100%
ivatar / ivataraccount / __init__.py (no function)   1 0 0   100%
ivatar / ivataraccount / admin.py (no function)   13 0 0   100%
ivatar / ivataraccount / auth.py add_confirmed_email   13 2 0   85%
ivatar / ivataraccount / auth.py associate_by_confirmed_email   12 1 0   92%
ivatar / ivataraccount / auth.py (no function)   11 0 0   100%
ivatar / ivataraccount / forms.py AddEmailForm.clean_email   1 0 0   100%
ivatar / ivataraccount / forms.py AddEmailForm.save   22 0 0   100%
ivatar / ivataraccount / forms.py UploadPhotoForm.clean_photo   36 11 0   69%
ivatar / ivataraccount / forms.py UploadPhotoForm.save   14 5 0   64%
ivatar / ivataraccount / forms.py AddOpenIDForm.clean_openid   2 0 0   100%
ivatar / ivataraccount / forms.py AddOpenIDForm.save   11 0 0   100%
ivatar / ivataraccount / forms.py (no function)   40 0 0   100%
ivatar / ivataraccount / gravatar.py get_photo   12 1 6   92%
ivatar / ivataraccount / gravatar.py (no function)   6 0 0   100%
ivatar / ivataraccount / migrations / 0001_initial.py (no function)   7 0 0   100%
ivatar / ivataraccount / migrations / 0002_openidassociation_openidnonce.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0003_auto_20180508_0637.py (no function)   5 0 0   100%
ivatar / ivataraccount / migrations / 0004_auto_20180508_0742.py (no function)   5 0 0   100%
ivatar / ivataraccount / migrations / 0005_auto_20180522_1155.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0006_auto_20180626_1445.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0007_auto_20180627_0624.py add_sha256   2 0 1   100%
ivatar / ivataraccount / migrations / 0007_auto_20180627_0624.py (no function)   6 0 0   100%
ivatar / ivataraccount / migrations / 0008_userpreference.py add_preference_to_user   3 0 2   100%
ivatar / ivataraccount / migrations / 0008_userpreference.py (no function)   7 0 0   100%
ivatar / ivataraccount / migrations / 0009_auto_20180705_1152.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0010_auto_20180705_1201.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0011_auto_20181107_1550.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0012_auto_20181107_1732.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0013_auto_20181203_1421.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0014_auto_20190218_1602.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0015_auto_20200225_0934.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0016_auto_20210413_0904.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0017_auto_20210528_1314.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0018_alter_photo_format.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0019_confirmedemail_bluesky_handle.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0020_confirmedopenid_bluesky_handle.py (no function)   4 0 0   100%
ivatar / ivataraccount / migrations / 0021_add_performance_indexes.py create_indexes   26 11 0   58%
ivatar / ivataraccount / migrations / 0021_add_performance_indexes.py drop_indexes   8 8 0   0%
ivatar / ivataraccount / migrations / 0021_add_performance_indexes.py (no function)   7 0 0   100%
ivatar / ivataraccount / migrations / __init__.py (no function)   0 0 0   100%
ivatar / ivataraccount / models.py file_format   9 0 0   100%
ivatar / ivataraccount / models.py pil_format   10 0 0   100%
ivatar / ivataraccount / models.py UserPreference.__str__   1 0 0   100%
ivatar / ivataraccount / models.py Photo.import_image   24 8 4   67%
ivatar / ivataraccount / models.py Photo.save   10 0 0   100%
ivatar / ivataraccount / models.py Photo.perform_crop   36 14 0   61%
ivatar / ivataraccount / models.py Photo.__str__   1 1 0   0%
ivatar / ivataraccount / models.py ConfirmedEmailManager.create_confirmed_email   10 0 0   100%
ivatar / ivataraccount / models.py ConfirmedEmail.set_photo   2 0 0   100%
ivatar / ivataraccount / models.py ConfirmedEmail.set_bluesky_handle   7 0 0   100%
ivatar / ivataraccount / models.py ConfirmedEmail.save   18 6 0   67%
ivatar / ivataraccount / models.py ConfirmedEmail.__str__   1 1 0   0%
ivatar / ivataraccount / models.py UnconfirmedEmail.save   5 0 0   100%
ivatar / ivataraccount / models.py UnconfirmedEmail.send_confirmation_mail   11 2 0   82%
ivatar / ivataraccount / models.py UnconfirmedEmail.__str__   1 1 0   0%
ivatar / ivataraccount / models.py UnconfirmedOpenId.__str__   1 1 0   0%
ivatar / ivataraccount / models.py ConfirmedOpenId.set_photo   2 0 0   100%
ivatar / ivataraccount / models.py ConfirmedOpenId.set_bluesky_handle   7 0 0   100%
ivatar / ivataraccount / models.py ConfirmedOpenId.save   24 6 3   75%
ivatar / ivataraccount / models.py ConfirmedOpenId.__str__   1 1 0   0%
ivatar / ivataraccount / models.py OpenIDNonce.__str__   1 1 0   0%
ivatar / ivataraccount / models.py OpenIDAssociation.__str__   1 1 0   0%
ivatar / ivataraccount / models.py DjangoOpenIDStore.storeAssociation   0 0 12   100%
ivatar / ivataraccount / models.py DjangoOpenIDStore.getAssociation   0 0 37   100%
ivatar / ivataraccount / models.py DjangoOpenIDStore.removeAssociation   0 0 12   100%
ivatar / ivataraccount / models.py DjangoOpenIDStore.useNonce   0 0 19   100%
ivatar / ivataraccount / models.py DjangoOpenIDStore.cleanupNonces   0 0 6   100%
ivatar / ivataraccount / models.py DjangoOpenIDStore.cleanupAssociations   0 0 6   100%
ivatar / ivataraccount / models.py (no function)   124 0 11   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase._authenticate   3 0 0   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase.test_new_user   3 0 0   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase.test_new_user_untrusted_backend   2 0 0   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase.test_existing_user   4 0 0   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase.test_existing_user_with_confirmed_email   4 0 0   100%
ivatar / ivataraccount / test_auth.py AuthFedoraTestCase.test_existing_confirmed_email   5 0 0   100%
ivatar / ivataraccount / test_auth.py (no function)   15 0 0   100%
ivatar / ivataraccount / test_views.py Tester.login   1 0 0   100%
ivatar / ivataraccount / test_views.py Tester.setUp   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_new_user   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_new_user_twice   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_set_password   11 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_add_email   8 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_confirm_email   10 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_confirm_email_w_invalid_auth_key   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_confirm_email_w_non_existing_auth_key   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_confirmed_email   11 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_not_existing_confirmed_email   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_unconfirmed_email   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_gravatar_photo_import   12 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_raw_image   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_delete_photo   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_delete_non_existing_photo   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_too_many_unconfirmed_email   6 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_add_mail_address_twice   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_add_already_confirmed_email_self   3 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_add_already_confirmed_email_other   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_unconfirmed_non_existing_email   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_image   12 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_too_many_images   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_too_big_image   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_invalid_image   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_invalid_image_format   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_gif_image   1 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_jpg_image   1 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_webp_image   1 0 0   100%
ivatar / ivataraccount / test_views.py Tester._extracted_from_test_upload_webp_image_5   12 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_unsupported_tif_image   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_automatic_photo_assign_to_confirmed_mail   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_photo_to_email   8 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_no_photo_to_email   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_photo_to_email_wo_photo_for_testing_template   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_invalid_photo_id_to_email   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_post_to_assign_photo_without_photo_id   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_photo_to_non_existing_mail   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_import_photo_with_non_existing_email   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_import_nothing   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester._manual_confirm   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_add_openid   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_add_openid_twice   17 0 0   100%
ivatar / ivataraccount / test_views.py Tester._check_form_validity   6 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_photo_to_openid   8 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_photo_to_openid_wo_photo_for_testing_template   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_invalid_photo_id_to_openid   6 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_post_to_assign_photo_openid_without_photo_id   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_assign_photo_to_openid_non_existing_openid   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_confirmed_openid   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_not_existing_confirmed_openid   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_unconfirmed_openid   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_remove_unconfirmed_non_existing_openid   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_openid_redirect_view   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_set_photo_on_openid   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_mail   9 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_openid   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_non_existing_mail_digest   8 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_non_existing_mail_digest_gravatarproxy_disabled   7 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_non_existing_mail_digest_w_default_mm   3 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_non_existing_mail_digest_w_default_mm_gravatarproxy_disabled   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_non_existing_mail_digest_wo_default   9 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_non_existing_mail_digest_wo_default_gravatarproxy_disabled   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_default   6 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_default_gravatarproxy_disabled   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_default_external   6 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_default_external_trusted   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_avatar_url_default_external_gravatarproxy_disabled   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_crop_photo   8 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_change_view   4 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_change_view_post_wrong_old_pw   3 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_change_view_post_wrong_new_password1   3 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_change_view_post_wrong_new_password2   3 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_change_view_post_common_password   3 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_profile_must_list_first_and_lastname   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_reset_page   2 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_reset_wo_mail   6 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_reset_w_mail   8 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_reset_w_confirmed_mail   10 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_password_reset_w_confirmed_mail_no_password   15 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_export   24 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_upload_export   10 0 0   100%
ivatar / ivataraccount / test_views.py Tester._uploading_export_check   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_preferences_page   2 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_delete_user   5 0 0   100%
ivatar / ivataraccount / test_views.py Tester.test_confirm_already_confirmed   8 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.setUp   4 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.login   1 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_openid_discovery_failure_renders_error_template   17 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_openid_confirmation_failure_renders_error_template   17 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_openid_cancellation_renders_error_template   16 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_openid_unknown_error_renders_error_template   15 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_openid_nonexistent_id_error   6 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_django_openid_auth_failure_template_coverage   3 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_error_template_direct_rendering   19 0 0   100%
ivatar / ivataraccount / test_views.py OpenIDErrorHandlingTestCase.test_openid_failure_template_inheritance   13 0 0   100%
ivatar / ivataraccount / test_views.py (no function)   135 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.login   1 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.setUp   3 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.tearDown   1 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.create_confirmed_openid   1 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.create_confirmed_email   1 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_bluesky_handle_for_mail_via_model_handle_does_not_exist   6 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_bluesky_handle_for_mail_via_model_handle_exists   4 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_bluesky_handle_for_openid_via_model_handle_does_not_exist   6 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_bluesky_handle_for_openid_via_model_handle_exists   4 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_bluesky_fetch_mail   8 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_bluesky_fetch_openid   8 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_assign_bluesky_handle_to_openid   3 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_assign_bluesky_handle_to_email   3 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester._assign_handle_to   5 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_assign_photo_to_mail_removes_bluesky_handle   3 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester.test_assign_photo_to_openid_removes_bluesky_handle   3 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py Tester._assign_bluesky_handle   7 0 0   100%
ivatar / ivataraccount / test_views_bluesky.py (no function)   51 0 0   100%
ivatar / ivataraccount / urls.py (no function)   20 0 0   100%
ivatar / ivataraccount / views.py openid_logging   0 0 2   100%
ivatar / ivataraccount / views.py CreateView.form_valid   9 0 1   100%
ivatar / ivataraccount / views.py CreateView._extracted_from_form_valid_   8 7 0   12%
ivatar / ivataraccount / views.py CreateView.get   3 1 0   67%
ivatar / ivataraccount / views.py PasswordSetView.get_form_kwargs   3 0 0   100%
ivatar / ivataraccount / views.py PasswordSetView.form_valid   3 0 0   100%
ivatar / ivataraccount / views.py AddEmailView.form_valid   4 0 0   100%
ivatar / ivataraccount / views.py RemoveUnconfirmedEmailView.post   7 0 0   100%
ivatar / ivataraccount / views.py ConfirmEmailView.get   20 0 0   100%
ivatar / ivataraccount / views.py RemoveConfirmedEmailView.post   7 0 0   100%
ivatar / ivataraccount / views.py AssignPhotoEmailView.post   26 2 0   92%
ivatar / ivataraccount / views.py AssignPhotoEmailView.get_context_data   3 0 0   100%
ivatar / ivataraccount / views.py AssignPhotoOpenIDView.post   21 0 0   100%
ivatar / ivataraccount / views.py AssignPhotoOpenIDView.get_context_data   3 0 0   100%
ivatar / ivataraccount / views.py AssignBlueskyHandleToEmailView.post   24 11 0   54%
ivatar / ivataraccount / views.py AssignBlueskyHandleToEmailView.get_context_data   3 3 0   0%
ivatar / ivataraccount / views.py AssignBlueskyHandleToOpenIdView.post   24 11 0   54%
ivatar / ivataraccount / views.py AssignBlueskyHandleToOpenIdView.get_context_data   3 3 0   0%
ivatar / ivataraccount / views.py ImportPhotoView.get_context_data   19 19 0   0%
ivatar / ivataraccount / views.py ImportPhotoView.post   26 6 2   77%
ivatar / ivataraccount / views.py RawImageView.get   4 1 0   75%
ivatar / ivataraccount / views.py DeletePhotoView.get   8 0 0   100%
ivatar / ivataraccount / views.py UploadPhotoView.post   5 0 0   100%
ivatar / ivataraccount / views.py UploadPhotoView.form_valid   16 0 0   100%
ivatar / ivataraccount / views.py AddOpenIDView.form_valid   3 0 0   100%
ivatar / ivataraccount / views.py RemoveUnconfirmedOpenIDView.post   5 0 2   100%
ivatar / ivataraccount / views.py RemoveConfirmedOpenIDView.post   12 1 0   92%
ivatar / ivataraccount / views.py RedirectOpenIDView.get   11 0 13   100%
ivatar / ivataraccount / views.py ConfirmOpenIDView.do_request   0 0 53   100%
ivatar / ivataraccount / views.py ConfirmOpenIDView.get   0 0 4   100%
ivatar / ivataraccount / views.py ConfirmOpenIDView.post   0 0 4   100%
ivatar / ivataraccount / views.py CropPhotoView.get   4 0 0   100%
ivatar / ivataraccount / views.py CropPhotoView.post   10 4 0   60%
ivatar / ivataraccount / views.py UserPreferenceView.post   29 29 0   0%
ivatar / ivataraccount / views.py UserPreferenceView.get   1 0 0   100%
ivatar / ivataraccount / views.py UserPreferenceView.get_object   2 2 0   0%
ivatar / ivataraccount / views.py UploadLibravatarExportView.post   35 33 0   6%
ivatar / ivataraccount / views.py UploadLibravatarExportView.form_valid   7 0 0   100%
ivatar / ivataraccount / views.py ResendConfirmationMailView.get   8 8 2   0%
ivatar / ivataraccount / views.py IvatarLoginView.get   7 4 0   43%
ivatar / ivataraccount / views.py IvatarLoginView.post   1 0 0   100%
ivatar / ivataraccount / views.py IvatarLoginView.get_context_data   3 0 0   100%
ivatar / ivataraccount / views.py ProfileView.get   8 5 0   38%
ivatar / ivataraccount / views.py ProfileView.get_context_data   6 0 0   100%
ivatar / ivataraccount / views.py ProfileView._confirm_claimed_openid   12 10 0   17%
ivatar / ivataraccount / views.py PasswordResetView.post   15 0 0   100%
ivatar / ivataraccount / views.py DeleteAccountView.get   1 0 0   100%
ivatar / ivataraccount / views.py DeleteAccountView.post   9 4 0   56%
ivatar / ivataraccount / views.py ExportView.get   1 0 0   100%
ivatar / ivataraccount / views.py ExportView.post   27 0 0   100%
ivatar / ivataraccount / views.py ExportView.post.xml_header   1 0 0   100%
ivatar / ivataraccount / views.py ExportView.post.xml_footer   1 0 0   100%
ivatar / ivataraccount / views.py ExportView.post.xml_account   3 0 0   100%
ivatar / ivataraccount / views.py ExportView.post.xml_email   5 0 0   100%
ivatar / ivataraccount / views.py ExportView.post.xml_openid   5 0 0   100%
ivatar / ivataraccount / views.py ExportView.post.xml_photos   7 0 0   100%
ivatar / ivataraccount / views.py (no function)   199 0 14   100%
ivatar / middleware.py CustomLocaleMiddleware.process_response   12 0 0   100%
ivatar / middleware.py MultipleProxyMiddleware.process_request   2 1 0   50%
ivatar / middleware.py (no function)   6 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig.__init__   5 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig._is_export_enabled   1 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig._get_service_name   1 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig._get_environment   1 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig._create_resource   7 2 0   71%
ivatar / opentelemetry_config.py OpenTelemetryConfig.setup_tracing   15 4 0   73%
ivatar / opentelemetry_config.py OpenTelemetryConfig.setup_metrics   31 10 0   68%
ivatar / opentelemetry_config.py OpenTelemetryConfig._start_prometheus_server   16 5 0   69%
ivatar / opentelemetry_config.py OpenTelemetryConfig.setup_instrumentation   9 2 0   78%
ivatar / opentelemetry_config.py OpenTelemetryConfig.get_tracer   1 0 0   100%
ivatar / opentelemetry_config.py OpenTelemetryConfig.get_meter   1 0 0   100%
ivatar / opentelemetry_config.py get_ot_config   3 0 0   100%
ivatar / opentelemetry_config.py setup_opentelemetry   14 4 0   71%
ivatar / opentelemetry_config.py get_tracer   1 0 0   100%
ivatar / opentelemetry_config.py get_meter   1 0 0   100%
ivatar / opentelemetry_config.py is_enabled   1 0 0   100%
ivatar / opentelemetry_config.py is_export_enabled   1 1 0   0%
ivatar / opentelemetry_config.py (no function)   38 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware.__init__   1 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware.__call__   6 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware.process_request   8 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware.process_response   14 1 0   93%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware._is_avatar_request   1 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware._add_avatar_attributes   7 2 0   71%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware._get_avatar_size   2 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware._get_avatar_format   2 0 0   100%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware._get_avatar_email   7 3 0   57%
ivatar / opentelemetry_middleware.py OpenTelemetryMiddleware._get_client_ip   4 1 0   75%
ivatar / opentelemetry_middleware.py trace_avatar_operation   3 0 0   100%
ivatar / opentelemetry_middleware.py trace_avatar_operation.decorator   2 0 0   100%
ivatar / opentelemetry_middleware.py trace_avatar_operation.decorator.wrapper   12 1 0   92%
ivatar / opentelemetry_middleware.py trace_file_upload   3 0 0   100%
ivatar / opentelemetry_middleware.py trace_file_upload.decorator   2 0 0   100%
ivatar / opentelemetry_middleware.py trace_file_upload.decorator.wrapper   15 8 0   47%
ivatar / opentelemetry_middleware.py trace_authentication   3 0 0   100%
ivatar / opentelemetry_middleware.py trace_authentication.decorator   2 0 0   100%
ivatar / opentelemetry_middleware.py trace_authentication.decorator.wrapper   10 4 0   60%
ivatar / opentelemetry_middleware.py AvatarMetrics.__init__   8 0 0   100%
ivatar / opentelemetry_middleware.py AvatarMetrics.record_avatar_request   1 0 0   100%
ivatar / opentelemetry_middleware.py AvatarMetrics.record_avatar_generated   1 0 0   100%
ivatar / opentelemetry_middleware.py AvatarMetrics.record_cache_hit   1 0 0   100%
ivatar / opentelemetry_middleware.py AvatarMetrics.record_cache_miss   1 0 0   100%
ivatar / opentelemetry_middleware.py AvatarMetrics.record_external_request   1 0 0   100%
ivatar / opentelemetry_middleware.py AvatarMetrics.record_file_upload   2 0 0   100%
ivatar / opentelemetry_middleware.py get_avatar_metrics   3 0 0   100%
ivatar / opentelemetry_middleware.py reset_avatar_metrics   1 0 0   100%
ivatar / opentelemetry_middleware.py (no function)   34 0 0   100%
ivatar / pagan_optimized.py OptimizedPagan._get_cached_avatar   20 4 0   80%
ivatar / pagan_optimized.py OptimizedPagan.get_cache_stats   4 0 0   100%
ivatar / pagan_optimized.py OptimizedPagan.clear_cache   3 0 0   100%
ivatar / pagan_optimized.py OptimizedPagan.generate_optimized   10 5 0   50%
ivatar / pagan_optimized.py create_optimized_pagan   23 16 0   30%
ivatar / pagan_optimized.py get_pagan_cache_info   1 0 0   100%
ivatar / pagan_optimized.py clear_pagan_cache   1 0 0   100%
ivatar / pagan_optimized.py create_pagan_avatar   1 1 0   0%
ivatar / pagan_optimized.py (no function)   24 0 0   100%
ivatar / robohash.py OptimizedRobohash.__init__   4 0 0   100%
ivatar / robohash.py OptimizedRobohash._get_cache_key   3 0 0   100%
ivatar / robohash.py OptimizedRobohash.assemble_optimized   28 9 0   68%
ivatar / robohash.py OptimizedRobohash.get_cache_stats   4 0 0   100%
ivatar / robohash.py OptimizedRobohash.clear_cache   3 0 0   100%
ivatar / robohash.py create_robohash   15 8 0   47%
ivatar / robohash.py get_robohash_cache_stats   1 0 0   100%
ivatar / robohash.py clear_robohash_cache   1 0 0   100%
ivatar / robohash.py (no function)   24 0 0   100%
ivatar / settings.py _test_logs_directory_writeability   9 2 0   78%
ivatar / settings.py (no function)   62 14 0   77%
ivatar / telemetry_utils.py _no_op_trace_decorator   2 0 0   100%
ivatar / telemetry_utils.py _no_op_trace_decorator.decorator   1 0 0   100%
ivatar / telemetry_utils.py NoOpMetrics.record_avatar_generated   1 0 0   100%
ivatar / telemetry_utils.py NoOpMetrics.record_avatar_request   1 0 0   100%
ivatar / telemetry_utils.py NoOpMetrics.record_cache_hit   1 0 0   100%
ivatar / telemetry_utils.py NoOpMetrics.record_cache_miss   1 0 0   100%
ivatar / telemetry_utils.py NoOpMetrics.record_external_request   1 0 0   100%
ivatar / telemetry_utils.py NoOpMetrics.record_file_upload   1 0 0   100%
ivatar / telemetry_utils.py get_telemetry_decorators   1 0 0   100%
ivatar / telemetry_utils.py get_telemetry_metrics   1 0 0   100%
ivatar / telemetry_utils.py is_telemetry_available   1 0 0   100%
ivatar / telemetry_utils.py (no function)   21 0 0   100%
ivatar / test_auxiliary.py Tester.setUp   1 0 0   100%
ivatar / test_auxiliary.py Tester.test_pil_format   6 0 0   100%
ivatar / test_auxiliary.py Tester.test_userprefs_str   2 0 0   100%
ivatar / test_auxiliary.py (no function)   10 0 0   100%
ivatar / test_config_defaults.py ConfigurableDefaultsTestCase.test_config_imports_successfully   7 2 0   71%
ivatar / test_config_defaults.py ConfigurableDefaultsTestCase.test_views_imports_config_successfully   7 2 0   71%
ivatar / test_config_defaults.py ConfigurableDefaultsTestCase.test_config_values_can_be_overridden   4 0 0   100%
ivatar / test_config_defaults.py ConfigurableDefaultsTestCase.test_default_values_are_correct   4 0 0   100%
ivatar / test_config_defaults.py (no function)   17 1 0   94%
ivatar / test_file_security.py FileSecurityTestCase.setUp   4 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.tearDown   1 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_valid_jpeg_validation   7 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_magic_bytes_validation   4 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_malicious_content_detection   4 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_file_size_validation   4 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_invalid_extension_validation   4 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_exif_sanitization   4 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_comprehensive_validation_function   6 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_security_report_generation   6 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_mime_type_validation   5 0 0   100%
ivatar / test_file_security.py FileSecurityTestCase.test_polyglot_attack_detection   6 0 0   100%
ivatar / test_file_security.py UploadPhotoFormSecurityTestCase.setUp   1 0 0   100%
ivatar / test_file_security.py UploadPhotoFormSecurityTestCase.test_form_validation_with_valid_file   7 0 0   100%
ivatar / test_file_security.py UploadPhotoFormSecurityTestCase.test_form_validation_with_malicious_file   9 0 0   100%
ivatar / test_file_security.py UploadPhotoViewSecurityTestCase.setUp   1 1 0   0%
ivatar / test_file_security.py UploadPhotoViewSecurityTestCase.tearDown   1 1 0   0%
ivatar / test_file_security.py FileSecurityIntegrationTestCase.setUp   1 0 0   100%
ivatar / test_file_security.py FileSecurityIntegrationTestCase.test_end_to_end_security_validation   1 0 0   100%
ivatar / test_file_security.py FileSecurityIntegrationTestCase.test_security_logging   1 0 0   100%
ivatar / test_file_security.py (no function)   32 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.setUp   3 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase._create_test_image   5 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_no_op_decorators_work   13 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_no_op_decorators_work.avatar_function   1 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_no_op_decorators_work.upload_function   1 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_no_op_decorators_work.auth_function   1 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_no_op_metrics_work   9 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_telemetry_utils_api_consistency   10 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_views_handle_telemetry_gracefully   5 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_file_upload_handles_telemetry_gracefully   14 4 0   71%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_authentication_handles_telemetry_gracefully   12 1 0   92%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_forced_no_op_mode   7 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_middleware_robustness   2 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_stats_endpoint_robustness   2 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_decorated_methods_in_views   6 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_metrics_integration_robustness   8 0 0   100%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_import_safety   10 2 0   80%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_view_imports_safety   7 2 0   71%
ivatar / test_graceful_degradation.py GracefulDegradationTestCase.test_end_to_end_avatar_workflow   6 0 0   100%
ivatar / test_graceful_degradation.py (no function)   25 1 0   96%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.setUp   7 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.tearDown   9 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase._mock_import_error   3 3 0   0%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase._create_test_image   5 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_telemetry_utils_without_opentelemetry   21 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_telemetry_utils_without_opentelemetry.mock_import   3 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_telemetry_utils_without_opentelemetry.test_func   1 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_views_work_without_opentelemetry   10 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_avatar_generation_without_opentelemetry   2 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_file_upload_without_opentelemetry   5 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_authentication_without_opentelemetry   4 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_user_registration_without_opentelemetry   6 2 0   67%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_decorated_functions_work_without_opentelemetry   12 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_decorated_functions_work_without_opentelemetry.avatar_function   1 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_decorated_functions_work_without_opentelemetry.upload_function   1 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_decorated_functions_work_without_opentelemetry.auth_function   1 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_metrics_recording_without_opentelemetry   9 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_application_startup_without_opentelemetry   3 0 0   100%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_views_import_safely_without_opentelemetry   7 2 0   71%
ivatar / test_no_opentelemetry.py NoOpenTelemetryTestCase.test_middleware_handles_missing_opentelemetry   2 0 0   100%
ivatar / test_no_opentelemetry.py OpenTelemetryFallbackIntegrationTest.setUp   1 0 0   100%
ivatar / test_no_opentelemetry.py OpenTelemetryFallbackIntegrationTest.test_full_avatar_workflow_without_opentelemetry   5 0 0   100%
ivatar / test_no_opentelemetry.py OpenTelemetryFallbackIntegrationTest.test_stats_endpoint_without_opentelemetry   2 0 0   100%
ivatar / test_no_opentelemetry.py OpenTelemetryFallbackIntegrationTest.test_version_endpoint_without_opentelemetry   2 0 0   100%
ivatar / test_no_opentelemetry.py (no function)   34 1 0   97%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.setUp   1 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.tearDown   2 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_config_always_enabled   2 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_config_enabled_with_env_var   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_service_name_default   7 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_service_name_custom   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_environment_default   7 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_environment_custom   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_resource_creation   10 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_setup_tracing_with_otlp   8 3 0   62%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_setup_metrics_with_prometheus_and_otlp   9 3 0   67%
ivatar / test_opentelemetry.py OpenTelemetryConfigTest.test_setup_instrumentation   7 3 0   57%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.setUp   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.test_middleware_enabled   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.test_avatar_request_attributes   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.test_is_avatar_request   4 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.test_get_avatar_size   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.test_get_avatar_format   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryMiddlewareTest.test_get_avatar_email   3 0 0   100%
ivatar / test_opentelemetry.py AvatarMetricsTest.setUp   1 0 0   100%
ivatar / test_opentelemetry.py AvatarMetricsTest.test_metrics_enabled   6 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_avatar_operation   5 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_avatar_operation.test_function   1 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_avatar_operation_exception   5 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_avatar_operation_exception.test_function   1 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_file_upload   4 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_file_upload.test_function   1 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_authentication   4 0 0   100%
ivatar / test_opentelemetry.py TracingDecoratorsTest.test_trace_authentication.test_function   1 0 0   100%
ivatar / test_opentelemetry.py IntegrationTest.setUp   1 0 0   100%
ivatar / test_opentelemetry.py IntegrationTest.tearDown   2 0 0   100%
ivatar / test_opentelemetry.py IntegrationTest.test_setup_opentelemetry_called   3 0 0   100%
ivatar / test_opentelemetry.py IntegrationTest.test_is_enabled_function   4 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.setUp   3 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.tearDown   2 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.test_opentelemetry_always_enabled   1 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.test_decorators_work   4 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.test_decorators_work.test_function   1 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.test_metrics_work   6 0 0   100%
ivatar / test_opentelemetry.py OpenTelemetryDisabledTest.test_middleware_enabled   6 0 0   100%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.setUp   6 0 0   100%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.tearDown   3 0 0   100%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_prometheus_server_starts   10 2 0   80%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_custom_metrics_available   27 8 0   70%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_metrics_increment_correctly   31 15 0   52%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_different_metric_labels   28 10 0   64%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_histogram_metrics   24 7 0   71%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_server_port_conflict_handling   8 0 0   100%
ivatar / test_opentelemetry.py PrometheusMetricsIntegrationTest.test_no_prometheus_endpoint_in_production_mode   10 1 0   90%
ivatar / test_opentelemetry.py (no function)   63 1 0   98%
ivatar / test_pagan_optimized.py TestOptimizedPagan.setUp   1 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_pagan_generation   6 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_deterministic_generation   8 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_different_digests_produce_different_images   9 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_compatibility_with_original   11 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_caching_functionality   18 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_different_sizes   6 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_cache_size_limit   10 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_create_optimized_pagan_function   7 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_error_handling   6 2 0   67%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_performance_improvement   33 0 0   100%
ivatar / test_pagan_optimized.py TestOptimizedPagan.test_cache_stats   11 0 0   100%
ivatar / test_pagan_optimized.py TestPaganPerformance.test_bulk_generation_performance   12 0 0   100%
ivatar / test_pagan_optimized.py TestPaganPerformance.test_cache_hit_performance   13 0 0   100%
ivatar / test_pagan_optimized.py (no function)   26 1 0   96%
ivatar / test_robohash.py RobohashOptimizationTestCase.setUp   3 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_optimized_robohash_functionality   9 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_identical_results   13 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_performance_improvement   11 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_integration_function   8 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_cache_functionality   10 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_multiple_random_emails_results   13 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_performance_improvement_multiple_cases   12 0 0   100%
ivatar / test_robohash.py RobohashOptimizationTestCase.test_random_email_generation_and_processing   12 0 0   100%
ivatar / test_robohash.py (no function)   18 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.setUp   1 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_cache_functionality   8 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_cache_stats   13 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_different_sizes_handled_correctly   7 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_create_robohash_function   6 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_performance_characteristics   14 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_cache_size_management   8 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_error_handling   8 2 0   75%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_different_robosets   8 0 0   100%
ivatar / test_robohash_cached.py TestConsolidatedRobohash.test_create_function_with_different_parameters   9 0 0   100%
ivatar / test_robohash_cached.py TestRobohashPerformance.test_performance_comparison   15 0 0   100%
ivatar / test_robohash_cached.py (no function)   21 1 0   95%
ivatar / test_security_fixes.py ETagSanitizationTest.setUp   2 0 0   100%
ivatar / test_security_fixes.py ETagSanitizationTest.test_etag_with_newlines_sanitized   8 0 0   100%
ivatar / test_security_fixes.py ETagSanitizationTest.test_etag_with_carriage_return_sanitized   7 0 0   100%
ivatar / test_security_fixes.py ETagSanitizationTest.test_etag_with_control_characters_sanitized   5 0 0   100%
ivatar / test_security_fixes.py ETagSanitizationTest.test_etag_normal_hash_unchanged   5 0 0   100%
ivatar / test_security_fixes.py ETagSanitizationTest.test_etag_fallback_for_short_path   6 0 0   100%
ivatar / test_security_fixes.py ETagSanitizationTest.test_non_avatar_urls_unchanged   6 0 0   100%
ivatar / test_security_fixes.py URLValidationTest.test_invalid_url_handling   4 0 0   100%
ivatar / test_security_fixes.py URLValidationTest.test_malformed_url_handling   4 0 0   100%
ivatar / test_security_fixes.py URLValidationTest.test_unicode_error_handling   4 0 0   100%
ivatar / test_security_fixes.py URLValidationTest.test_other_exceptions_passthrough   3 0 0   100%
ivatar / test_security_fixes.py URLValidationTest.test_successful_url_request   5 0 0   100%
ivatar / test_security_fixes.py URLValidationTest.test_security_logging   7 0 0   100%
ivatar / test_security_fixes.py IntegrationTest.test_sql_injection_attempt_url   9 0 0   100%
ivatar / test_security_fixes.py IntegrationTest.test_newline_injection_attempt   9 0 0   100%
ivatar / test_security_fixes.py (no function)   36 0 0   100%
ivatar / test_static_pages.py Tester.login   1 1 0   0%
ivatar / test_static_pages.py Tester.setUp   1 0 0   100%
ivatar / test_static_pages.py Tester.test_contact_page   2 0 0   100%
ivatar / test_static_pages.py Tester.test_description_page   2 0 0   100%
ivatar / test_static_pages.py Tester.test_security_page   2 0 0   100%
ivatar / test_static_pages.py (no function)   21 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.setUp   1 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_telemetry_utils_import   8 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_decorators_work_as_no_op   10 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_decorators_work_as_no_op.test_function   1 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_decorators_work_as_no_op.test_upload   1 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_decorators_work_as_no_op.test_login   1 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_metrics_work_as_no_op   6 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_telemetry_available_true   2 0 0   100%
ivatar / test_telemetry_integration.py TelemetryIntegrationTestCase.test_views_import_telemetry_safely   4 0 0   100%
ivatar / test_telemetry_integration.py MockTelemetryTestCase.setUp   1 0 0   100%
ivatar / test_telemetry_integration.py MockTelemetryTestCase.test_avatar_generation_metrics   3 0 0   100%
ivatar / test_telemetry_integration.py MockTelemetryTestCase.test_file_upload_metrics   2 0 0   100%
ivatar / test_telemetry_integration.py MockTelemetryTestCase.test_external_request_metrics   2 0 0   100%
ivatar / test_telemetry_integration.py MockTelemetryTestCase.test_cache_metrics   4 0 0   100%
ivatar / test_telemetry_integration.py (no function)   23 1 0   96%
ivatar / test_utils.py Tester.test_openid_variations   20 0 0   100%
ivatar / test_utils.py Tester.test_is_trusted_url   12 0 0   100%
ivatar / test_utils.py (no function)   5 0 0   100%
ivatar / test_views.py Tester.login   1 0 0   100%
ivatar / test_views.py Tester.setUp   1 0 0   100%
ivatar / test_views.py Tester.test_incorrect_digest   2 0 0   100%
ivatar / test_views.py Tester.test_logout   5 0 0   100%
ivatar / test_views.py Tester.test_Bluesky_client   6 4 0   33%
ivatar / test_views.py (no function)   26 0 0   100%
ivatar / test_views_stats.py StatsTester.login   1 1 0   0%
ivatar / test_views_stats.py StatsTester.setUp   1 0 0   100%
ivatar / test_views_stats.py StatsTester.test_stats_basic   9 0 0   100%
ivatar / test_views_stats.py StatsTester.test_stats_comprehensive   57 0 0   100%
ivatar / test_views_stats.py StatsTester.test_stats_edge_cases   10 0 0   100%
ivatar / test_views_stats.py StatsTester.test_stats_with_bluesky_handles   15 0 0   100%
ivatar / test_views_stats.py StatsTester.test_stats_photo_duplicates   11 0 0   100%
ivatar / test_views_stats.py (no function)   21 0 0   100%
ivatar / test_wsgi.py TestCase.test_run_wsgi   2 0 0   100%
ivatar / test_wsgi.py (no function)   7 0 0   100%
ivatar / tools / __init__.py (no function)   0 0 0   100%
ivatar / tools / forms.py CheckForm.clean   16 8 0   50%
ivatar / tools / forms.py CheckForm.clean_openid   2 0 0   100%
ivatar / tools / forms.py CheckForm.clean_mail   2 0 0   100%
ivatar / tools / forms.py (no function)   18 0 0   100%
ivatar / tools / test_views.py Tester.login   1 0 0   100%
ivatar / tools / test_views.py Tester.setUp   1 0 0   100%
ivatar / tools / test_views.py Tester.test_check_mail   8 0 0   100%
ivatar / tools / test_views.py Tester.test_check_openid   7 0 0   100%
ivatar / tools / test_views.py Tester.test_check_domain   7 0 0   100%
ivatar / tools / test_views.py (no function)   21 0 0   100%
ivatar / tools / urls.py (no function)   3 0 0   100%
ivatar / tools / views.py CheckDomainView.form_valid   11 0 0   100%
ivatar / tools / views.py CheckView.form_valid   46 13 0   72%
ivatar / tools / views.py lookup_avatar_server   27 9 0   67%
ivatar / tools / views.py srv_hostname   29 25 0   14%
ivatar / tools / views.py lookup_ip_address   18 6 0   67%
ivatar / tools / views.py (no function)   25 0 0   100%
ivatar / urls.py (no function)   19 3 0   84%
ivatar / utils.py urlopen   16 0 0   100%
ivatar / utils.py Bluesky.__init__   3 0 0   100%
ivatar / utils.py Bluesky._is_session_valid   4 2 0   50%
ivatar / utils.py Bluesky.login   12 3 0   75%
ivatar / utils.py Bluesky.clear_shared_session   3 0 0   100%
ivatar / utils.py Bluesky.normalize_handle   7 3 0   57%
ivatar / utils.py Bluesky._make_profile_request   17 9 0   47%
ivatar / utils.py Bluesky.get_profile   3 0 0   100%
ivatar / utils.py Bluesky.get_avatar   2 0 0   100%
ivatar / utils.py random_string   1 0 0   100%
ivatar / utils.py generate_random_email   4 0 0   100%
ivatar / utils.py random_ip_address   1 0 0   100%
ivatar / utils.py openid_variations   8 0 0   100%
ivatar / utils.py mm_ng   32 32 0   0%
ivatar / utils.py is_trusted_url   24 1 0   96%
ivatar / utils.py resize_animated_gif   6 6 0   0%
ivatar / utils.py resize_animated_gif._thumbnail_frames   4 4 0   0%
ivatar / utils.py (no function)   41 0 0   100%
ivatar / views.py get_size   12 1 0   92%
ivatar / views.py CachingHttpResponse.__init__   3 0 0   100%
ivatar / views.py AvatarImageView.options   3 3 0   0%
ivatar / views.py AvatarImageView.get   126 42 0   67%
ivatar / views.py AvatarImageView._redirect_static_w_size   4 1 0   75%
ivatar / views.py AvatarImageView._return_cached_response   4 4 0   0%
ivatar / views.py AvatarImageView._return_cached_png   2 2 0   0%
ivatar / views.py GravatarProxyView.get   54 39 0   28%
ivatar / views.py GravatarProxyView.get.redir_default   4 1 0   75%
ivatar / views.py BlueskyProxyView.get   73 73 0   0%
ivatar / views.py BlueskyProxyView.get.redir_default   4 4 0   0%
ivatar / views.py StatsView.get   61 3 0   95%
ivatar / views.py _get_git_info_from_files   68 23 0   66%
ivatar / views.py _get_cached_version_info   6 1 0   83%
ivatar / views.py DeploymentVersionView.get   13 7 0   46%
ivatar / views.py (no function)   62 0 0   100%
ivatar / wsgi.py (no function)   4 0 0   100%
manage.py (no function)   7 7 2   0%
scripts / run_tests_with_coverage.py main   17 2 0   88%
scripts / run_tests_with_coverage.py (no function)   8 0 0   100%
setup.py (no function)   2 2 0   0%
Total     5785 801 231   86%

No items found using the specified filter.