Skip to content

reorganize tests to ensure contributor permissions visible #7103

reorganize tests to ensure contributor permissions visible

reorganize tests to ensure contributor permissions visible #7103

GitHub Actions / api2 REPORT failed Jul 25, 2024 in 0s

2337 passed, 22 failed and 9 skipped

Tests failed

❌ report.xml

2368 tests were completed in 1285s with 2337 passed, 22 failed and 9 skipped.

Test suite Passed Failed Skipped Time
pytest 2337✅ 22❌ 9⚪ 1285s

❌ pytest

api_tests.cedar_metadata_records.serializers.test_serializers.TestCedarMetadataRecordsBaseSerializer
  ✅ test_serializer_when_target_is_node
  ✅ test_serializer_when_target_is_registration
  ✅ test_serializer_when_target_is_file
api_tests.cedar_metadata_records.serializers.test_serializers.TestCedarMetadataRecordsListSerializer
  ✅ test_serializer_when_target_is_node
  ✅ test_serializer_when_target_is_registration
  ✅ test_serializer_when_target_is_file
api_tests.cedar_metadata_records.serializers.test_serializers.TestCedarMetadataRecordsCreateSerializer
  ✅ test_serializer_when_target_is_node
  ✅ test_serializer_when_target_is_registration
  ✅ test_serializer_when_target_is_file
api_tests.cedar_metadata_records.serializers.test_serializers.TestCedarMetadataRecordsDetailSerializer
  ✅ test_serializer_when_target_is_node
  ✅ test_serializer_when_target_is_registration
  ✅ test_serializer_when_target_is_file
api_tests.cedar_metadata_records.views.test_record_create_post.TestCedarMetadataRecordCreateForProjects
  ✅ test_record_create_for_node_with_inactive_template
  ✅ test_record_create_for_node_conflict
  ✅ test_record_create_for_node_with_admin_auth
  ✅ test_record_create_for_node_with_write_contributor_auth
  ✅ test_record_create_for_node_with_read_auth
  ✅ test_record_create_for_node_with_invalid_auth
  ✅ test_record_create_for_node_without_auth
api_tests.cedar_metadata_records.views.test_record_create_post.TestCedarMetadataRecordCreateForRegistrations
  ✅ test_record_create_for_node_with_inactive_template
  ✅ test_record_create_for_registration_conflict
  ✅ test_record_create_for_node_with_admin_auth
  ✅ test_record_create_for_node_with_write_contributor_auth
  ✅ test_record_create_for_node_with_read_auth
  ✅ test_record_create_for_node_with_invalid_auth
  ✅ test_record_create_for_node_without_auth
api_tests.cedar_metadata_records.views.test_record_create_post.TestCedarMetadataRecordCreateForFiles
  ✅ test_record_create_for_file_with_inactive_template
  ✅ test_record_create_for_file_conflict
  ✅ test_record_create_for_file_with_admin_auth
  ✅ test_record_create_for_file_with_write_contributor_auth
  ✅ test_record_create_for_file_with_read_auth
  ✅ test_record_create_for_file_with_invalid_auth
  ✅ test_record_create_for_file_without_auth
api_tests.cedar_metadata_records.views.test_record_detail_delete.TestCedarMetadataRecordDetailDeleteForProjects
  ✅ test_record_detail_delete_for_node_with_admin_auth
  ✅ test_record_detail_delete_for_node_with_write_auth
  ✅ test_record_detail_delete_for_node_with_read_auth
  ✅ test_record_detail_delete_for_node_with_invalid_auth
  ✅ test_record_detail_delete_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_delete.TestCedarMetadataRecordDetailDeleteForRegistrations
  ✅ test_record_detail_delete_for_registration_with_admin_auth
  ✅ test_record_detail_delete_for_registration_with_write_auth
  ✅ test_record_detail_delete_for_registration_with_read_auth
  ✅ test_record_detail_delete_for_registration_with_invalid_auth
  ✅ test_record_detail_delete_for_registration_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_delete.TestCedarMetadataRecordDetailDeleteForFiles
  ✅ test_record_detail_delete_for_file_with_admin_auth
  ✅ test_record_detail_delete_for_file_with_write_auth
  ✅ test_record_detail_delete_for_file_with_read_auth
  ✅ test_record_detail_delete_for_file_with_invalid_auth
  ✅ test_record_detail_delete_for_file_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePrivateProjectPublishedMetadata
  ✅ test_record_detail_for_node_with_admin_auth
  ✅ test_record_detail_for_node_with_write_auth
  ✅ test_record_detail_for_node_with_read_auth
  ✅ test_record_detail_for_node_with_invalid_auth
  ✅ test_record_detail_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePrivateProjectDraftMetadata
  ✅ test_record_detail_for_node_with_admin_auth
  ✅ test_record_detail_for_node_with_write_auth
  ✅ test_record_detail_for_node_with_read_auth
  ✅ test_record_detail_for_node_with_invalid_auth
  ✅ test_record_detail_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePublicProjectPublishedMetadata
  ✅ test_record_detail_for_node_with_admin_auth
  ✅ test_record_detail_for_node_with_write_auth
  ✅ test_record_detail_for_node_with_read_auth
  ✅ test_record_detail_for_node_with_invalid_auth
  ✅ test_record_detail_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePublicProjectDraftMetadata
  ✅ test_record_detail_for_node_with_admin_auth
  ✅ test_record_detail_for_node_with_write_auth
  ✅ test_record_detail_for_node_with_read_auth
  ✅ test_record_detail_for_node_with_invalid_auth
  ✅ test_record_detail_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrieveRegistrationPublishedMetadata
  ✅ test_record_detail_for_registration_with_admin_auth
  ✅ test_record_detail_for_registration_with_write_auth
  ✅ test_record_detail_for_registration_with_read_auth
  ✅ test_record_detail_for_registration_with_invalid_auth
  ✅ test_record_detail_for_registration_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrieveRegistrationDraftMetadata
  ✅ test_record_detail_for_registration_with_admin_auth
  ✅ test_record_detail_for_registration_with_write_auth
  ✅ test_record_detail_for_registration_with_read_auth
  ✅ test_record_detail_for_registration_with_invalid_auth
  ✅ test_record_detail_for_registration_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePrivateFilePublishedMetadata
  ✅ test_record_detail_for_file_with_admin_auth
  ✅ test_record_detail_for_file_with_write_auth
  ✅ test_record_detail_for_file_with_read_auth
  ✅ test_record_detail_for_file_with_invalid_auth
  ✅ test_record_detail_for_file_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePrivateFileDraftMetadata
  ✅ test_record_detail_for_file_with_admin_auth
  ✅ test_record_detail_for_file_with_write_auth
  ✅ test_record_detail_for_file_with_read_auth
  ✅ test_record_detail_for_file_with_invalid_auth
  ✅ test_record_detail_for_file_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePublicFilePublishedMetadata
  ✅ test_record_detail_for_file_with_admin_auth
  ✅ test_record_detail_for_file_with_write_auth
  ✅ test_record_detail_for_file_with_read_auth
  ✅ test_record_detail_for_file_with_invalid_auth
  ✅ test_record_detail_for_file_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_get.TestCedarMetadataRecordDetailRetrievePublicFileDraftMetadata
  ✅ test_record_detail_for_file_with_admin_auth
  ✅ test_record_detail_for_file_with_write_auth
  ✅ test_record_detail_for_file_with_read_auth
  ✅ test_record_detail_for_file_with_invalid_auth
  ✅ test_record_detail_for_file_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_patch.TestCedarMetadataRecordDetailUpdateForProjects
  ✅ test_record_detail_update_for_node_with_admin_auth
  ✅ test_record_detail_update_for_node_with_write_auth
  ✅ test_record_detail_update_for_node_with_read_auth
  ✅ test_record_detail_update_for_node_with_invalid_auth
  ✅ test_record_detail_update_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_patch.TestCedarMetadataRecordDetailUpdateForRegistrations
  ✅ test_record_detail_update_for_registration_with_admin_auth
  ✅ test_record_detail_update_for_registration_with_write_auth
  ✅ test_record_detail_update_for_registration_with_read_auth
  ✅ test_record_detail_update_for_registration_with_invalid_auth
  ✅ test_record_detail_update_for_registration_with_no_auth
