Coverage report: 96%

Files Functions Classes

coverage.py v7.5.0, created at 2024-10-15 13:03 +0000

File function statements missing excluded coverage
src/app.py log_unhandled_exception 4 4 0 0%
src/app.py (no function) 46 46 0 0%
src/couchers/__init__.py (no function) 0 0 0 100%
src/couchers/config.py check_config 18 18 0 0%
src/couchers/config.py (no function) 28 4 0 86%
src/couchers/constants.py (no function) 15 0 0 100%
src/couchers/crypto.py b64encode 1 0 0 100%
src/couchers/crypto.py b64decode 1 0 0 100%
src/couchers/crypto.py b64encode_unpadded 1 0 0 100%
src/couchers/crypto.py b64decode_unpadded 1 0 0 100%
src/couchers/crypto.py urlsafe_random_bytes 1 0 0 100%
src/couchers/crypto.py urlsafe_secure_token 1 0 0 100%
src/couchers/crypto.py cookiesafe_secure_token 1 0 0 100%
src/couchers/crypto.py hash_password 1 0 0 100%
src/couchers/crypto.py verify_password 5 2 0 60%
src/couchers/crypto.py random_hex 1 0 0 100%
src/couchers/crypto.py secure_compare 1 0 0 100%
src/couchers/crypto.py generate_hash_signature 1 0 0 100%
src/couchers/crypto.py simple_hash_signature 4 1 0 75%
src/couchers/crypto.py verify_hash_signature 1 0 0 100%
src/couchers/crypto.py generate_random_5digit_string 1 0 0 100%
src/couchers/crypto.py verify_token 1 0 0 100%
src/couchers/crypto.py get_secret 1 0 0 100%
src/couchers/crypto.py aead_generate_nonce 1 0 0 100%
src/couchers/crypto.py aead_generate_key 1 1 0 0%
src/couchers/crypto.py aead_encrypt 4 0 0 100%
src/couchers/crypto.py aead_decrypt 1 0 0 100%
src/couchers/crypto.py simple_encrypt 3 0 0 100%
src/couchers/crypto.py simple_decrypt 3 0 0 100%
src/couchers/crypto.py encrypt_page_token 1 0 0 100%
src/couchers/crypto.py decrypt_page_token 1 0 0 100%
src/couchers/crypto.py asym_encrypt 1 0 0 100%
src/couchers/crypto.py asym_decrypt 1 0 0 100%
src/couchers/crypto.py generate_asym_keypair 2 0 0 100%
src/couchers/crypto.py (no function) 47 0 0 100%
src/couchers/db.py apply_migrations 8 0 0 100%
src/couchers/db.py _get_base_engine 1 0 0 100%
src/couchers/db.py session_scope 23 10 0 57%
src/couchers/db.py worker_repeatable_read_session_scope 23 10 0 57%
src/couchers/db.py db_post_fork 1 1 0 0%
src/couchers/db.py before_cursor_execute 1 0 0 100%
src/couchers/db.py after_cursor_execute 3 0 0 100%
src/couchers/db.py are_friends 1 1 0 0%
src/couchers/db.py get_parent_node_at_location 1 0 0 100%
src/couchers/db.py get_node_parents_recursively 3 0 0 100%
src/couchers/db.py _can_moderate_any_cluster 1 0 0 100%
src/couchers/db.py can_moderate_at 2 0 0 100%
src/couchers/db.py can_moderate_node 1 0 0 100%
src/couchers/db.py timezone_at_coordinate 4 4 0 0%
src/couchers/db.py (no function) 43 0 0 100%
src/couchers/descriptor_pool.py get_descriptors_pb 2 0 0 100%
src/couchers/descriptor_pool.py get_descriptor_pool 6 0 0 100%
src/couchers/descriptor_pool.py (no function) 7 0 0 100%
src/couchers/email/__init__.py _queue_email 2 0 0 100%
src/couchers/email/__init__.py queue_email 1 0 0 100%
src/couchers/email/__init__.py enqueue_system_email 6 0 0 100%
src/couchers/email/__init__.py (no function) 13 0 0 100%
src/couchers/email/dev.py print_dev_email 4 0 0 100%
src/couchers/email/dev.py (no function) 5 0 0 100%
src/couchers/email/smtp.py make_cid 3 0 0 100%
src/couchers/email/smtp.py send_smtp_email 33 5 0 85%
src/couchers/email/smtp.py (no function) 11 0 0 100%
src/couchers/errors.py (no function) 164 0 0 100%
src/couchers/helpers/__init__.py (no function) 0 0 0 100%
src/couchers/helpers/badges.py user_add_badge 5 0 0 100%
src/couchers/helpers/badges.py user_remove_badge 5 0 0 100%
src/couchers/helpers/badges.py (no function) 7 0 0 100%
src/couchers/helpers/clusters.py create_node 4 0 0 100%
src/couchers/helpers/clusters.py create_cluster 12 1 0 92%
src/couchers/helpers/clusters.py (no function) 7 0 0 100%
src/couchers/helpers/geoip.py geoip_approximate_location 14 12 0 14%
src/couchers/helpers/geoip.py (no function) 6 0 0 100%
src/couchers/interceptors.py _binned_now 1 0 0 100%
src/couchers/interceptors.py _try_get_and_update_user_details 16 1 0 94%
src/couchers/interceptors.py abort_handler 2 0 0 100%
src/couchers/interceptors.py abort_handler.f 1 0 0 100%
src/couchers/interceptors.py unauthenticated_handler 1 0 0 100%
src/couchers/interceptors.py AuthValidatorInterceptor.__init__ 1 0 0 100%
src/couchers/interceptors.py AuthValidatorInterceptor.intercept_service 38 0 0 100%
src/couchers/interceptors.py AuthValidatorInterceptor.intercept_service.user_unaware_function 4 0 0 100%
src/couchers/interceptors.py CookieInterceptor.intercept_service 6 0 0 100%
src/couchers/interceptors.py CookieInterceptor.intercept_service.user_unaware_function 8 2 0 75%
src/couchers/interceptors.py ManualAuthValidatorInterceptor.__init__ 1 0 0 100%
src/couchers/interceptors.py ManualAuthValidatorInterceptor.intercept_service 5 1 0 80%
src/couchers/interceptors.py OTelInterceptor.__init__ 1 0 0 100%
src/couchers/interceptors.py OTelInterceptor.intercept_service 7 7 0 0%
src/couchers/interceptors.py OTelInterceptor.intercept_service.tracing_function 10 10 0 0%
src/couchers/interceptors.py SessionInterceptor.intercept_service 4 0 0 100%
src/couchers/interceptors.py SessionInterceptor.intercept_service.function_without_session 2 0 0 100%
src/couchers/interceptors.py TracingInterceptor._sanitized_bytes 6 0 0 100%
src/couchers/interceptors.py TracingInterceptor._sanitized_bytes._sanitize_message 11 1 0 91%
src/couchers/interceptors.py TracingInterceptor._store_log 10 2 0 80%
src/couchers/interceptors.py TracingInterceptor.intercept_service 8 0 0 100%
src/couchers/interceptors.py TracingInterceptor.intercept_service.tracing_function 25 0 0 100%
src/couchers/interceptors.py ErrorSanitizationInterceptor.intercept_service 4 0 0 100%
src/couchers/interceptors.py ErrorSanitizationInterceptor.intercept_service.sanitizing_function 11 0 0 100%
src/couchers/interceptors.py (no function) 44 0 0 100%
src/couchers/jobs/__init__.py (no function) 0 0 0 100%
src/couchers/jobs/enqueue.py queue_job 3 0 0 100%
src/couchers/jobs/enqueue.py (no function) 4 0 0 100%
src/couchers/jobs/handlers.py send_email 5 0 0 100%
src/couchers/jobs/handlers.py purge_login_tokens 3 0 0 100%
src/couchers/jobs/handlers.py purge_password_reset_tokens 3 0 0 100%
src/couchers/jobs/handlers.py purge_account_deletion_tokens 3 0 0 100%
src/couchers/jobs/handlers.py send_message_notifications 10 0 0 100%
src/couchers/jobs/handlers.py send_message_notifications.format_title 3 0 0 100%
src/couchers/jobs/handlers.py send_request_notifications 14 0 0 100%
src/couchers/jobs/handlers.py send_onboarding_emails 14 0 0 100%
src/couchers/jobs/handlers.py send_reference_reminders 20 0 0 100%
src/couchers/jobs/handlers.py add_users_to_email_list 19 3 0 84%
src/couchers/jobs/handlers.py enforce_community_membership 1 0 0 100%
src/couchers/jobs/handlers.py update_recommendation_scores 64 0 0 100%
src/couchers/jobs/handlers.py update_recommendation_scores.poor_man_gaussian 2 0 0 100%
src/couchers/jobs/handlers.py update_recommendation_scores.int_ 1 0 0 100%
src/couchers/jobs/handlers.py update_recommendation_scores.float_ 1 0 0 100%
src/couchers/jobs/handlers.py update_badges 9 0 0 100%
src/couchers/jobs/handlers.py update_badges.update_badge 9 0 0 100%
src/couchers/jobs/handlers.py finalize_strong_verification 28 1 0 96%
src/couchers/jobs/handlers.py (no function) 83 0 0 100%
src/couchers/jobs/worker.py process_job 34 0 0 100%
src/couchers/jobs/worker.py service_jobs 7 0 0 100%
src/couchers/jobs/worker.py _run_job_and_schedule 5 0 0 100%
src/couchers/jobs/worker.py run_scheduler 4 0 0 100%
src/couchers/jobs/worker.py _run_forever 9 9 0 0%
src/couchers/jobs/worker.py start_jobs_scheduler 3 3 0 0%
src/couchers/jobs/worker.py start_jobs_worker 3 3 0 0%
src/couchers/jobs/worker.py (no function) 34 0 0 100%
src/couchers/materialized_views.py refresh_materialized_views 4 0 0 100%
src/couchers/materialized_views.py refresh_materialized_views_rapid 3 0 0 100%
src/couchers/materialized_views.py (no function) 17 0 0 100%
src/couchers/metrics.py observe_in_jobs_duration_histogram 1 0 0 100%
src/couchers/metrics.py observe_in_servicer_duration_histogram 1 0 0 100%
src/couchers/metrics.py _make_gauge_from_query 4 0 0 100%
src/couchers/metrics.py _make_gauge_from_query.func 2 2 0 0%
src/couchers/metrics.py create_prometheus_server 6 0 0 100%
src/couchers/metrics.py (no function) 47 0 0 100%
src/couchers/models.py User.has_completed_profile 1 0 0 100%
src/couchers/models.py User.has_completed_profile 1 0 0 100%
src/couchers/models.py User.is_jailed 1 0 0 100%
src/couchers/models.py User.is_missing_location 1 0 0 100%
src/couchers/models.py User.is_visible 1 0 0 100%
src/couchers/models.py User.coordinates 3 0 0 100%
src/couchers/models.py User.display_joined 1 0 0 100%
src/couchers/models.py User.display_last_active 1 0 0 100%
src/couchers/models.py User.phone_is_verified 1 0 0 100%
src/couchers/models.py User.phone_is_verified 1 0 0 100%
src/couchers/models.py User.phone_code_expired 1 0 0 100%
src/couchers/models.py User.__repr__ 1 0 0 100%
src/couchers/models.py StrongVerificationAttempt.is_valid 1 0 0 100%
src/couchers/models.py StrongVerificationAttempt.is_valid 1 0 0 100%
src/couchers/models.py StrongVerificationAttempt.is_visible 1 0 0 100%
src/couchers/models.py StrongVerificationAttempt.matches_birthdate 1 0 0 100%
src/couchers/models.py StrongVerificationAttempt.matches_gender 1 0 0 100%
src/couchers/models.py StrongVerificationAttempt.has_strong_verification 1 0 0 100%
src/couchers/models.py ModNote.__repr__ 1 1 0 0%
src/couchers/models.py ModNote.is_pending 1 0 0 100%
src/couchers/models.py ContributorForm.is_filled 1 0 0 100%
src/couchers/models.py ContributorForm.should_notify 1 0 0 100%
src/couchers/models.py SignupFlow.token_is_valid 1 0 0 100%
src/couchers/models.py SignupFlow.account_is_filled 1 0 0 100%
src/couchers/models.py SignupFlow.is_completed 1 0 0 100%
src/couchers/models.py LoginToken.is_valid 1 0 0 100%
src/couchers/models.py LoginToken.__repr__ 1 1 0 0%
src/couchers/models.py PasswordResetToken.is_valid 1 0 0 100%
src/couchers/models.py PasswordResetToken.__repr__ 1 1 0 0%
src/couchers/models.py AccountDeletionToken.is_valid 1 0 0 100%
src/couchers/models.py AccountDeletionToken.__repr__ 1 1 0 0%
src/couchers/models.py UserSession.is_valid 1 0 0 100%
src/couchers/models.py Conversation.__repr__ 1 1 0 0%
src/couchers/models.py GroupChat.__repr__ 1 1 0 0%
src/couchers/models.py GroupChatSubscription.muted_display 5 0 0 100%
src/couchers/models.py GroupChatSubscription.is_muted 1 0 0 100%
src/couchers/models.py GroupChatSubscription.__repr__ 1 1 0 0%
src/couchers/models.py Message.is_normal_message 1 0 0 100%
src/couchers/models.py Message.__repr__ 1 1 0 0%
src/couchers/models.py HostRequest.can_write_reference 1 0 0 100%
src/couchers/models.py HostRequest.can_write_reference 1 0 0 100%
src/couchers/models.py HostRequest.__repr__ 1 1 0 0%
src/couchers/models.py Reference.should_report 1 0 0 100%
src/couchers/models.py InitiatedUpload.is_valid 1 0 0 100%
src/couchers/models.py Upload._url 1 0 0 100%
src/couchers/models.py Upload.thumbnail_url 1 0 0 100%
src/couchers/models.py Upload.full_url 1 0 0 100%
src/couchers/models.py Cluster.is_leaf 1 0 0 100%
src/couchers/models.py Page.__repr__ 1 1 0 0%
src/couchers/models.py PageVersion.coordinates 3 0 0 100%
src/couchers/models.py PageVersion.__repr__ 1 1 0 0%
src/couchers/models.py EventOccurrence.coordinates 3 1 0 67%
src/couchers/models.py EventOccurrence.start_time 1 0 0 100%
src/couchers/models.py EventOccurrence.start_time 1 0 0 100%
src/couchers/models.py EventOccurrence.end_time 1 0 0 100%
src/couchers/models.py EventOccurrence.end_time 1 0 0 100%
src/couchers/models.py BackgroundJob.ready_for_retry 1 0 0 100%
src/couchers/models.py BackgroundJob.__repr__ 1 0 0 100%
src/couchers/models.py NotificationTopicAction.__init__ 4 0 0 100%
src/couchers/models.py NotificationTopicAction.unpack 1 0 0 100%
src/couchers/models.py NotificationTopicAction.display 1 0 0 100%
src/couchers/models.py NotificationTopicAction.__str__ 1 1 0 0%
src/couchers/models.py Notification.topic 1 0 0 100%
src/couchers/models.py Notification.action 1 0 0 100%
src/couchers/models.py (no function) 993 0 0 100%
src/couchers/notifications/__init__.py (no function) 0 0 0 100%
src/couchers/notifications/background.py _send_email_notification 42 2 0 95%
src/couchers/notifications/background.py _send_push_notification 5 1 0 80%
src/couchers/notifications/background.py handle_notification 15 0 0 100%
src/couchers/notifications/background.py send_raw_push_notification 19 19 0 0%
src/couchers/notifications/background.py handle_email_digests 15 15 0 0%
src/couchers/notifications/background.py (no function) 29 0 0 100%
src/couchers/notifications/notify.py notify 6 0 0 100%
src/couchers/notifications/notify.py (no function) 8 0 0 100%
src/couchers/notifications/push.py get_vapid_public_key 1 0 0 100%
src/couchers/notifications/push.py push_to_subscription 1 0 0 100%
src/couchers/notifications/push.py _push_to_user 3 1 0 67%
src/couchers/notifications/push.py push_to_user 1 0 0 100%
src/couchers/notifications/push.py (no function) 15 0 0 100%
src/couchers/notifications/push_api.py gen_vapid_keys 5 5 0 0%
src/couchers/notifications/push_api.py get_vapid_public_key_from_private_key 2 0 0 100%
src/couchers/notifications/push_api.py generate_vapid_authorization 3 3 0 0%
src/couchers/notifications/push_api.py send_push 4 4 0 0%
src/couchers/notifications/push_api.py decode_key 1 0 0 100%
src/couchers/notifications/push_api.py parse_subscription_info 4 4 0 0%
src/couchers/notifications/push_api.py (no function) 16 0 0 100%
src/couchers/notifications/render.py render_notification 160 29 0 82%
src/couchers/notifications/render.py (no function) 21 0 0 100%
src/couchers/notifications/settings.py get_preference 2 0 0 100%
src/couchers/notifications/settings.py reset_preference 4 4 0 0%
src/couchers/notifications/settings.py set_preference 7 0 0 100%
src/couchers/notifications/settings.py check_settings 13 0 0 100%
src/couchers/notifications/settings.py get_user_setting_groups 13 0 0 100%
src/couchers/notifications/settings.py (no function) 17 0 0 100%
src/couchers/notifications/unsubscribe.py _generate_unsubscribe_link 3 0 0 100%
src/couchers/notifications/unsubscribe.py generate_do_not_email 1 0 0 100%
src/couchers/notifications/unsubscribe.py generate_unsub_topic_key 1 0 0 100%
src/couchers/notifications/unsubscribe.py generate_unsub_topic_action 1 0 0 100%
src/couchers/notifications/unsubscribe.py unsubscribe 30 13 0 57%
src/couchers/notifications/unsubscribe.py (no function) 17 0 0 100%
src/couchers/notifications/utils.py (no function) 2 0 0 100%
src/couchers/phone/check.py is_e164_format 1 0 0 100%
src/couchers/phone/check.py is_known_operator 4 1 0 75%
src/couchers/phone/check.py (no function) 3 0 0 100%
src/couchers/phone/sms.py generate_random_code 1 0 0 100%
src/couchers/phone/sms.py looks_like_a_code 1 0 0 100%
src/couchers/phone/sms.py format_message 1 0 0 100%
src/couchers/phone/sms.py send_sms 11 0 0 100%
src/couchers/phone/sms.py (no function) 12 0 0 100%
src/couchers/profiler.py add_sql_statement 2 1 0 50%
src/couchers/profiler.py format_ns 1 1 0 0%
src/couchers/profiler.py CouchersProfiler.__init__ 3 0 0 100%
src/couchers/profiler.py CouchersProfiler.__enter__ 7 4 0 43%
src/couchers/profiler.py CouchersProfiler.__exit__ 18 15 0 17%
src/couchers/profiler.py CouchersProfiler.__exit__.sql_time 2 2 0 0%
src/couchers/profiler.py CouchersProfiler.__exit__.format_sql 2 2 0 0%
src/couchers/profiler.py (no function) 17 0 0 100%
src/couchers/resources.py get_terms_of_service 2 0 0 100%
src/couchers/resources.py get_community_guidelines 7 0 0 100%
src/couchers/resources.py get_region_dict 2 0 0 100%
src/couchers/resources.py region_is_allowed 1 0 0 100%
src/couchers/resources.py get_language_dict 2 0 0 100%
src/couchers/resources.py get_badge_data 2 0 0 100%
src/couchers/resources.py get_badge_dict 1 0 0 100%
src/couchers/resources.py get_static_badge_dict 1 0 0 100%
src/couchers/resources.py language_is_allowed 1 0 0 100%
src/couchers/resources.py copy_resources_to_database 21 4 0 81%
src/couchers/resources.py (no function) 29 0 0 100%
src/couchers/server.py create_main_server 27 0 0 100%
src/couchers/server.py create_media_server 4 0 0 100%
src/couchers/server.py (no function) 31 0 0 100%
src/couchers/servicers/__init__.py (no function) 0 0 0 100%
src/couchers/servicers/account.py has_strong_verification 5 5 0 0%
src/couchers/servicers/account.py mod_note_to_pb 1 0 0 100%
src/couchers/servicers/account.py get_strong_verification_fields 13 0 0 100%
src/couchers/servicers/account.py abort_on_invalid_password 6 0 0 100%
src/couchers/servicers/account.py Account.GetAccountInfo 2 0 0 100%
src/couchers/servicers/account.py Account.ChangePasswordV2 8 0 0 100%
src/couchers/servicers/account.py Account.ChangeEmailV2 14 0 0 100%
src/couchers/servicers/account.py Account.FillContributorForm 8 0 0 100%
src/couchers/servicers/account.py Account.GetContributorFormInfo 2 0 0 100%
src/couchers/servicers/account.py Account.ChangePhone 27 0 0 100%
src/couchers/servicers/account.py Account.VerifyPhone 19 2 0 89%
src/couchers/servicers/account.py Account.InitiateStrongVerification 18 2 0 89%
src/couchers/servicers/account.py Account.GetStrongVerificationAttemptStatus 5 1 0 80%
src/couchers/servicers/account.py Account.DeleteStrongVerificationData 13 0 0 100%
src/couchers/servicers/account.py Account.DeleteAccount 14 0 0 100%
src/couchers/servicers/account.py Account.ListModNotes 3 0 0 100%
src/couchers/servicers/account.py Account.ListActiveSessions 6 0 0 100%
src/couchers/servicers/account.py Account.ListActiveSessions._active_session_to_pb 2 0 0 100%
src/couchers/servicers/account.py Account.LogOutSession 3 0 0 100%
src/couchers/servicers/account.py Account.LogOutOtherSessions 5 0 0 100%
src/couchers/servicers/account.py Iris.Webhook 19 2 0 89%
src/couchers/servicers/account.py (no function) 52 0 0 100%
src/couchers/servicers/admin.py _user_to_details 1 0 0 100%
src/couchers/servicers/admin.py _content_report_to_pb 1 0 0 100%
src/couchers/servicers/admin.py append_admin_note 4 0 0 100%
src/couchers/servicers/admin.py Admin.GetUserDetails 4 1 0 75%
src/couchers/servicers/admin.py Admin.GetUser 4 4 0 0%
src/couchers/servicers/admin.py Admin.ChangeUserGender 7 1 0 86%
src/couchers/servicers/admin.py Admin.ChangeUserBirthdate 7 1 0 86%
src/couchers/servicers/admin.py Admin.AddBadge 12 1 0 92%
src/couchers/servicers/admin.py Admin.RemoveBadge 13 3 0 77%
src/couchers/servicers/admin.py Admin.SetPassportSexGenderException 5 1 0 80%
src/couchers/servicers/admin.py Admin.BanUser 6 1 0 83%
src/couchers/servicers/admin.py Admin.UnbanUser 6 1 0 83%
src/couchers/servicers/admin.py Admin.AddAdminNote 5 1 0 80%
src/couchers/servicers/admin.py Admin.GetContentReport 4 0 0 100%
src/couchers/servicers/admin.py Admin.GetContentReportsForAuthor 5 1 0 80%
src/couchers/servicers/admin.py Admin.SendModNote 8 1 0 88%
src/couchers/servicers/admin.py Admin.DeleteUser 5 1 0 80%
src/couchers/servicers/admin.py Admin.CreateApiKey 6 1 0 83%
src/couchers/servicers/admin.py Admin.CreateCommunity 7 0 0 100%
src/couchers/servicers/admin.py Admin.GetChats 9 1 0 89%
src/couchers/servicers/admin.py Admin.GetChats.format_user 1 0 0 100%
src/couchers/servicers/admin.py Admin.GetChats.format_conversation 8 8 0 0%
src/couchers/servicers/admin.py Admin.GetChats.format_host_request 7 7 0 0%
src/couchers/servicers/admin.py Admin.GetChats.format_group_chat 11 11 0 0%
src/couchers/servicers/admin.py Admin.GetChats.format_all_chats_for_user 12 2 0 83%
src/couchers/servicers/admin.py Admin.ListEventCommunityInviteRequests 5 0 0 100%
src/couchers/servicers/admin.py Admin.ListEventCommunityInviteRequests._request_to_pb 2 0 0 100%
src/couchers/servicers/admin.py Admin.DecideEventCommunityInviteRequest 15 2 0 87%
src/couchers/servicers/admin.py Admin.DeleteEvent 7 1 0 86%
src/couchers/servicers/admin.py (no function) 48 0 0 100%
src/couchers/servicers/api.py API.Ping 7 0 0 100%
src/couchers/servicers/api.py API.GetUser 4 1 0 75%
src/couchers/servicers/api.py API.GetLiteUser 4 1 0 75%
src/couchers/servicers/api.py API.GetLiteUsers 16 0 0 100%
src/couchers/servicers/api.py API.UpdateProfile 169 3 0 98%
src/couchers/servicers/api.py API.ListFriends 2 0 0 100%
src/couchers/servicers/api.py API.ListMutualFriends 12 1 0 92%
src/couchers/servicers/api.py API.SendFriendRequest 13 2 0 85%
src/couchers/servicers/api.py API.ListFriendRequests 3 0 0 100%
src/couchers/servicers/api.py API.RespondFriendRequest 9 1 0 89%
src/couchers/servicers/api.py API.CancelFriendRequest 7 1 0 86%
src/couchers/servicers/api.py API.InitiateMediaUpload 11 0 0 100%
src/couchers/servicers/api.py user_model_to_pb 59 1 0 98%
src/couchers/servicers/api.py (no function) 45 0 0 100%
src/couchers/servicers/auth.py _auth_res 1 0 0 100%
src/couchers/servicers/auth.py create_session 15 0 0 100%
src/couchers/servicers/auth.py delete_session 6 1 0 83%
src/couchers/servicers/auth.py _username_available 6 0 0 100%
src/couchers/servicers/auth.py Auth.SignupFlow 103 10 0 90%
src/couchers/servicers/auth.py Auth.UsernameValid 1 0 0 100%
src/couchers/servicers/auth.py Auth.Authenticate 17 0 0 100%
src/couchers/servicers/auth.py Auth.GetAuthState 4 0 0 100%
src/couchers/servicers/auth.py Auth.Deauthenticate 6 0 0 100%
src/couchers/servicers/auth.py Auth.ResetPassword 9 0 0 100%
src/couchers/servicers/auth.py Auth.CompletePasswordResetV2 12 0 0 100%
src/couchers/servicers/auth.py Auth.ConfirmChangeEmailV2 10 0 0 100%
src/couchers/servicers/auth.py Auth.ConfirmDeleteAccount 12 1 0 92%
src/couchers/servicers/auth.py Auth.RecoverAccount 9 1 0 89%
src/couchers/servicers/auth.py Auth.Unsubscribe 1 0 0 100%
src/couchers/servicers/auth.py (no function) 35 0 0 100%
src/couchers/servicers/blocking.py are_blocked 3 0 0 100%
src/couchers/servicers/blocking.py Blocking.BlockUser 11 1 0 91%
src/couchers/servicers/blocking.py Blocking.UnblockUser 9 1 0 89%
src/couchers/servicers/blocking.py Blocking.GetBlockedUsers 2 0 0 100%
src/couchers/servicers/blocking.py (no function) 12 0 0 100%
src/couchers/servicers/bugs.py Bugs._version 1 0 0 100%
src/couchers/servicers/bugs.py Bugs.Version 1 0 0 100%
src/couchers/servicers/bugs.py Bugs.ReportBug 17 0 0 100%
src/couchers/servicers/bugs.py Bugs.Status 2 0 0 100%
src/couchers/servicers/bugs.py Bugs.GetDescriptors 1 0 0 100%
src/couchers/servicers/bugs.py (no function) 16 0 0 100%
src/couchers/servicers/communities.py _parents_to_pb 2 0 0 100%
src/couchers/servicers/communities.py community_to_pb 6 0 0 100%
src/couchers/servicers/communities.py Communities.GetCommunity 4 1 0 75%
src/couchers/servicers/communities.py Communities.ListCommunities 4 0 0 100%
src/couchers/servicers/communities.py Communities.ListGroups 4 0 0 100%
src/couchers/servicers/communities.py Communities.ListAdmins 7 1 0 86%
src/couchers/servicers/communities.py Communities.AddAdmin 15 2 0 87%
src/couchers/servicers/communities.py Communities.RemoveAdmin 15 3 0 80%
src/couchers/servicers/communities.py Communities.ListMembers 7 1 0 86%
src/couchers/servicers/communities.py Communities.ListNearbyUsers 7 1 0 86%
src/couchers/servicers/communities.py Communities.ListPlaces 7 7 0 0%
src/couchers/servicers/communities.py Communities.ListGuides 7 7 0 0%
src/couchers/servicers/communities.py Communities.ListEvents 12 2 0 83%
src/couchers/servicers/communities.py Communities.ListDiscussions 7 1 0 86%
src/couchers/servicers/communities.py Communities.JoinCommunity 8 1 0 88%
src/couchers/servicers/communities.py Communities.LeaveCommunity 10 1 0 90%
src/couchers/servicers/communities.py Communities.ListUserCommunities 5 0 0 100%
src/couchers/servicers/communities.py (no function) 36 0 0 100%
src/couchers/servicers/conversations.py _message_to_pb 3 0 0 100%
src/couchers/servicers/conversations.py _get_visible_members_for_subscription 3 0 0 100%
src/couchers/servicers/conversations.py _get_visible_admins_for_subscription 3 0 0 100%
src/couchers/servicers/conversations.py generate_message_notifications 14 1 0 93%
src/couchers/servicers/conversations.py _add_message_to_subscription 6 0 0 100%
src/couchers/servicers/conversations.py _unseen_message_count 1 0 0 100%
src/couchers/servicers/conversations.py _mute_info 2 0 0 100%
src/couchers/servicers/conversations.py Conversations.ListGroupChats 5 0 0 100%
src/couchers/servicers/conversations.py Conversations.GetGroupChat 4 0 0 100%
src/couchers/servicers/conversations.py Conversations.GetDirectMessage 6 0 0 100%
src/couchers/servicers/conversations.py Conversations.GetUpdates 2 2 0 0%
src/couchers/servicers/conversations.py Conversations.GetGroupChatMessages 4 0 0 100%
src/couchers/servicers/conversations.py Conversations.MarkLastSeenGroupChat 7 2 0 71%
src/couchers/servicers/conversations.py Conversations.MuteGroupChat 13 2 0 85%
src/couchers/servicers/conversations.py Conversations.SearchMessages 4 0 0 100%
src/couchers/servicers/conversations.py Conversations.CreateGroupChat 29 4 0 86%
src/couchers/servicers/conversations.py Conversations.SendMessage 9 1 0 89%
src/couchers/servicers/conversations.py Conversations.EditGroupChat 11 0 0 100%
src/couchers/servicers/conversations.py Conversations.MakeGroupChatAdmin 17 3 0 82%
src/couchers/servicers/conversations.py Conversations.RemoveGroupChatAdmin 17 2 0 88%
src/couchers/servicers/conversations.py Conversations.InviteToGroupChat 21 3 0 86%
src/couchers/servicers/conversations.py Conversations.RemoveGroupChatUser 13 3 0 77%
src/couchers/servicers/conversations.py Conversations.LeaveGroupChat 11 0 0 100%
src/couchers/servicers/conversations.py (no function) 46 0 0 100%
src/couchers/servicers/discussions.py discussion_to_pb 7 0 0 100%
src/couchers/servicers/discussions.py Discussions.CreateDiscussion 16 2 0 88%
src/couchers/servicers/discussions.py Discussions.GetDiscussion 4 1 0 75%
src/couchers/servicers/discussions.py (no function) 12 0 0 100%
src/couchers/servicers/donations.py Donations.InitiateDonation 15 2 0 87%
src/couchers/servicers/donations.py Stripe.Webhook 17 0 0 100%
src/couchers/servicers/donations.py (no function) 16 0 0 100%
src/couchers/servicers/events.py _is_event_owner 3 0 0 100%
src/couchers/servicers/events.py _can_moderate_event 3 0 0 100%
src/couchers/servicers/events.py _can_edit_event 1 0 0 100%
src/couchers/servicers/events.py event_to_pb 17 0 0 100%
src/couchers/servicers/events.py _get_event_and_occurrence_query 4 0 0 100%
src/couchers/servicers/events.py _get_event_and_occurrence_one 1 0 0 100%
src/couchers/servicers/events.py _get_event_and_occurrence_one_or_none 1 0 0 100%
src/couchers/servicers/events.py _check_occurrence_time_validity 8 0 0 100%
src/couchers/servicers/events.py get_users_to_notify_for_new_event 9 5 0 44%
src/couchers/servicers/events.py generate_event_create_notifications 15 3 0 80%
src/couchers/servicers/events.py generate_event_update_notifications 11 11 0 0%
src/couchers/servicers/events.py generate_event_cancel_notifications 11 11 0 0%
src/couchers/servicers/events.py generate_event_delete_notifications 8 8 0 0%
src/couchers/servicers/events.py Events.CreateEvent 47 3 0 94%
src/couchers/servicers/events.py Events.ScheduleEvent 36 8 0 78%
src/couchers/servicers/events.py Events.UpdateEvent 61 9 0 85%
src/couchers/servicers/events.py Events.GetEvent 4 1 0 75%
src/couchers/servicers/events.py Events.CancelEvent 11 3 0 73%
src/couchers/servicers/events.py Events.RequestCommunityInvite 22 3 0 86%
src/couchers/servicers/events.py Events.ListEventOccurrences 14 2 0 86%
src/couchers/servicers/events.py Events.ListEventAttendees 7 1 0 86%
src/couchers/servicers/events.py Events.ListEventSubscribers 8 1 0 88%
src/couchers/servicers/events.py Events.ListEventOrganizers 8 1 0 88%
src/couchers/servicers/events.py Events.TransferEvent 20 3 0 85%
src/couchers/servicers/events.py Events.SetEventSubscription 15 2 0 87%
src/couchers/servicers/events.py Events.SetEventAttendance 17 2 0 88%
src/couchers/servicers/events.py Events.ListMyEvents 33 1 0 97%
src/couchers/servicers/events.py Events.ListAllEvents 11 0 0 100%
src/couchers/servicers/events.py Events.InviteEventOrganizer 18 3 0 83%
src/couchers/servicers/events.py Events.RemoveEventOrganizer 15 3 0 80%
src/couchers/servicers/events.py (no function) 55 0 0 100%
src/couchers/servicers/gis.py _build_geojson_select 1 1 0 0%
src/couchers/servicers/gis.py _statement_to_geojson_response 2 2 0 0%
src/couchers/servicers/gis.py GIS.GetUsers 2 2 0 0%
src/couchers/servicers/gis.py GIS.GetCommunities 1 1 0 0%
src/couchers/servicers/gis.py GIS.GetPlaces 3 3 0 0%
src/couchers/servicers/gis.py GIS.GetGuides 3 3 0 0%
src/couchers/servicers/gis.py (no function) 16 0 0 100%
src/couchers/servicers/groups.py _parents_to_pb 2 0 0 100%
src/couchers/servicers/groups.py group_to_pb 6 0 0 100%
src/couchers/servicers/groups.py Groups.GetGroup 4 1 0 75%
src/couchers/servicers/groups.py Groups.ListAdmins 7 1 0 86%
src/couchers/servicers/groups.py Groups.ListMembers 7 1 0 86%
src/couchers/servicers/groups.py Groups.ListPlaces 7 7 0 0%
src/couchers/servicers/groups.py Groups.ListGuides 7 7 0 0%
src/couchers/servicers/groups.py Groups.ListEvents 12 2 0 83%
src/couchers/servicers/groups.py Groups.ListDiscussions 7 1 0 86%
src/couchers/servicers/groups.py Groups.JoinGroup 8 1 0 88%
src/couchers/servicers/groups.py Groups.LeaveGroup 8 1 0 88%
src/couchers/servicers/groups.py Groups.ListUserGroups 5 0 0 100%
src/couchers/servicers/groups.py (no function) 29 0 0 100%
src/couchers/servicers/jail.py _get_jail_info 9 0 0 100%
src/couchers/servicers/jail.py Jail.JailInfo 2 0 0 100%
src/couchers/servicers/jail.py Jail.AcceptTOS 6 0 0 100%
src/couchers/servicers/jail.py Jail.SetLocation 8 1 0 88%
src/couchers/servicers/jail.py Jail.AcceptCommunityGuidelines 6 0 0 100%
src/couchers/servicers/jail.py Jail.AcknowledgePendingModNote 9 0 0 100%
src/couchers/servicers/jail.py (no function) 17 0 0 100%
src/couchers/servicers/media.py get_media_auth_interceptor 2 0 0 100%
src/couchers/servicers/media.py get_media_auth_interceptor.is_authorized 1 0 0 100%
src/couchers/servicers/media.py Media.UploadConfirmation 7 1 0 86%
src/couchers/servicers/media.py (no function) 13 0 0 100%
src/couchers/servicers/notifications.py notification_to_pb 2 0 0 100%
src/couchers/servicers/notifications.py Notifications.GetNotificationSettings 2 0 0 100%
src/couchers/servicers/notifications.py Notifications.SetNotificationSettings 18 2 0 89%
src/couchers/servicers/notifications.py Notifications.ListNotifications 5 0 0 100%
src/couchers/servicers/notifications.py Notifications.GetVapidPublicKey 3 1 0 67%
src/couchers/servicers/notifications.py Notifications.RegisterPushNotificationSubscription 8 1 0 88%
src/couchers/servicers/notifications.py Notifications.SendTestPushNotification 4 1 0 75%
src/couchers/servicers/notifications.py (no function) 25 0 0 100%
src/couchers/servicers/pages.py _is_page_owner 3 0 0 100%
src/couchers/servicers/pages.py _can_moderate_page 6 0 0 100%
src/couchers/servicers/pages.py page_to_pb 10 0 0 100%
src/couchers/servicers/pages.py Pages.CreatePlace 20 1 0 95%
src/couchers/servicers/pages.py Pages.CreateGuide 27 2 0 93%
src/couchers/servicers/pages.py Pages.GetPage 4 1 0 75%
src/couchers/servicers/pages.py Pages.UpdatePage 30 2 0 93%
src/couchers/servicers/pages.py Pages.TransferPage 16 2 0 88%
src/couchers/servicers/pages.py Pages.ListUserPlaces 5 0 0 100%
src/couchers/servicers/pages.py Pages.ListUserGuides 5 0 0 100%
src/couchers/servicers/pages.py (no function) 22 0 0 100%
src/couchers/servicers/references.py reference_to_pb 1 0 0 100%
src/couchers/servicers/references.py check_valid_reference 4 1 0 75%
src/couchers/servicers/references.py References.ListReferences 25 0 0 100%
src/couchers/servicers/references.py References.WriteFriendReference 15 1 0 93%
src/couchers/servicers/references.py References.WriteHostRequestReference 25 1 0 96%
src/couchers/servicers/references.py References.AvailableWriteReferences 11 0 0 100%
src/couchers/servicers/references.py References.ListPendingReferencesToWrite 6 0 0 100%
src/couchers/servicers/references.py (no function) 23 0 0 100%
src/couchers/servicers/reporting.py Reporting.Report 8 0 0 100%
src/couchers/servicers/reporting.py (no function) 9 0 0 100%
src/couchers/servicers/requests.py message_to_pb 3 0 0 100%
src/couchers/servicers/requests.py host_request_to_pb 3 0 0 100%
src/couchers/servicers/requests.py _possibly_observe_first_response_time 6 0 0 100%
src/couchers/servicers/requests.py Requests.CreateHostRequest 36 0 0 100%
src/couchers/servicers/requests.py Requests.GetHostRequest 4 0 0 100%
src/couchers/servicers/requests.py Requests.ListHostRequests 20 1 0 95%
src/couchers/servicers/requests.py Requests.RespondHostRequest 71 5 0 93%
src/couchers/servicers/requests.py Requests.RespondHostRequest.count_host_response 4 0 0 100%
src/couchers/servicers/requests.py Requests.GetHostRequestMessages 11 2 0 82%
src/couchers/servicers/requests.py Requests.SendHostRequestMessage 29 1 0 97%
src/couchers/servicers/requests.py Requests.GetHostRequestUpdates 19 4 0 79%
src/couchers/servicers/requests.py Requests.MarkLastSeenHostRequest 14 5 0 64%
src/couchers/servicers/requests.py Requests.GetResponseRate 17 1 0 94%
src/couchers/servicers/requests.py (no function) 33 0 0 100%
src/couchers/servicers/resources.py Resources.GetTermsOfService 1 0 0 100%
src/couchers/servicers/resources.py Resources.GetCommunityGuidelines 1 0 0 100%
src/couchers/servicers/resources.py Resources.GetRegions 1 0 0 100%
src/couchers/servicers/resources.py Resources.GetLanguages 1 0 0 100%
src/couchers/servicers/resources.py Resources.GetBadges 1 1 0 0%
src/couchers/servicers/resources.py (no function) 10 0 0 100%
src/couchers/servicers/search.py _join_with_space 6 1 0 83%
src/couchers/servicers/search.py _build_tsv 11 0 0 100%
src/couchers/servicers/search.py _build_doc 11 0 0 100%
src/couchers/servicers/search.py _similarity 1 0 0 100%
src/couchers/servicers/search.py _gen_search_elements 20 0 0 100%
src/couchers/servicers/search.py _gen_search_elements.execute_search_statement 1 0 0 100%
src/couchers/servicers/search.py _gen_search_elements.execute_search_statement 1 0 0 100%
src/couchers/servicers/search.py _search_users 5 1 0 80%
src/couchers/servicers/search.py _search_pages 6 1 0 83%
src/couchers/servicers/search.py _search_events 3 0 0 100%
src/couchers/servicers/search.py _search_clusters 6 1 0 83%
src/couchers/servicers/search.py Search.Search 5 0 0 100%
src/couchers/servicers/search.py Search.UserSearch 70 32 0 54%
src/couchers/servicers/search.py Search.EventSearch 51 4 0 92%
src/couchers/servicers/search.py (no function) 32 0 0 100%
src/couchers/servicers/threads.py pack_thread_id 1 0 0 100%
src/couchers/servicers/threads.py unpack_thread_id 1 0 0 100%
src/couchers/servicers/threads.py total_num_responses 1 0 0 100%
src/couchers/servicers/threads.py thread_to_pb 1 0 0 100%
src/couchers/servicers/threads.py Threads.GetThread 18 1 0 94%
src/couchers/servicers/threads.py Threads.PostReply 12 0 0 100%
src/couchers/servicers/threads.py (no function) 17 0 0 100%
src/couchers/sql.py _relevant_user_blocks 3 0 0 100%
src/couchers/sql.py couchers_select 1 0 0 100%
src/couchers/sql.py CouchersSelect.where_username_or_email 5 0 0 100%
src/couchers/sql.py CouchersSelect.where_username_or_id 5 0 0 100%
src/couchers/sql.py CouchersSelect.where_username_or_email_or_id 7 1 0 86%
src/couchers/sql.py CouchersSelect.where_users_visible 2 0 0 100%
src/couchers/sql.py CouchersSelect.where_users_column_visible 3 0 0 100%
src/couchers/sql.py (no function) 14 0 0 100%
src/couchers/tasks.py send_signup_email 13 0 0 100%
src/couchers/tasks.py send_email_changed_confirmation_to_new_email 3 0 0 100%
src/couchers/tasks.py send_content_report_email 2 0 0 100%
src/couchers/tasks.py maybe_send_reference_report_email 3 0 0 100%
src/couchers/tasks.py maybe_send_contributor_form_email 2 0 0 100%
src/couchers/tasks.py send_event_community_invite_request_email 1 0 0 100%
src/couchers/tasks.py send_account_deletion_report_email 2 0 0 100%
src/couchers/tasks.py enforce_community_memberships 7 0 0 100%
src/couchers/tasks.py enforce_community_memberships_for_user 4 0 0 100%
src/couchers/tasks.py (no function) 21 0 0 100%
src/couchers/templates/__init__.py (no function) 0 0 0 100%
src/couchers/templates/v2.py v2esc 1 0 0 100%
src/couchers/templates/v2.py v2multiline 1 0 0 100%
src/couchers/templates/v2.py v2sf 1 0 0 100%
src/couchers/templates/v2.py v2url 1 0 0 100%
src/couchers/templates/v2.py v2phone 1 0 0 100%
src/couchers/templates/v2.py v2date 3 0 0 100%
src/couchers/templates/v2.py v2time 2 0 0 100%
src/couchers/templates/v2.py v2timestamp 2 0 0 100%
src/couchers/templates/v2.py v2avatar 3 1 0 67%
src/couchers/templates/v2.py v2quote 1 0 0 100%
src/couchers/templates/v2.py add_filters 10 0 0 100%
src/couchers/templates/v2.py send_simple_pretty_email 9 0 0 100%
src/couchers/templates/v2.py (no function) 28 0 0 100%
src/couchers/tracing.py setup_tracing 7 7 0 0%
src/couchers/tracing.py (no function) 11 0 0 100%
src/couchers/urls.py app_link 1 0 0 100%
src/couchers/urls.py icon_url 1 0 0 100%
src/couchers/urls.py profile_link 1 0 0 100%
src/couchers/urls.py user_link 1 0 0 100%
src/couchers/urls.py edit_profile_link 1 0 0 100%
src/couchers/urls.py signup_link 1 0 0 100%
src/couchers/urls.py account_settings_link 1 0 0 100%
src/couchers/urls.py notification_settings_link 1 0 0 100%
src/couchers/urls.py feature_preview_link 1 0 0 100%
src/couchers/urls.py password_reset_link 1 0 0 100%
src/couchers/urls.py host_request_link_host 1 1 0 0%
src/couchers/urls.py host_request_link_guest 1 1 0 0%
src/couchers/urls.py host_request 1 0 0 100%
src/couchers/urls.py messages_link 1 0 0 100%
src/couchers/urls.py chat_link 1 0 0 100%
src/couchers/urls.py event_link 1 0 0 100%
src/couchers/urls.py community_link 1 0 0 100%
src/couchers/urls.py leave_reference_link 4 1 0 75%
src/couchers/urls.py profile_references_link 1 0 0 100%
src/couchers/urls.py friend_requests_link 1 0 0 100%
src/couchers/urls.py media_upload_url 1 0 0 100%
src/couchers/urls.py change_email_link 1 0 0 100%
src/couchers/urls.py donation_cancelled_url 1 0 0 100%
src/couchers/urls.py donation_success_url 1 0 0 100%
src/couchers/urls.py delete_account_link 1 0 0 100%
src/couchers/urls.py recover_account_link 1 0 0 100%
src/couchers/urls.py unsubscribe_link 1 0 0 100%
src/couchers/urls.py media_url 1 0 0 100%
src/couchers/urls.py console_link 1 0 0 100%
src/couchers/urls.py (no function) 30 0 0 100%
src/couchers/utils.py is_valid_user_id 1 0 0 100%
src/couchers/utils.py is_valid_username 1 0 0 100%
src/couchers/utils.py is_valid_name 1 0 0 100%
src/couchers/utils.py is_valid_email 1 0 0 100%
src/couchers/utils.py Timestamp_from_datetime 3 0 0 100%
src/couchers/utils.py Duration_from_timedelta 3 0 0 100%
src/couchers/utils.py parse_date 4 0 0 100%
src/couchers/utils.py date_to_api 1 0 0 100%
src/couchers/utils.py to_aware_datetime 1 0 0 100%
src/couchers/utils.py now 1 0 0 100%
src/couchers/utils.py minimum_allowed_birthdate 1 0 0 100%
src/couchers/utils.py today 1 0 0 100%
src/couchers/utils.py now_in_timezone 1 0 0 100%
src/couchers/utils.py today_in_timezone 1 0 0 100%
src/couchers/utils.py create_coordinate 2 0 0 100%
src/couchers/utils.py create_polygon_lat_lng 1 0 0 100%
src/couchers/utils.py create_polygon_lng_lat 1 0 0 100%
src/couchers/utils.py geojson_to_geom 1 0 0 100%
src/couchers/utils.py to_multi 1 0 0 100%
src/couchers/utils.py get_coordinates 2 0 0 100%
src/couchers/utils.py http_date 3 1 0 67%
src/couchers/utils.py _create_tasty_cookie 11 2 0 82%
src/couchers/utils.py create_session_cookies 1 0 0 100%
src/couchers/utils.py parse_session_cookie 6 2 0 67%
src/couchers/utils.py parse_user_id_cookie 6 1 0 83%
src/couchers/utils.py parse_api_key 6 1 0 83%
src/couchers/utils.py remove_duplicates_retain_order 5 0 0 100%
src/couchers/utils.py date_in_timezone 1 0 0 100%
src/couchers/utils.py millis_from_dt 1 0 0 100%
src/couchers/utils.py dt_from_millis 1 0 0 100%
src/couchers/utils.py dt_to_page_token 2 0 0 100%
src/couchers/utils.py dt_from_page_token 1 0 0 100%
src/couchers/utils.py last_active_coarsen 1 0 0 100%
src/couchers/utils.py get_tz_as_text 1 0 0 100%
src/couchers/utils.py (no function) 52 0 0 100%
src/tests/test_account.py _ 1 0 0 100%
src/tests/test_account.py test_GetAccountInfo 8 0 0 100%
src/tests/test_account.py test_GetAccountInfo_regression 8 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_normal 12 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_regression 8 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_normal_short_password 11 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_normal_long_password 11 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_normal_insecure_password 11 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_normal_wrong_password 11 0 0 100%
src/tests/test_account.py test_ChangePasswordV2_normal_no_passwords 10 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_wrong_password 10 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_wrong_email 10 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_invalid_email 9 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_email_in_use 10 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_no_change 9 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_wrong_token 13 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_tokens_two_hour_window 30 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_tokens_two_hour_window.two_hours_one_minute_in_future 1 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_tokens_two_hour_window.one_minute_ago 1 0 0 100%
src/tests/test_account.py test_ChangeEmailV2 27 0 0 100%
src/tests/test_account.py test_ChangeEmailV2_sends_proper_emails 15 0 0 100%
src/tests/test_account.py test_contributor_form 7 0 0 100%
src/tests/test_account.py test_DeleteAccount_start 10 0 0 100%
src/tests/test_account.py test_DeleteAccount_message_storage 10 0 0 100%
src/tests/test_account.py test_full_delete_account_with_recovery 77 0 0 100%
src/tests/test_account.py test_multiple_delete_tokens 12 0 0 100%
src/tests/test_account.py test_ListActiveSessions_pagination 13 0 0 100%
src/tests/test_account.py test_ListActiveSessions_details 33 0 0 100%
src/tests/test_account.py test_ListActiveSessions_details.dummy_geoip 1 0 0 100%
src/tests/test_account.py test_LogOutSession 14 0 0 100%
src/tests/test_account.py test_LogOutOtherSessions 17 0 0 100%
src/tests/test_account.py (no function) 43 0 0 100%
src/tests/test_admin.py _ 1 0 0 100%
src/tests/test_admin.py test_access_by_normal_user 5 0 0 100%
src/tests/test_admin.py test_GetUserDetails 29 0 0 100%
src/tests/test_admin.py test_ChangeUserGender 19 0 0 100%
src/tests/test_admin.py test_ChangeUserBirthdate 21 0 0 100%
src/tests/test_admin.py test_BanUser 15 0 0 100%
src/tests/test_admin.py test_UnbanUser 15 0 0 100%
src/tests/test_admin.py test_AddAdminNote 19 0 0 100%
src/tests/test_admin.py test_AddAdminNote_blank 8 0 0 100%
src/tests/test_admin.py test_admin_content_reports 28 0 0 100%
src/tests/test_admin.py test_DeleteUser 11 0 0 100%
src/tests/test_admin.py test_CreateApiKey 22 0 0 100%
src/tests/test_admin.py test_CreateCommunity_invalid_geojson 7 0 0 100%
src/tests/test_admin.py test_CreateCommunity 8 0 0 100%
src/tests/test_admin.py test_GetChats 5 0 0 100%
src/tests/test_admin.py test_badges 31 0 0 100%
src/tests/test_admin.py test_DeleteEvent 15 0 0 100%
src/tests/test_admin.py (no function) 33 0 0 100%
src/tests/test_api.py _ 1 0 0 100%
src/tests/test_api.py test_ping 31 0 0 100%
src/tests/test_api.py test_coords 46 0 0 100%
src/tests/test_api.py test_get_user 12 0 0 100%
src/tests/test_api.py test_lite_coords 49 0 0 100%
src/tests/test_api.py test_lite_get_user 13 0 0 100%
src/tests/test_api.py test_GetLiteUsers 34 0 0 100%
src/tests/test_api.py test_update_profile 57 0 0 100%
src/tests/test_api.py test_update_profile_do_not_email 12 0 0 100%
src/tests/test_api.py test_language_abilities 36 0 0 100%
src/tests/test_api.py test_pending_friend_request_count 25 0 0 100%
src/tests/test_api.py test_friend_request_flow 64 0 0 100%
src/tests/test_api.py test_cant_friend_request_twice 8 0 0 100%
src/tests/test_api.py test_cant_friend_request_pending 9 0 0 100%
src/tests/test_api.py test_cant_friend_request_already_friends 13 0 0 100%
src/tests/test_api.py test_ListFriends 42 0 0 100%
src/tests/test_api.py test_ListMutualFriends 27 0 0 100%
src/tests/test_api.py test_mutual_friends_self 19 0 0 100%
src/tests/test_api.py test_CancelFriendRequest 24 0 0 100%
src/tests/test_api.py test_accept_friend_request 25 0 0 100%
src/tests/test_api.py test_reject_friend_request 28 0 0 100%
src/tests/test_api.py test_hosting_preferences 79 0 0 100%
src/tests/test_api.py test_badges 9 0 0 100%
src/tests/test_api.py (no function) 37 0 0 100%
src/tests/test_app.py _ 1 0 0 100%
src/tests/test_app.py test_create_servers 6 0 0 100%
src/tests/test_app.py (no function) 6 0 0 100%
src/tests/test_auth.py _ 1 0 0 100%
src/tests/test_auth.py get_session_cookie_tokens 4 0 0 100%
src/tests/test_auth.py test_UsernameValid 4 0 0 100%
src/tests/test_auth.py test_signup_incremental 82 0 0 100%
src/tests/test_auth.py _quick_signup 28 0 0 100%
src/tests/test_auth.py test_signup 1 0 0 100%
src/tests/test_auth.py test_basic_login 9 0 0 100%
src/tests/test_auth.py test_login_part_signed_up_verified_email 20 0 0 100%
src/tests/test_auth.py test_login_part_signed_up_not_verified_email 17 0 0 100%
src/tests/test_auth.py test_banned_user 8 0 0 100%
src/tests/test_auth.py test_deleted_user 8 0 0 100%
src/tests/test_auth.py test_invalid_token 7 0 0 100%
src/tests/test_auth.py test_password_reset_v2 42 0 0 100%
src/tests/test_auth.py test_password_reset_no_such_user 6 0 0 100%
src/tests/test_auth.py test_password_reset_invalid_token_v2 11 0 0 100%
src/tests/test_auth.py test_logout_invalid_token 10 0 0 100%
src/tests/test_auth.py test_signup_without_password 5 0 0 100%
src/tests/test_auth.py test_signup_invalid_birthdate 13 0 0 100%
src/tests/test_auth.py test_signup_invalid_email 20 0 0 100%
src/tests/test_auth.py test_signup_existing_email 6 0 0 100%
src/tests/test_auth.py test_signup_continue_with_email 10 0 0 100%
src/tests/test_auth.py test_signup_resend_email 29 0 0 100%
src/tests/test_auth.py test_successful_authenticate 7 0 0 100%
src/tests/test_auth.py test_unsuccessful_authenticate 21 0 0 100%
src/tests/test_auth.py test_complete_signup 30 0 0 100%
src/tests/test_auth.py test_signup_token_regression 14 0 0 100%
src/tests/test_auth.py test_opt_out_of_newsletter 11 0 0 100%
src/tests/test_auth.py test_GetAuthState 22 0 0 100%
src/tests/test_auth.py (no function) 42 0 0 100%
src/tests/test_bg_jobs.py now_5_min_in_future 1 0 0 100%
src/tests/test_bg_jobs.py _ 1 0 0 100%
src/tests/test_bg_jobs.py _check_job_counter 3 0 0 100%
src/tests/test_bg_jobs.py test_email_job 8 0 0 100%
src/tests/test_bg_jobs.py test_email_job.mock_print_dev_email 7 0 0 100%
src/tests/test_bg_jobs.py test_purge_login_tokens 12 0 0 100%
src/tests/test_bg_jobs.py test_purge_password_reset_tokens 12 0 0 100%
src/tests/test_bg_jobs.py test_purge_account_deletion_tokens 15 0 0 100%
src/tests/test_bg_jobs.py test_enforce_community_memberships 6 0 0 100%
src/tests/test_bg_jobs.py test_refresh_materialized_views 6 0 0 100%
src/tests/test_bg_jobs.py test_service_jobs 11 0 0 100%
src/tests/test_bg_jobs.py test_service_jobs.raising_sleep 1 0 0 100%
src/tests/test_bg_jobs.py test_scheduler 19 0 0 100%
src/tests/test_bg_jobs.py test_scheduler.mock_monotonic 1 0 0 100%
src/tests/test_bg_jobs.py test_scheduler.mock_sleep 3 0 0 100%
src/tests/test_bg_jobs.py test_scheduler.mock_run_job_and_schedule 2 0 0 100%
src/tests/test_bg_jobs.py test_job_retry 29 0 0 100%
src/tests/test_bg_jobs.py test_job_retry.mock_job 2 0 0 100%
src/tests/test_bg_jobs.py test_no_jobs_no_problem 5 0 0 100%
src/tests/test_bg_jobs.py test_send_message_notifications_basic 35 0 0 100%
src/tests/test_bg_jobs.py test_send_message_notifications_muted 38 0 0 100%
src/tests/test_bg_jobs.py test_send_request_notifications_host_request 34 0 0 100%
src/tests/test_bg_jobs.py test_send_message_notifications_seen 23 0 0 100%
src/tests/test_bg_jobs.py test_send_message_notifications_seen.now_30_min_in_future 1 0 0 100%
src/tests/test_bg_jobs.py test_send_onboarding_emails 15 0 0 100%
src/tests/test_bg_jobs.py test_send_reference_reminders 28 0 0 100%
src/tests/test_bg_jobs.py test_add_users_to_email_list 21 0 0 100%
src/tests/test_bg_jobs.py test_update_recommendation_scores 1 0 0 100%
src/tests/test_bg_jobs.py test_update_badges 22 0 0 100%
src/tests/test_bg_jobs.py (no function) 45 0 0 100%
src/tests/test_blocking.py _ 1 0 0 100%
src/tests/test_blocking.py test_BlockUser 18 0 0 100%
src/tests/test_blocking.py test_make_user_block 6 0 0 100%
src/tests/test_blocking.py test_UnblockUser 17 0 0 100%
src/tests/test_blocking.py test_GetBlockedUsers 10 0 0 100%
src/tests/test_blocking.py test_relationships_userblock_dot_user 7 0 0 100%
src/tests/test_blocking.py (no function) 15 0 0 100%
src/tests/test_bugs.py _ 1 0 0 100%
src/tests/test_bugs.py test_bugs_disabled 3 0 0 100%
src/tests/test_bugs.py test_bugs 9 0 0 100%
src/tests/test_bugs.py test_bugs.dud_post 7 0 0 100%
src/tests/test_bugs.py test_bugs.dud_post._PostReturn.json 1 0 0 100%
src/tests/test_bugs.py test_bugs_with_user 10 0 0 100%
src/tests/test_bugs.py test_bugs_with_user.dud_post 7 0 0 100%
src/tests/test_bugs.py test_bugs_with_user.dud_post._PostReturn.json 1 0 0 100%
src/tests/test_bugs.py test_bugs_fails_on_network_error 9 0 0 100%
src/tests/test_bugs.py test_bugs_fails_on_network_error.dud_post 3 0 0 100%
src/tests/test_bugs.py test_version 3 0 0 100%
src/tests/test_bugs.py test_status 8 0 0 100%
src/tests/test_bugs.py test_GetDescriptors 4 0 0 100%
src/tests/test_bugs.py (no function) 17 0 0 100%
src/tests/test_communities.py _ 1 0 0 100%
src/tests/test_communities.py create_1d_polygon 1 0 0 100%
src/tests/test_communities.py create_1d_point 1 0 0 100%
src/tests/test_communities.py create_community 14 0 0 100%
src/tests/test_communities.py create_group 12 0 0 100%
src/tests/test_communities.py create_place 2 0 0 100%
src/tests/test_communities.py create_discussion 2 0 0 100%
src/tests/test_communities.py create_event 3 0 0 100%
src/tests/test_communities.py get_community_id 1 0 0 100%
src/tests/test_communities.py get_group_id 1 0 0 100%
src/tests/test_communities.py testing_communities 63 0 0 100%
src/tests/test_communities.py TestCommunities.test_GetCommunity 102 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListCommunities 8 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListCommunities_all 19 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListUserCommunities 12 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListOtherUserCommunities 13 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListGroups 15 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListAdmins 13 0 0 100%
src/tests/test_communities.py TestCommunities.test_AddAdmin 26 0 0 100%
src/tests/test_communities.py TestCommunities.test_RemoveAdmin 26 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListMembers 16 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListNearbyUsers 16 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListDiscussions 25 0 0 100%
src/tests/test_communities.py TestCommunities.test_node_contained_user_ids_association_proxy 5 0 0 100%
src/tests/test_communities.py TestCommunities.test_ListEvents 11 0 0 100%
src/tests/test_communities.py test_JoinCommunity_and_LeaveCommunity 32 0 0 100%
src/tests/test_communities.py test_LeaveCommunity_regression 27 0 0 100%
src/tests/test_communities.py test_enforce_community_memberships_for_user 16 0 0 100%
src/tests/test_communities.py (no function) 59 0 0 100%
src/tests/test_conversations.py _ 1 0 0 100%
src/tests/test_conversations.py test_list_group_chats 25 0 0 100%
src/tests/test_conversations.py test_list_empty_group_chats 26 0 0 100%
src/tests/test_conversations.py test_list_group_chats_ordering 41 0 0 100%
src/tests/test_conversations.py test_list_group_chats_ordering_after_left 46 0 0 100%
src/tests/test_conversations.py test_get_group_chat_messages 18 0 0 100%
src/tests/test_conversations.py test_get_group_chat_messages_pagination 19 0 0 100%
src/tests/test_conversations.py test_get_group_chat_messages_joined_left 36 0 0 100%
src/tests/test_conversations.py test_get_group_chat_info 29 0 0 100%
src/tests/test_conversations.py test_get_group_chat_info_denied 14 0 0 100%
src/tests/test_conversations.py test_get_group_chat_info_left 21 0 0 100%
src/tests/test_conversations.py test_remove_group_chat_user 13 0 0 100%
src/tests/test_conversations.py test_edit_group_chat 19 0 0 100%
src/tests/test_conversations.py test_make_remove_group_chat_admin 31 0 0 100%
src/tests/test_conversations.py test_send_message 17 0 0 100%
src/tests/test_conversations.py test_leave_invite_to_group_chat 65 0 0 100%
src/tests/test_conversations.py test_group_chats_with_messages_before_join 21 0 0 100%
src/tests/test_conversations.py test_invite_to_dm 14 0 0 100%
src/tests/test_conversations.py test_sole_admin_leaves 20 0 0 100%
src/tests/test_conversations.py test_search_messages 21 0 0 100%
src/tests/test_conversations.py test_search_messages_left_joined 33 0 0 100%
src/tests/test_conversations.py test_admin_behaviour 70 0 0 100%
src/tests/test_conversations.py test_add_remove_admin_failures 51 0 0 100%
src/tests/test_conversations.py test_last_seen 34 0 0 100%
src/tests/test_conversations.py test_one_dm_per_pair 25 0 0 100%
src/tests/test_conversations.py test_GetDirectMessage 28 0 0 100%
src/tests/test_conversations.py test_total_unseen 37 0 0 100%
src/tests/test_conversations.py test_regression_ListGroupChats_pagination 21 0 0 100%
src/tests/test_conversations.py test_muting 28 0 0 100%
src/tests/test_conversations.py test_chat_notifications 47 0 0 100%
src/tests/test_conversations.py test_chat_notifications.send_msg 1 0 0 100%
src/tests/test_conversations.py test_chat_notifications.parse_message_payload 1 0 0 100%
src/tests/test_conversations.py test_incomplete_profile 18 0 0 100%
src/tests/test_conversations.py (no function) 44 0 0 100%
src/tests/test_crypto.py _ 1 0 0 100%
src/tests/test_crypto.py test_b64 1 0 0 100%
src/tests/test_crypto.py test_simple_crypto 1 0 0 100%
src/tests/test_crypto.py test_hash_sigs 2 0 0 100%
src/tests/test_crypto.py test_asym_crypto 3 0 0 100%
src/tests/test_crypto.py (no function) 9 0 0 100%
src/tests/test_db.py test_is_valid_user_id 3 0 0 100%
src/tests/test_db.py test_is_valid_email 8 0 0 100%
src/tests/test_db.py test_is_valid_username 8 0 0 100%
src/tests/test_db.py test_is_valid_name 7 0 0 100%
src/tests/test_db.py test_parse_date 9 0 0 100%
src/tests/test_db.py test_get_parent_node_at_location 17 0 0 100%
src/tests/test_db.py test_create_coordinate 5 0 0 100%
src/tests/test_db.py pg_dump 1 0 0 100%
src/tests/test_db.py sort_pg_dump_output 4 0 0 100%
src/tests/test_db.py test_sort_pg_dump_output 1 0 0 100%
src/tests/test_db.py strip_leading_whitespace 1 0 0 100%
src/tests/test_db.py test_migrations 11 0 0 100%
src/tests/test_db.py test_migrations.message 3 0 0 100%
src/tests/test_db.py test_slugify 10 0 0 100%
src/tests/test_db.py (no function) 23 0 0 100%
src/tests/test_discussions.py _ 1 0 0 100%
src/tests/test_discussions.py test_create_discussion_errors 11 0 0 100%
src/tests/test_discussions.py test_create_and_get_discussion 47 0 0 100%
src/tests/test_discussions.py (no function) 12 0 0 100%
src/tests/test_donations.py _ 1 0 0 100%
src/tests/test_donations.py test_one_time_donation_flow 35 0 0 100%
src/tests/test_donations.py test_recurring_donation_flow 44 0 0 100%
src/tests/test_donations.py fire_stripe_event 6 0 0 100%
src/tests/test_donations.py (no function) 21 0 0 100%
src/tests/test_dummy_data.py test_add_dummy_data 4 0 0 100%
src/tests/test_dummy_data.py (no function) 5 0 0 100%
src/tests/test_email.py _ 1 0 0 100%
src/tests/test_email.py test_signup_verification_email 10 0 0 100%
src/tests/test_email.py test_report_email 18 0 0 100%
src/tests/test_email.py test_reference_report_email_not_sent 10 0 0 100%
src/tests/test_email.py test_reference_report_email 22 0 0 100%
src/tests/test_email.py test_email_patching_fails 10 0 0 100%
src/tests/test_email.py test_email_patching_fails.mock_queue_email 1 0 0 100%
src/tests/test_email.py test_email_changed_confirmation_sent_to_new_email 21 0 0 100%
src/tests/test_email.py test_do_not_email_security 22 0 0 100%
src/tests/test_email.py test_do_not_email_non_security 8 0 0 100%
src/tests/test_email.py test_do_not_email_non_security_unsublink 9 0 0 100%
src/tests/test_email.py test_email_prefix_config 22 0 0 100%
src/tests/test_email.py test_send_donation_email 19 0 0 100%
src/tests/test_email.py test_email_deleted_users_regression 32 0 0 100%
src/tests/test_email.py (no function) 29 0 0 100%
src/tests/test_events.py _ 1 0 0 100%
src/tests/test_events.py test_CreateEvent 235 0 0 100%
src/tests/test_events.py test_CreateEvent_incomplete_profile 11 0 0 100%
src/tests/test_events.py test_ScheduleEvent 41 0 0 100%
src/tests/test_events.py test_cannot_overlap_occurrences_schedule 10 0 0 100%
src/tests/test_events.py test_cannot_overlap_occurrences_update 12 0 0 100%
src/tests/test_events.py test_UpdateEvent_single 213 0 0 100%
src/tests/test_events.py test_UpdateEvent_all 41 0 0 100%
src/tests/test_events.py test_GetEvent 114 0 0 100%
src/tests/test_events.py test_CancelEvent 57 0 0 100%
src/tests/test_events.py test_ListEventAttendees 22 0 0 100%
src/tests/test_events.py test_ListEventSubscribers 22 0 0 100%
src/tests/test_events.py test_ListEventOrganizers 22 0 0 100%
src/tests/test_events.py test_TransferEvent 22 0 0 100%
src/tests/test_events.py test_SetEventSubscription 12 0 0 100%
src/tests/test_events.py test_SetEventAttendance 14 0 0 100%
src/tests/test_events.py test_InviteEventOrganizer 17 0 0 100%
src/tests/test_events.py test_ListEventOccurrences 20 0 0 100%
src/tests/test_events.py test_ListMyEvents 80 0 0 100%
src/tests/test_events.py test_ListMyEvents.new_event 3 0 0 100%
src/tests/test_events.py test_RemoveEventOrganizer 32 0 0 100%
src/tests/test_events.py test_ListEventAttendees_regression 18 0 0 100%
src/tests/test_events.py test_event_threads 24 0 0 100%
src/tests/test_events.py test_can_overlap_other_events_schedule_regression 8 0 0 100%
src/tests/test_events.py test_can_overlap_other_events_update_regression 10 0 0 100%
src/tests/test_events.py test_list_past_events_regression 11 0 0 100%
src/tests/test_events.py test_community_invite_requests 46 0 0 100%
src/tests/test_events.py (no function) 41 0 0 100%
src/tests/test_fixtures.py drop_all 4 0 0 100%
src/tests/test_fixtures.py create_schema_from_models 4 0 0 100%
src/tests/test_fixtures.py populate_testing_resources 9 0 0 100%
src/tests/test_fixtures.py recreate_database 5 0 0 100%
src/tests/test_fixtures.py db 1 0 0 100%
src/tests/test_fixtures.py generate_user 37 0 0 100%
src/tests/test_fixtures.py generate_user._DummyContext.invocation_metadata 1 0 0 100%
src/tests/test_fixtures.py get_user_id_and_token 3 0 0 100%
src/tests/test_fixtures.py make_friends 3 0 0 100%
src/tests/test_fixtures.py make_user_block 4 0 0 100%
src/tests/test_fixtures.py make_user_invisible 2 0 0 100%
src/tests/test_fixtures.py get_friend_relationship 4 4 0 0%
src/tests/test_fixtures.py CookieMetadataPlugin.__init__ 1 0 0 100%
src/tests/test_fixtures.py CookieMetadataPlugin.__call__ 1 0 0 100%
src/tests/test_fixtures.py auth_api_session 14 0 0 100%
src/tests/test_fixtures.py auth_api_session._MetadataKeeperInterceptor.__init__ 1 0 0 100%
src/tests/test_fixtures.py auth_api_session._MetadataKeeperInterceptor.intercept_unary_unary 4 0 0 100%
src/tests/test_fixtures.py api_session 3 0 0 100%
src/tests/test_fixtures.py real_api_session 11 0 0 100%
src/tests/test_fixtures.py real_admin_session 11 0 0 100%
src/tests/test_fixtures.py real_account_session 11 0 0 100%
src/tests/test_fixtures.py real_jail_session 11 0 0 100%
src/tests/test_fixtures.py FakeRpcError.__init__ 2 0 0 100%
src/tests/test_fixtures.py FakeRpcError.code 1 0 0 100%
src/tests/test_fixtures.py FakeRpcError.details 1 0 0 100%
src/tests/test_fixtures.py _check_user_perms 9 0 0 100%
src/tests/test_fixtures.py FakeChannel.__init__ 5 0 0 100%
src/tests/test_fixtures.py FakeChannel.abort 1 0 0 100%
src/tests/test_fixtures.py FakeChannel.add_generic_rpc_handlers 3 0 0 100%
src/tests/test_fixtures.py FakeChannel.unary_unary 4 0 0 100%
src/tests/test_fixtures.py FakeChannel.unary_unary.fake_handler 4 0 0 100%
src/tests/test_fixtures.py fake_channel 4 0 0 100%
src/tests/test_fixtures.py conversations_session 3 0 0 100%
src/tests/test_fixtures.py requests_session 3 0 0 100%
src/tests/test_fixtures.py threads_session 3 0 0 100%
src/tests/test_fixtures.py discussions_session 3 0 0 100%
src/tests/test_fixtures.py donations_session 3 0 0 100%
src/tests/test_fixtures.py real_stripe_session 10 0 0 100%
src/tests/test_fixtures.py real_iris_session 10 0 0 100%
src/tests/test_fixtures.py pages_session 3 0 0 100%
src/tests/test_fixtures.py communities_session 3 0 0 100%
src/tests/test_fixtures.py groups_session 3 0 0 100%
src/tests/test_fixtures.py blocking_session 3 0 0 100%
src/tests/test_fixtures.py notifications_session 3 0 0 100%
src/tests/test_fixtures.py account_session 3 0 0 100%
src/tests/test_fixtures.py search_session 3 0 0 100%
src/tests/test_fixtures.py references_session 3 0 0 100%
src/tests/test_fixtures.py reporting_session 3 0 0 100%
src/tests/test_fixtures.py events_session 3 0 0 100%
src/tests/test_fixtures.py bugs_session 3 0 0 100%
src/tests/test_fixtures.py resources_session 3 0 0 100%
src/tests/test_fixtures.py media_session 13 0 0 100%
src/tests/test_fixtures.py testconfig 51 0 0 100%
src/tests/test_fixtures.py fast_passwords 5 0 0 100%
src/tests/test_fixtures.py fast_passwords.fast_hash 1 0 0 100%
src/tests/test_fixtures.py fast_passwords.fast_verify 1 0 0 100%
src/tests/test_fixtures.py process_jobs 2 0 0 100%
src/tests/test_fixtures.py mock_notification_email 3 0 0 100%
src/tests/test_fixtures.py email_fields 2 0 0 100%
src/tests/test_fixtures.py push_collector 14 0 0 100%
src/tests/test_fixtures.py push_collector.Push.__init__ 1 0 0 100%
src/tests/test_fixtures.py push_collector.Push.__getattr__ 4 4 0 0%
src/tests/test_fixtures.py push_collector.Push.__repr__ 2 0 0 100%
src/tests/test_fixtures.py push_collector.PushCollector.__init__ 1 0 0 100%
src/tests/test_fixtures.py push_collector.PushCollector.by_user 1 0 0 100%
src/tests/test_fixtures.py push_collector.PushCollector.push_to_user 1 0 0 100%
src/tests/test_fixtures.py push_collector.PushCollector.assert_user_has_count 1 0 0 100%
src/tests/test_fixtures.py push_collector.PushCollector.assert_user_push_matches_fields 4 0 0 100%
src/tests/test_fixtures.py push_collector.PushCollector.assert_user_has_single_matching 2 0 0 100%
src/tests/test_fixtures.py (no function) 142 0 0 100%
src/tests/test_gis.py (no function) 1 0 0 100%
src/tests/test_groups.py _ 1 0 0 100%
src/tests/test_groups.py TestGroups.test_GetGroup 121 0 0 100%
src/tests/test_groups.py TestGroups.test_ListAdmins 10 0 0 100%
src/tests/test_groups.py TestGroups.test_ListMembers 13 0 0 100%
src/tests/test_groups.py TestGroups.test_ListDiscussions 14 0 0 100%
src/tests/test_groups.py TestGroups.test_ListUserGroups 8 0 0 100%
src/tests/test_groups.py TestGroups.test_ListOtherUserGroups 9 0 0 100%
src/tests/test_groups.py TestGroups.test_ListEvents 11 0 0 100%
src/tests/test_groups.py test_JoinGroup_and_LeaveGroup 19 0 0 100%
src/tests/test_groups.py test_LeaveGroup_regression 22 0 0 100%
src/tests/test_groups.py (no function) 27 0 0 100%
src/tests/test_interceptors.py _ 1 0 0 100%
src/tests/test_interceptors.py interceptor_dummy_api 12 0 0 100%
src/tests/test_interceptors.py _check_histogram_labels 5 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_ok 3 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_ok.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_all_ignored 9 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_all_ignored.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_assertion 6 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_assertion.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_div0 6 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_div0.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_raise 6 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_raise.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_raise_custom 8 0 0 100%
src/tests/test_interceptors.py test_logging_interceptor_raise_custom.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_ok_open 12 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_ok_open.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_sensitive 16 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_sensitive.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_sensitive_ping 3 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_exception 15 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_exception.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_abort 15 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_abort.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_auth_interceptor 44 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_auth_cookies 14 0 0 100%
src/tests/test_interceptors.py test_tracing_interceptor_auth_api_key 20 0 0 100%
src/tests/test_interceptors.py test_auth_levels 33 0 0 100%
src/tests/test_interceptors.py test_auth_levels.TestRpc 1 0 0 100%
src/tests/test_interceptors.py test_auth_levels.gen_args 1 0 0 100%
src/tests/test_interceptors.py (no function) 36 0 0 100%
src/tests/test_jail.py _ 1 0 0 100%
src/tests/test_jail.py test_jail_basic 19 0 0 100%
src/tests/test_jail.py test_JailInfo 15 0 0 100%
src/tests/test_jail.py test_AcceptTOS 33 0 0 100%
src/tests/test_jail.py test_TOS_increase 21 0 0 100%
src/tests/test_jail.py test_SetLocation 11 0 0 100%
src/tests/test_jail.py test_AcceptCommunityGuidelines 33 0 0 100%
src/tests/test_jail.py test_modnotes 49 0 0 100%
src/tests/test_jail.py test_modnotes_no_notify 21 0 0 100%
src/tests/test_jail.py (no function) 19 0 0 100%
src/tests/test_media.py _ 1 0 0 100%
src/tests/test_media.py test_media_upload 18 0 0 100%
src/tests/test_media.py (no function) 12 0 0 100%
src/tests/test_model_constraints.py _ 1 0 0 100%
src/tests/test_model_constraints.py test_node_constraints 10 0 0 100%
src/tests/test_model_constraints.py test_page_constraints 42 0 0 100%
src/tests/test_model_constraints.py (no function) 11 0 0 100%
src/tests/test_models.py _ 1 0 0 100%
src/tests/test_models.py test_user_age 5 0 0 100%
src/tests/test_models.py test_user_display_joined 4 0 0 100%
src/tests/test_models.py test_user_display_last_active 4 0 0 100%
src/tests/test_models.py (no function) 12 0 0 100%
src/tests/test_notifications.py _ 1 0 0 100%
src/tests/test_notifications.py test_SetNotificationSettings_preferences_respected_editable 12 0 0 100%
src/tests/test_notifications.py test_SetNotificationSettings_preferences_not_editable 7 0 0 100%
src/tests/test_notifications.py test_unsubscribe 33 2 0 94%
src/tests/test_notifications.py test_unsubscribe_do_not_email 28 1 0 96%
src/tests/test_notifications.py test_get_do_not_email 15 0 0 100%
src/tests/test_notifications.py test_set_do_not_email 23 0 0 100%
src/tests/test_notifications.py test_list_notifications 33 0 0 100%
src/tests/test_notifications.py test_GetVapidPublicKey 3 0 0 100%
src/tests/test_notifications.py test_RegisterPushNotificationSubscription 4 0 0 100%
src/tests/test_notifications.py test_SendTestPushNotification 6 0 0 100%
src/tests/test_notifications.py (no function) 28 0 0 100%
src/tests/test_pages.py _ 1 0 0 100%
src/tests/test_pages.py test_create_place_errors 23 0 0 100%
src/tests/test_pages.py test_create_guide_errors 33 0 0 100%
src/tests/test_pages.py test_create_page_place 23 0 0 100%
src/tests/test_pages.py test_create_page_guide 42 0 0 100%
src/tests/test_pages.py test_get_page 28 0 0 100%
src/tests/test_pages.py test_update_page 96 0 0 100%
src/tests/test_pages.py test_owner_not_moderator 39 0 0 100%
src/tests/test_pages.py test_update_page_errors 17 0 0 100%
src/tests/test_pages.py test_page_transfer 111 0 0 100%
src/tests/test_pages.py test_page_photo 29 0 0 100%
src/tests/test_pages.py test_list_user_places 9 0 0 100%
src/tests/test_pages.py test_list_other_user_places 10 0 0 100%
src/tests/test_pages.py test_list_user_guides 9 0 0 100%
src/tests/test_pages.py test_list_other_user_guides 10 0 0 100%
src/tests/test_pages.py (no function) 27 0 0 100%
src/tests/test_references.py _ 1 0 0 100%
src/tests/test_references.py create_host_request 14 0 0 100%
src/tests/test_references.py create_host_reference 17 0 0 100%
src/tests/test_references.py create_friend_reference 4 0 0 100%
src/tests/test_references.py test_ListPagination 66 0 0 100%
src/tests/test_references.py test_ListReference_banned_deleted_users 31 0 0 100%
src/tests/test_references.py test_WriteFriendReference 31 0 0 100%
src/tests/test_references.py test_WriteFriendReference_with_empty_text 7 0 0 100%
src/tests/test_references.py test_WriteFriendReference_with_private_text 12 0 0 100%
src/tests/test_references.py test_host_request_states_references 23 0 0 100%
src/tests/test_references.py test_WriteHostRequestReference 25 0 0 100%
src/tests/test_references.py test_WriteHostRequestReference_private_text 14 0 0 100%
src/tests/test_references.py test_AvailableWriteReferences_and_ListPendingReferencesToWrite 64 0 0 100%
src/tests/test_references.py test_regression_disappearing_refs 80 0 0 100%
src/tests/test_references.py (no function) 28 0 0 100%
src/tests/test_reporting.py _ 1 0 0 100%
src/tests/test_reporting.py test_reporting 19 0 0 100%
src/tests/test_reporting.py (no function) 11 0 0 100%
src/tests/test_requests.py _ 1 0 0 100%
src/tests/test_requests.py test_create_request 45 0 0 100%
src/tests/test_requests.py test_create_request_incomplete_profile 9 0 0 100%
src/tests/test_requests.py add_message 3 0 0 100%
src/tests/test_requests.py test_GetHostRequest 14 0 0 100%
src/tests/test_requests.py test_ListHostRequests 37 0 0 100%
src/tests/test_requests.py test_ListHostRequests_pagination_regression 39 0 0 100%
src/tests/test_requests.py test_ListHostRequests_active_filter 12 0 0 100%
src/tests/test_requests.py test_RespondHostRequests 54 0 0 100%
src/tests/test_requests.py test_get_host_request_messages 36 0 0 100%
src/tests/test_requests.py test_SendHostRequestMessage 43 0 0 100%
src/tests/test_requests.py test_get_updates 44 0 0 100%
src/tests/test_requests.py test_mark_last_seen 35 0 0 100%
src/tests/test_requests.py test_response_rate 65 0 0 100%
src/tests/test_requests.py test_request_notifications 43 0 0 100%
src/tests/test_requests.py (no function) 27 0 0 100%
src/tests/test_resources.py _ 1 0 0 100%
src/tests/test_resources.py test_GetTermsOfService 4 0 0 100%
src/tests/test_resources.py test_GetCommunityGuidelines 6 0 0 100%
src/tests/test_resources.py test_GetRegions 6 0 0 100%
src/tests/test_resources.py test_GetLanguages 6 0 0 100%
src/tests/test_resources.py (no function) 9 0 0 100%
src/tests/test_search.py _ 1 0 0 100%
src/tests/test_search.py test_Search 4 0 0 100%
src/tests/test_search.py test_UserSearch 4 0 0 100%
src/tests/test_search.py test_regression_search_in_area 8 0 0 100%
src/tests/test_search.py test_user_search_in_rectangle 10 0 0 100%
src/tests/test_search.py test_user_filter_complete_profile 8 0 0 100%
src/tests/test_search.py test_user_filter_meetup_status 8 0 0 100%
src/tests/test_search.py sample_event_data 3 0 0 100%
src/tests/test_search.py create_event 2 0 0 100%
src/tests/test_search.py create_event._create_event 1 0 0 100%
src/tests/test_search.py sample_community 3 0 0 100%
src/tests/test_search.py test_EventSearch_no_filters 4 0 0 100%
src/tests/test_search.py test_event_search_by_query 12 0 0 100%
src/tests/test_search.py test_event_search_by_time 15 0 0 100%
src/tests/test_search.py test_event_search_by_circle 12 0 0 100%
src/tests/test_search.py test_event_search_by_rectangle 12 0 0 100%
src/tests/test_search.py test_event_search_pagination 22 0 0 100%
src/tests/test_search.py test_event_search_pagination_with_page_number 21 0 0 100%
src/tests/test_search.py test_event_search_online_status 12 0 0 100%
src/tests/test_search.py test_event_search_filter_subscription_attendance_organizing_my_communities 28 0 0 100%
src/tests/test_search.py (no function) 32 0 0 100%
src/tests/test_strong_verification.py _ 1 0 0 100%
src/tests/test_strong_verification.py _emulate_iris_callback 4 0 0 100%
src/tests/test_strong_verification.py do_and_check_sv 52 2 0 96%
src/tests/test_strong_verification.py monkeypatch_sv_config 8 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_happy_path 97 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_delete_data 16 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_expiry 25 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_expiry.after_expiry 1 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_regression 5 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_regression2 6 0 0 100%
src/tests/test_strong_verification.py test_strong_verification_disabled 6 0 0 100%
src/tests/test_strong_verification.py (no function) 33 0 0 100%
src/tests/test_threads.py _ 1 0 0 100%
src/tests/test_threads.py test_threads_basic 35 0 0 100%
src/tests/test_threads.py test_threads_errors 18 0 0 100%
src/tests/test_threads.py pagination_test 10 0 0 100%
src/tests/test_threads.py test_threads_pagination 7 0 0 100%
src/tests/test_threads.py (no function) 15 0 0 100%
src/tests/test_utils.py _ 1 0 0 100%
src/tests/test_utils.py test_page_token_time_python 2 0 0 100%
src/tests/test_utils.py test_page_token_time_db 9 0 0 100%
src/tests/test_utils.py (no function) 11 0 0 100%
src/tests/test_verification.py _ 1 0 0 100%
src/tests/test_verification.py test_ChangePhone 35 0 0 100%
src/tests/test_verification.py test_ChangePhone.deny_operator 2 0 0 100%
src/tests/test_verification.py test_ChangePhone.succeed 2 0 0 100%
src/tests/test_verification.py test_ChangePhone_ratelimit 13 0 0 100%
src/tests/test_verification.py test_ChangePhone_ratelimit.succeed 1 0 0 100%
src/tests/test_verification.py test_VerifyPhone 20 0 0 100%
src/tests/test_verification.py test_VerifyPhone_antibrute 14 0 0 100%
src/tests/test_verification.py test_phone_uniqueness 30 0 0 100%
src/tests/test_verification.py test_phone_uniqueness.succeed 1 0 0 100%
src/tests/test_verification.py test_send_sms 18 0 0 100%
src/tests/test_verification.py test_send_sms_disabled 2 0 0 100%
src/tests/test_verification.py test_sms_verification_no_donation 6 0 0 100%
src/tests/test_verification.py (no function) 24 0 0 100%
src/tests/test_visible_users.py _FakeContext.__init__ 1 0 0 100%
src/tests/test_visible_users.py test_is_visible_property 11 0 0 100%
src/tests/test_visible_users.py test_select_dot_where_users_visible 9 0 0 100%
src/tests/test_visible_users.py test_select_dot_where_users_column_visible 15 0 0 100%
src/tests/test_visible_users.py (no function) 9 0 0 100%
Total   16335 682 0 96%

No items found using the specified filter.