api_tests.cedar_metadata_records.views.test_record_detail_patch.TestCedarMetadataRecordDetailUpdateForFiles
  ✅ test_record_detail_update_for_file_with_admin_auth
  ✅ test_record_detail_update_for_file_with_write_auth
  ✅ test_record_detail_update_for_file_with_read_auth
  ✅ test_record_detail_update_for_file_with_invalid_auth
  ✅ test_record_detail_update_for_file_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPrivateProjectPublishedMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPrivateProjectDraftMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPublicProjectPublishedMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPublicProjectDraftMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadRegistrationPublishedMetadata
  ✅ test_record_metadata_download_for_registration_with_admin_auth
  ✅ test_record_metadata_download_for_registration_with_write_auth
  ✅ test_record_metadata_download_for_registration_with_read_auth
  ✅ test_record_metadata_download_for_registration_with_invalid_auth
  ✅ test_record_metadata_download_for_registration_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadRegistrationDraftMetadata
  ✅ test_record_metadata_download_for_registration_with_admin_auth
  ✅ test_record_metadata_download_for_registration_with_write_auth
  ✅ test_record_metadata_download_for_registration_with_read_auth
  ✅ test_record_metadata_download_for_registration_with_invalid_auth
  ✅ test_record_metadata_download_for_registration_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPrivateFilePublishedMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPrivateFileDraftMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPublicFilePublishedMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_records.views.test_record_metadata_download_get.TestCedarMetadataRecordMetadataDownloadPublicFileDraftMetadata
  ✅ test_record_metadata_download_for_node_with_admin_auth
  ✅ test_record_metadata_download_for_node_with_write_auth
  ✅ test_record_metadata_download_for_node_with_read_auth
  ✅ test_record_metadata_download_for_node_with_invalid_auth
  ✅ test_record_metadata_download_for_node_with_no_auth
api_tests.cedar_metadata_templates.serializers.test_serializers.TestCedarMetadataTemplateSerializer
  ✅ test_serializer
api_tests.cedar_metadata_templates.views.test_template_detail.TestCedarMetadataTemplateDetail
  ✅ test_template_detail_active
  ✅ test_template_detail_inactive
  ✅ test_template_detail_not_found
api_tests.cedar_metadata_templates.views.test_template_list.TestCedarMetadataTemplateList
  ✅ test_template_list
api_tests.chronos.views.test_chronos_journal_detail.TestChronosJournalDetail
  ✅ test_journal_detail
api_tests.chronos.views.test_chronos_journal_list.TestChronosJournalList
  ✅ test_journal_list
api_tests.chronos.views.test_chronos_journal_list.TestChronosJournalListFilter
  ✅ test_journal_list_filter
api_tests.chronos.views.test_chronos_submission_detail.TestChronosSubmissionDetail
  ✅ test_update_success
  ✅ test_update_failure
  ✅ test_get
api_tests.chronos.views.test_chronos_submission_list.TestChronosSubmissionList
  ✅ test_create_success
  ✅ test_create_failure
  ✅ test_list_submitter
  ✅ test_list_contributor
  ✅ test_list_moderator
  ✅ test_list_user
  ✅ test_list_no_auth
api_tests.chronos.views.test_chronos_submission_list.TestChronosSubmissionAutomaticUpdate
  ✅ test_enqueue_is_called_with_submission_is_stale
  ✅ test_enqueue_is_not_called_with_submission_is_fresh
  ✅ test_mix_enqueue
api_tests.meetings.views.test_meetings_detail.TestMeetingDetail
  ✅ test_meeting_detail
api_tests.meetings.views.test_meetings_list.TestMeetingsList
  ✅ test_meeting_list
api_tests.meetings.views.test_meetings_list.TestMeetingListFilter
  ✅ test_meeting_list_filter
api_tests.meetings.views.test_meetings_submissions_detail.TestMeetingSubmissionsDetail
  ✅ test_meeting_submission_detail
api_tests.meetings.views.test_meetings_submissions_list.TestMeetingSubmissionsList
  ✅ test_meeting_submissions_list
  ✅ test_meeting_submissions_list_sorting_and_filtering
api_tests.metrics.test_composite_query.TestElasticSearch
  ✅ test_elasticsearch_agg_query
api_tests.metrics.test_counted_usage.TestRestrictions
  ✅ test_http_method
  ✅ test_required_attributes[attrs0]
  ✅ test_required_attributes[attrs1]
  ✅ test_required_attributes[attrs2]
  ✅ test_required_attributes[attrs3]
api_tests.metrics.test_counted_usage.TestComputedFields
  ✅ test_by_client_session_id
  ✅ test_by_client_session_id_anon
  ✅ test_by_user_auth
  ✅ test_by_useragent_header
api_tests.metrics.test_counted_usage.TestGuidFields
  ✅ test_preprint_file[True]
  ✅ test_preprint_file[False]
  ✅ test_child_registration_file[True]
  ✅ test_child_registration_file[False]
api_tests.metrics.test_preprint_metrics.TestPreprintMetrics
  ✅ test_custom_metric_malformed_query
  ✅ test_agg_query
  ✅ test_post_custom_metric
  ✅ test_preprint_list_with_metrics_fails[downloads]
  ✅ test_preprint_list_with_metrics_fails[views]
  ⚪ test_preprint_with_metrics_succeeds
api_tests.metrics.test_queries.TestNodeAnalyticsQuery
  ✅ test_private_node[week]
  ✅ test_private_node[fortnight]
  ✅ test_private_node[month]
  ✅ test_public_node[week]
  ✅ test_public_node[fortnight]
  ✅ test_public_node[month]
api_tests.metrics.test_raw_metrics.TestRawMetrics
  ✅ test_delete
  ✅ test_put
  ✅ test_put_no_perms
  ✅ test_post
  ✅ test_post_no_perms
  ✅ test_post_and_get
api_tests.metrics.test_registries_moderation_metrics.TestRegistrationModerationMetrics
  ✅ test_record_transitions
api_tests.metrics.test_registries_moderation_metrics.TestRegistrationModerationMetricsView
  ✅ test_registries_moderation_view
api_tests.metrics.test_reports.TestMetricsReports
  ✅ test_report_names
  ✅ test_recent_reports[download_count]
  ✅ test_recent_reports[node_summary]
  ✅ test_recent_reports[institution_summary]
  ✅ test_recent_reports[user_summary]
  ✅ test_recent_reports[preprint_summary]
  ✅ test_recent_reports[osfstorage_file_count]
api_tests.nodes.serializers.test_serializers.TestNodeSerializer
  ✅ test_node_serializer
api_tests.nodes.serializers.test_serializers.TestSparseNodeSerializer
  ✅ test_sparse_node_serializer
api_tests.nodes.serializers.test_serializers.TestNodeRegistrationSerializer
  ✅ test_serialization
api_tests.nodes.serializers.test_serializers.TestSparseRegistrationSerializer
  ✅ test_sparse_registration_serializer
api_tests.nodes.views.test_node_addons.TestNodeInvalidAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeOsfStorageAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeTwoFactorAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeWikiAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeBitbucketAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeDataverseAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeGitHubAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeMendeleyAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeZoteroAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
  ✅ test_sub_folder_list_GET_expected_behavior
api_tests.nodes.views.test_node_addons.TestNodeFigshareAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeBoxAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeDropboxAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeOwnCloudAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeS3Addon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeGoogleDriveAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_PATCH_only_folder_id_raises_error
  ✅ test_settings_detail_PUT_PATCH_only_folder_path_raises_error
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_incomplete_PUT_raises_error
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_addons.TestNodeForwardAddon
  ✅ test_folder_list_GET_expected_behavior
  ✅ test_folder_list_GET_raises_error_admin_not_authorizer
  ✅ test_folder_list_GET_raises_error_noncontrib_not_public
  ✅ test_folder_list_GET_raises_error_writecontrib_not_authorizer
  ✅ test_folder_list_raises_error_if_DELETE
  ✅ test_folder_list_raises_error_if_PATCH
  ✅ test_folder_list_raises_error_if_PUT
  ✅ test_settings_detail_DELETE_disables
  ✅ test_settings_detail_DELETE_success
  ✅ test_settings_detail_GET_disabled
  ✅ test_settings_detail_GET_enabled
  ✅ test_settings_detail_PATCH_readcontrib_raises_error
  ✅ test_settings_detail_PATCH_to_add_folder_without_auth_conflict
  ✅ test_settings_detail_PATCH_to_enable_and_add_external_account_id
  ✅ test_settings_detail_PATCH_to_remove_external_account_id
  ✅ test_settings_detail_POST_enables
  ✅ test_settings_detail_PUT_all_sets_settings
  ✅ test_settings_detail_PUT_none_and_disabled_deauthorizes
  ✅ test_settings_detail_PUT_none_and_enabled_clears_settings
  ✅ test_settings_detail_PUT_only_label_and_enabled_clears_settings
  ✅ test_settings_detail_PUT_only_url_sets_settings
  ✅ test_settings_detail_noncontrib_public_can_view
  ✅ test_settings_detail_noncontrib_public_cannot_edit
  ✅ test_settings_detail_raises_error_if_DELETE_not_enabled
  ✅ test_settings_detail_raises_error_if_POST_already_configured
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_GET
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PATCH
  ✅ test_settings_detail_raises_error_if_noncontrib_not_public_PUT
  ✅ test_settings_list_GET_disabled
  ✅ test_settings_list_GET_enabled
  ✅ test_settings_list_noncontrib_public_can_view
  ✅ test_settings_list_raises_error_if_DELETE
  ✅ test_settings_list_raises_error_if_PATCH
  ✅ test_settings_list_raises_error_if_PUT
  ✅ test_settings_list_raises_error_if_noncontrib_not_public
api_tests.nodes.views.test_node_bibliographic_contributors_list.TestNodeBibliographicContributors
  ✅ test_list_and_filter_bibliographic_contributors
api_tests.nodes.views.test_node_cedar_metadata_record_list.TestNodeCedarMetadataRecordListPublicProject
  ✅ test_record_list_no_auth
  ✅ test_record_list_with_invalid_auth
  ✅ test_record_list_with_read_auth
  ✅ test_record_list_with_write_auth
  ✅ test_record_list_with_admin_auth
api_tests.nodes.views.test_node_cedar_metadata_record_list.TestNodeCedarMetadataRecordListPrivateProject
  ✅ test_record_list_no_auth
  ✅ test_record_list_with_invalid_auth
  ✅ test_record_list_with_read_auth
  ✅ test_record_list_with_write_auth
  ✅ test_record_list_with_admin_auth
api_tests.nodes.views.test_node_children_list.TestNodeChildrenList
  ✅ test_return_public_node_children_list
  ✅ test_return_private_node_children_list
  ✅ test_node_children_list_does_not_include_pointers
  ✅ test_node_children_list_does_not_include_unauthorized_projects
  ✅ test_node_children_list_does_not_include_deleted
  ✅ test_node_children_list_does_not_include_node_links
  ✅ test_node_children_related_counts_duplicate_query_results
  ✅ test_node_children_related_counts
  ✅ test_child_counts_permissions
  ✅ test_private_node_children_with_view_only_link
api_tests.nodes.views.test_node_children_list.TestNodeChildrenListFiltering
  ✅ test_node_child_filtering
api_tests.nodes.views.test_node_children_list.TestNodeChildCreate
  ✅ test_creates_child
  ✅ test_creates_child_logged_in_write_contributor
  ✅ test_creates_child_logged_in_owner
  ✅ test_creates_child_creates_child_and_sanitizes_html_logged_in_owner
  ✅ test_cannot_create_child_on_a_registration
api_tests.nodes.views.test_node_children_list.TestNodeChildrenBulkCreate
  ✅ test_bulk_children_create_blank_request
  ✅ test_bulk_creates_children_limits
  ✅ test_bulk_creates_children_auth_errors
  ✅ test_bulk_creates_children_logged_in_owner
  ✅ test_bulk_creates_children_child_logged_in_write_contributor
  ✅ test_bulk_creates_children_and_sanitizes_html_logged_in_owner
  ✅ test_cannot_bulk_create_children_on_a_registration
  ✅ test_bulk_creates_children_payload_errors
api_tests.nodes.views.test_node_citations.TestNodeCitations
  ✅ test_node_citations
api_tests.nodes.views.test_node_citations.TestNodeCitationsStyle
  ✅ test_node_citations
api_tests.nodes.views.test_node_citations.TestCustomCitations
  ✅ test_custom_citation
api_tests.nodes.views.test_node_comments_list.TestNodeCommentsList
  ✅ test_return_comments
  ✅ test_return_both_deleted_and_undeleted_comments
  ✅ test_node_comments_pagination
api_tests.nodes.views.test_node_comments_list.TestNodeCommentsListFiles
  ✅ test_return_comments
  ✅ test_return_both_deleted_and_undeleted_comments
  ✅ test_node_comments_pagination
  ✅ test_comments_on_deleted_files_are_not_returned
api_tests.nodes.views.test_node_comments_list.TestNodeCommentsListWiki
  ✅ test_return_comments
  ✅ test_return_both_deleted_and_undeleted_comments
  ✅ test_node_comments_pagination
  ✅ test_comments_on_deleted_wikis_are_not_returned
api_tests.nodes.views.test_node_comments_list.TestNodeCommentCreate
  ✅ test_node_comments
  ✅ test_create_comment_errors
  ✅ test_create_comment_with_allowed_tags
api_tests.nodes.views.test_node_comments_list.TestFileCommentCreate
  ✅ test_node_comments
  ✅ test_create_file_comment_errors
api_tests.nodes.views.test_node_comments_list.TestWikiCommentCreate
  ✅ test_node_comments
  ✅ test_create_wiki_comment_errors
api_tests.nodes.views.test_node_comments_list.TestCommentRepliesCreate
  ✅ test_node_comments
  ✅ test_create_comment_reply_invalid_target_id
api_tests.nodes.views.test_node_comments_list.TestCommentFiltering
  ✅ test_filtering
  ✅ test_filtering_for_comment_replies
  ✅ test_filtering_by_target_file
  ✅ test_filtering_by_target_wiki
  ✅ test_filtering_by_page_files
  ✅ test_filtering_by_page_wiki
api_tests.nodes.views.test_node_contributors_and_group_members_list.TestNodeContributorsAndGroupMembers
  ✅ test_list_and_filter_contributors_and_group_members
api_tests.nodes.views.test_node_contributors_detail.TestContributorDetail
  ✅ test_get_contributor_detail_valid_response
  ✅ test_get_contributor_detail_errors
  ✅ test_unregistered_contributor_detail_show_up_as_name_associated_with_project
  ✅ test_node_contributor_detail_serializes_contributor_perms
  ✅ test_detail_includes_index
api_tests.nodes.views.test_node_contributors_detail.TestNodeContributorOrdering
  ✅ test_initial_order
  ✅ test_move_top_contributor_down_one_and_also_log
  ✅ test_move_second_contributor_up_one_to_top
  ✅ test_move_top_contributor_down_to_bottom
  ✅ test_move_bottom_contributor_up_to_top
  ✅ test_move_second_to_last_contributor_down_past_bottom
  ✅ test_move_top_contributor_down_to_second_to_last_position_with_negative_numbers
  ✅ test_write_contributor_fails_to_move_top_contributor_down_one
  ✅ test_non_authenticated_fails_to_move_top_contributor_down_one
api_tests.nodes.views.test_node_contributors_detail.TestNodeContributorUpdate
  ✅ test_change_contrib_errors
  ✅ test_change_contributor_non_admin_osf_group_member_auth
  ✅ test_change_admin_self_without_other_admin
  ✅ test_node_update_invalid_data
  ✅ test_change_contributor_correct_id
  ✅ test_change_contributor_admin_osf_group_permissions
  ✅ test_remove_all_bibliographic_statuses_contributors
  ✅ test_change_contributor_permissions
  ✅ test_change_contributor_bibliographic
  ✅ test_change_contributor_permission_and_bibliographic
  ✅ test_not_change_contributor
  ✅ test_change_admin_self_with_other_admin
api_tests.nodes.views.test_node_contributors_detail.TestNodeContributorPartialUpdate
  ✅ test_patch_bibliographic_only
  ✅ test_patch_permission_only
api_tests.nodes.views.test_node_contributors_detail.TestNodeContributorDelete
  ✅ test_remove_errors
  ✅ test_remove_contributor_osf_group_member_read
  ✅ test_can_not_remove_only_bibliographic_contributor
  ✅ test_remove_contributor_non_admin_is_forbidden
  ✅ test_remove_contributor_admin
  ✅ test_remove_contributor_osf_group_member_admin
  ✅ test_remove_self_non_admin
  ✅ test_remove_self_contributor_not_unique_admin
  ✅ test_can_remove_self_as_contributor_not_unique_admin
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorList
  ✅ test_concatenated_id
  ✅ test_permissions_work_with_many_users
  ✅ test_return
  ✅ test_return_public_contributor_list_logged_out
  ✅ test_return_private_contributor_list_logged_in_contributor
  ✅ test_filtering_on_obsolete_fields
  ✅ test_disabled_contributors_contain_names_under_meta
  ✅ test_total_bibliographic_contributor_count_returned_in_metadata
  ✅ test_unregistered_contributor_field_is_null_if_account_claimed
  ✅ test_unregistered_contributors_show_up_as_name_associated_with_project
  ✅ test_contributors_order_is_the_same_over_multiple_requests
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorAdd
  ✅ test_add_contributors_errors
  ✅ test_contributor_create_invalid_data
  ✅ test_add_contributor_dont_expose_email
  ✅ test_add_contributor_is_visible_by_default
  ✅ test_adds_bibliographic_contributor_public_project_admin
  ✅ test_adds_non_bibliographic_contributor_private_project_admin
  ✅ test_adds_contributor_public_project_non_admin
  ✅ test_adds_contributor_public_project_non_admin_osf_group
  ✅ test_adds_contributor_public_project_non_contributor
  ✅ test_adds_contributor_public_project_not_logged_in
  ✅ test_adds_contributor_private_project_admin
  ✅ test_adds_contributor_private_project_osf_group_admin_perms
  ✅ test_adds_contributor_without_bibliographic_private_project_admin
  ✅ test_adds_admin_contributor_private_project_admin
  ✅ test_adds_write_contributor_private_project_admin
  ✅ test_adds_read_contributor_private_project_admin
  ✅ test_adds_invalid_permission_contributor_private_project_admin
  ✅ test_adds_none_permission_contributor_private_project_admin_uses_default_permissions
  ✅ test_adds_already_existing_contributor_private_project_admin
  ✅ test_adds_non_existing_user_private_project_admin
  ✅ test_adds_contributor_private_project_non_admin
  ✅ test_adds_contributor_private_project_non_contributor
  ✅ test_adds_contributor_private_project_not_logged_in
  ✅ test_add_unregistered_contributor_with_fullname
  ✅ test_add_contributor_with_fullname_and_email_unregistered_user
  ✅ test_add_contributor_with_fullname_and_email_unregistered_user_set_attributes
  ✅ test_add_contributor_with_fullname_and_email_registered_user
  ✅ test_add_unregistered_contributor_already_contributor
  ✅ test_add_contributor_user_is_deactivated_registered_payload
  ✅ test_add_contributor_user_is_deactivated_unregistered_payload
  ✅ test_add_contributor_index_returned
  ✅ test_add_contributor_set_index_out_of_range
  ✅ test_add_contributor_set_index_first
  ✅ test_add_contributor_set_index_last
  ✅ test_add_inactive_merged_user_as_contributor
  ✅ test_add_unconfirmed_user_by_guid
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorCreateValidation
  ✅ test_add_contributor_validation
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorCreateEmail
  ✅ test_add_contributor_no_email_if_false
  ✅ test_add_contributor_sends_email
  ✅ test_add_contributor_signal_if_default
  ✅ test_add_contributor_signal_preprint_email_disallowed
  ✅ test_add_unregistered_contributor_sends_email
  ✅ test_add_unregistered_contributor_signal_if_default
  ✅ test_add_unregistered_contributor_signal_preprint_email_disallowed
  ✅ test_add_contributor_invalid_send_email_param
  ✅ test_add_unregistered_contributor_without_email_no_email
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorBulkCreate
  ✅ test_node_contributor_bulk_create_contributor_exists
  ✅ test_node_contributor_bulk_create_errors
  ✅ test_node_contributor_bulk_create_logged_in_public_project_project
  ✅ test_node_contributor_bulk_create_logged_in_contrib_private_project
  ✅ test_node_contributor_bulk_create_payload_errors
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorBulkUpdate
  ✅ test_bulk_update_contributors_errors
  ✅ test_bulk_update_contributors_public_projects_logged_in
  ✅ test_bulk_update_contributors_private_projects_logged_in_contrib
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorBulkPartialUpdate
  ✅ test_bulk_partial_update_errors
  ✅ test_bulk_partial_update_contributors_public_projects_logged_in
  ✅ test_bulk_partial_update_contributors_private_projects_logged_in_contrib
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorBulkDelete
  ✅ test_bulk_delete_contributors_errors
  ✅ test_bulk_delete_contributors_public_project_logged_in
  ✅ test_bulk_delete_contributors_private_projects_logged_in_contributor
api_tests.nodes.views.test_node_contributors_list.TestNodeContributorFiltering
  ✅ test_filtering
  ✅ test_filtering_node_with_non_bibliographic_contributor
api_tests.nodes.views.test_node_detail.TestNodeDetail
  ✅ test_return_project_details
  ✅ test_return_private_project_details_logged_in_write_contributor
  ✅ test_top_level_project_has_no_parent
  ✅ test_child_project_has_parent
  ✅ test_node_has
  ✅ test_node_has_comments_link
  ✅ test_node_comments_link_query_params_formatted
  ✅ test_node_has_correct_unread_comments_count
  ✅ test_node_has_correct_wiki_page_count
  ✅ test_node_properties
  ✅ test_requesting_folder_returns_error
  ✅ test_cannot_return_registrations_at_node_detail_endpoint
  ✅ test_cannot_return_folder_at_node_detail_endpoint
  ✅ test_node_list_embed_identifier_link
  ✅ test_node_shows_wiki_relationship_based_on_disabled_status_and_version
  ✅ test_preprint_field
  ✅ test_shows_access_requests_enabled_field_based_on_version
  ✅ test_node_shows_correct_templated_from_count
  ✅ test_node_show_correct_children_count
  ✅ test_node_shows_related_count_for_linked_by_relationships
  ✅ test_node_shows_correct_forks_count_including_private_forks
  ✅ test_current_user_permissions
  ✅ test_current_user_permissions_vol
api_tests.nodes.views.test_node_detail.TestNodeUpdate
  ✅ test_node_institution_update
  ✅ test_node_update_invalid_data
  ✅ test_cannot_make_project_public_if_non_contributor
  ✅ test_cannot_make_project_public_if_non_admin_contributor
  ✅ test_can_make_project_public_if_admin_contributor
  ✅ test_make_project_private_uncalculated_storage_limit
  ✅ test_make_project_private_over_storage_limit
  ✅ test_make_project_private_under_storage_limit
  ✅ test_update_errors
  ✅ test_update_public_project_logged_in
  ✅ test_update_public_project_osf_group_member
  ✅ test_cannot_update_a_registration
  ✅ test_update_private_project_logged_in_contributor
  ✅ test_update_project_sanitizes_html_properly
  ✅ test_partial_update_project_updates_project_correctly_and_sanitizes_html
  ✅ test_partial_update_public_project_logged_in
  ✅ test_write_to_public_field_non_contrib_forbidden
  ✅ test_partial_update_errors
  ✅ test_partial_update_private_project_logged_in_contributor
  ✅ test_multiple_patch_requests_with_same_category_generates_one_log
  ✅ test_public_project_with_publicly_editable_wiki_turns_private
  ✅ test_set_node_private_updates_doi
  ✅ test_set_node_with_preprint_private_updates_doi
api_tests.nodes.views.test_node_detail.TestNodeDelete
  ✅ test_deletes_node_errors
  ✅ test_deletes_private_node_logged_in_read_only_contributor
  ✅ test_deletes_private_node_logged_in_write_contributor
  ✅ test_delete_project_with_component_returns_errors_pre_2_12
  ✅ test_delete_project_with_component_allowed_with_2_12
  ✅ test_delete_project_with_private_component_2_12
  ✅ test_delete_bookmark_collection_returns_error
  ✅ test_delete_node_with_preprint_calls_preprint_update_status
  ✅ test_delete_node_with_identifier_calls_preprint_update_status
  ✅ test_deletes_public_node_succeeds_as_owner
  ✅ test_requesting_deleted_returns_410
  ✅ test_deletes_private_node_logged_in_contributor
api_tests.nodes.views.test_node_detail.TestReturnDeletedNode
  ✅ test_return_deleted_node
api_tests.nodes.views.test_node_detail.TestUpdateNodeSubjects
  ✅ test_set_subjects_as_attributes_perms
  ✅ test_set_subjects_as_relationships_perms
  ✅ test_set_subjects_as_attributes_validation
  ✅ test_set_subjects_as_relationships_validation
  ✅ test_set_subjects_as_relationships_hierarchies
api_tests.nodes.views.test_node_detail.TestNodeTags
  ✅ test_public_project_starts_with_no_tags
  ✅ test_node_detail_does_not_expose_system_tags
  ✅ test_contributor_can_add_tag_to_public_project
  ✅ test_contributor_can_add_tag_to_private_project
  ✅ test_partial_update_project_does_not_clear_tags
  ✅ test_add_tag_to_project_errors
  ✅ test_tags_add_and_remove_properly
  ✅ test_tags_post_object_instead_of_list
  ✅ test_tags_patch_object_instead_of_list
api_tests.nodes.views.test_node_detail.TestNodeLicense
  ✅ test_node_has
  ✅ test_component_return_parent_license_if_no_license
api_tests.nodes.views.test_node_detail.TestNodeUpdateLicense
  ✅ test_admin_update_license_with_invalid_id
  ✅ test_admin_can_update_license
  ✅ test_admin_can_update_license_record
  ✅ test_update
  ✅ test_update_node_with_existing_license_year_attribute_only
  ✅ test_update_node_with_existing_license_copyright_holders_attribute_only
  ✅ test_update_node_with_existing_license_relationship_only
  ✅ test_update_node_with_existing_license_relationship_and_attributes
  ✅ test_update_node_license_without_required_year_in_payload
  ✅ test_update_node_license_without_license_id
  ✅ test_update_node_license_without_required_copyright_holders_in_payload_
  ✅ test_update_node_license_adds_log
  ✅ test_update_node_license_without_change_does_not_add_log
api_tests.nodes.views.test_node_draft_registration_detail.TestDraftRegistrationDetail
  ✅ test_admin_can_view_draft
  ✅ test_admin_group_member_can_view
  ✅ test_cannot_view_draft
  ✅ test_cannot_view_deleted_draft
  ✅ test_draft_must_be_branched_from_node_in_kwargs
  ✅ test_draft_registration_serializer_usage
  ✅ test_can_view_after_added
api_tests.nodes.views.test_node_draft_registration_detail.TestDraftRegistrationUpdate
  ✅ test_id_required_in_payload
  ✅ test_admin_can_update_draft
  ✅ test_draft_must_be_branched_from_node
  ✅ test_cannot_update_draft
  ✅ test_registration_metadata_does_not_need_to_be_supplied
  ✅ test_registration_metadata_must_be_a_dictionary
  ✅ test_registration_metadata_question_values_must_be_dictionaries
  ✅ test_registration_metadata_question_keys_must_be_value
  ✅ test_question_in_registration_metadata_must_be_in_schema
  ✅ test_multiple_choice_question_value_must_match_value_in_schema
  ✅ test_cannot_update_registration_schema
  ✅ test_required_metaschema_questions_not_required_on_update
  ✅ test_required_registration_responses_questions_not_required_on_update
  ✅ test_registration_responses_must_be_a_dictionary
  ✅ test_registration_responses_question_values_should_not_be_dicts

Report exceeded GitHub limit of 65535 bytes and has been trimmed

Annotations

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_node_errors

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:93: in test_node_errors
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:93: in test_node_errors
    res = app.put_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:289: in put
    return self.update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:65: in update
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_user_with_institution_and_permissions

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:159: in test_user_with_institution_and_permissions
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:159: in test_user_with_institution_and_permissions
    res = app.post_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:194: in post
    return self.create(request, *args, **kwargs)
api/nodes/views.py:1761: in create
    ret = super().create(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:19: in create
    self.perform_create(serializer)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:24: in perform_create
    serializer.save()
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/serializers.py:208: in save
    self.instance = self.create(validated_data)
api/nodes/serializers.py:1478: in create
    instance = self.context['view'].get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_user_with_institution_and_permissions_through_patch

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:182: in test_user_with_institution_and_permissions_through_patch
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:182: in test_user_with_institution_and_permissions_through_patch
    res = app.put_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:289: in put
    return self.update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:65: in update
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_remove_institutions_with_affiliated_user

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:205: in test_remove_institutions_with_affiliated_user
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:205: in test_remove_institutions_with_affiliated_user
    res = app.put_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:289: in put
    return self.update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:65: in update
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_using_post_making_no_changes_returns_201

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:222: in test_using_post_making_no_changes_returns_201
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:222: in test_using_post_making_no_changes_returns_201
    res = app.post_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:194: in post
    return self.create(request, *args, **kwargs)
api/nodes/views.py:1761: in create
    ret = super().create(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:19: in create
    self.perform_create(serializer)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:24: in perform_create
    serializer.save()
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/serializers.py:208: in save
    self.instance = self.create(validated_data)
api/nodes/serializers.py:1478: in create
    instance = self.context['view'].get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_put_not_admin_but_affiliated

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:242: in test_put_not_admin_but_affiliated
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:242: in test_put_not_admin_but_affiliated
    res = app.put_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:289: in put
    return self.update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:65: in update
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_add_through_patch_one_inst_to_node_with_inst

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:260: in test_add_through_patch_one_inst_to_node_with_inst
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:260: in test_add_through_patch_one_inst_to_node_with_inst
    res = app.patch_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:292: in patch
    return self.partial_update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:82: in partial_update
    return self.update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:65: in update
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_add_through_patch_one_inst_while_removing_other

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:279: in test_add_through_patch_one_inst_while_removing_other
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:279: in test_add_through_patch_one_inst_while_removing_other
    res = app.patch_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:292: in patch
    return self.partial_update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:82: in partial_update
    return self.update(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:65: in update
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_add_one_inst_with_post_to_node_with_inst

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:298: in test_add_one_inst_with_post_to_node_with_inst
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:298: in test_add_one_inst_with_post_to_node_with_inst
    res = app.post_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:194: in post
    return self.create(request, *args, **kwargs)
api/nodes/views.py:1761: in create
    ret = super().create(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:19: in create
    self.perform_create(serializer)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:24: in perform_create
    serializer.save()
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/serializers.py:208: in save
    self.instance = self.create(validated_data)
api/nodes/serializers.py:1478: in create
    instance = self.context['view'].get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_nothing

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:311: in test_delete_nothing
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:311: in test_delete_nothing
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_existing_inst

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:325: in test_delete_existing_inst
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:325: in test_delete_existing_inst
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_not_affiliated_and_affiliated_insts

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:343: in test_delete_not_affiliated_and_affiliated_insts
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:343: in test_delete_not_affiliated_and_affiliated_insts
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_user_is_admin

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:362: in test_delete_user_is_admin
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:362: in test_delete_user_is_admin
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_user_is_read_write

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:380: in test_delete_user_is_read_write
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:380: in test_delete_user_is_read_write
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_user_is_read_only

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:398: in test_delete_user_is_read_only
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:398: in test_delete_user_is_read_only
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_delete_user_is_admin_but_not_affiliated_with_inst

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:416: in test_delete_user_is_admin_but_not_affiliated_with_inst
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:416: in test_delete_user_is_admin_but_not_affiliated_with_inst
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_admin_can_add_affiliated_institution

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:434: in test_admin_can_add_affiliated_institution
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:434: in test_admin_can_add_affiliated_institution
    res = app.post_json_api(node_institutions_url, payload, auth=user.auth)
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:194: in post
    return self.create(request, *args, **kwargs)
api/nodes/views.py:1761: in create
    ret = super().create(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:19: in create
    self.perform_create(serializer)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:24: in perform_create
    serializer.save()
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/serializers.py:208: in save
    self.instance = self.create(validated_data)
api/nodes/serializers.py:1478: in create
    instance = self.context['view'].get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_admin_can_remove_admin_affiliated_institution

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:448: in test_admin_can_remove_admin_affiliated_institution
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:448: in test_admin_can_remove_admin_affiliated_institution
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_admin_can_remove_read_write_contributor_affiliated_institution

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:464: in test_admin_can_remove_read_write_contributor_affiliated_institution
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:464: in test_admin_can_remove_read_write_contributor_affiliated_institution
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_read_write_contributor_can_add_affiliated_institution

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:478: in test_read_write_contributor_can_add_affiliated_institution
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:478: in test_read_write_contributor_can_add_affiliated_institution
    res = app.post_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:194: in post
    return self.create(request, *args, **kwargs)
api/nodes/views.py:1761: in create
    ret = super().create(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:19: in create
    self.perform_create(serializer)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:24: in perform_create
    serializer.save()
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/serializers.py:208: in save
    self.instance = self.create(validated_data)
api/nodes/serializers.py:1478: in create
    instance = self.context['view'].get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_read_write_contributor_can_remove_affiliated_institution

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:496: in test_read_write_contributor_can_remove_affiliated_institution
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:496: in test_read_write_contributor_can_remove_affiliated_institution
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'

Check failure on line 0 in report.xml

See this annotation in the file changed.

@github-actions github-actions / api2 REPORT

pytest ► api_tests.nodes.views.test_node_relationship_institutions.TestNodeRelationshipInstitutions ► test_contribs_cannot_perform_action

Failed test found in:
  report.xml
Error:
  api_tests/nodes/views/test_node_relationship_institutions.py:518: in test_contribs_cannot_perform_action
Raw output
api_tests/nodes/views/test_node_relationship_institutions.py:518: in test_contribs_cannot_perform_action
    res = app.delete_json_api(
tests/json_api_test_app.py:124: in wrapper
    return JSONAPIWrapper.make_wrapper(self, url, method, content_type, params, **kw)
tests/json_api_test_app.py:33: in make_wrapper
    wrapper = self._gen_request(method, url, **kw)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest_plus/app.py:175: in _gen_request
    return super(TestApp, self)._gen_request(method=method,
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:749: in _gen_request
    return self.do_request(req, status=status,
tests/json_api_test_app.py:88: in do_request
    response = super().do_request(req, status, expect_errors)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/app.py:620: in do_request
    res = req.get_response(app, catch_exc_info=True)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1309: in send
    status, headers, app_iter, exc_info = self.call_application(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webob/request.py:1278: in call_application
    app_iter = application(self.environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/webtest/lint.py:196: in lint_app
    iterator = application(environ, start_response_wrapper)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/contrib/staticfiles/handlers.py:80: in __call__
    return self.application(environ, start_response)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1711: in runner
    return sentry_patched_function(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:162: in sentry_patched_wsgi_handler
    return SentryWsgiMiddleware(bound_old_app, use_x_forwarded_for)(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:109: in __call__
    reraise(*_capture_exception())
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/utils.py:1640: in reraise
    raise value
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.py:102: in __call__
    response = self.app(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/wsgi.py:124: in __call__
    response = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/__init__.py:450: in sentry_patched_get_response
    rv = old_get_response(self, request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:140: in get_response
    response = self._middleware_chain(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/corsheaders/middleware.py:56: in __call__
    result = self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/middleware.py:169: in __call__
    return f(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/utils/deprecation.py:134: in __call__
    response = response or self.get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:57: in inner
    response = response_for_exception(request, exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:140: in response_for_exception
    response = handle_uncaught_exception(
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/sentry_sdk/integrations/django/views.py:84: in sentry_wrapped_callback
    return callback(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/contextlib.py:81: in inner
    return func(*args, **kwds)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/decorators/csrf.py:56: in wrapper_view
    return view_func(*args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/django/views/generic/base.py:104: in view
    return self.dispatch(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:509: in dispatch
    response = self.handle_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:469: in handle_exception
    self.raise_uncaught_exception(exc)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:480: in raise_uncaught_exception
    raise exc
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:506: in dispatch
    response = handler(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/generics.py:295: in delete
    return self.destroy(request, *args, **kwargs)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/mixins.py:90: in destroy
    instance = self.get_object()
api/nodes/views.py:1743: in get_object
    self.check_object_permissions(self.request, obj)
../../../.cache/pypoetry/virtualenvs/osf-io-ozdFaKNQ-py3.12/lib/python3.12/site-packages/rest_framework/views.py:345: in check_object_permissions
    if not permission.has_object_permission(request, self, obj):
api/base/permissions.py:176: in has_object_permission
    return resource.can_edit(auth.user)
osf/models/node.py:775: in can_edit
    user = user or auth.user
E   AttributeError: 'OSFUser' object has no attribute 'user'