From 067410e54a64079654e46e3f5eacca34b01cba32 Mon Sep 17 00:00:00 2001 From: Erik Ryhorchuk Date: Wed, 6 Mar 2024 14:39:10 -0800 Subject: [PATCH] rescue forbidden user github error --- app/models/shipit/user.rb | 2 ++ test/models/users_test.rb | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/shipit/user.rb b/app/models/shipit/user.rb index 0e283e143..c94c29dfa 100644 --- a/app/models/shipit/user.rb +++ b/app/models/shipit/user.rb @@ -95,6 +95,8 @@ def refresh_from_github! update!(github_user: Shipit.github.api.user(github_id)) rescue Octokit::NotFound identify_renamed_user! + rescue Octokit::Forbidden + Rails.logger.info("User #{name}, github_id #{github_id} has forbidden access to their GitHub, likely deleted.") end def github_user=(github_user) diff --git a/test/models/users_test.rb b/test/models/users_test.rb index 1cbe57296..3e82242da 100644 --- a/test/models/users_test.rb +++ b/test/models/users_test.rb @@ -155,7 +155,7 @@ class UsersTest < ActiveSupport::TestCase user = User.find_or_create_from_github(@minimal_github_user) assert_nil user.email end - + test "find_or_create_from_github handles user 403" do Shipit.preferred_org_emails = [@org_domain] Octokit::Client.any_instance.expects(:emails).raises(Octokit::Forbidden) @@ -203,6 +203,14 @@ class UsersTest < ActiveSupport::TestCase assert_equal 'george@cyclim.se', user.email end + test "#refresh_from_github! logs deleted users" do + Shipit.github.api.expects(:user).with(@user.github_id).raises(Octokit::Forbidden) + + Rails.logger.expects(:info).with("User #{@user.name}, github_id #{@user.github_id} has forbidden access to their GitHub, likely deleted.") + + @user.refresh_from_github! + end + test "#github_api uses the user's access token" do assert_equal @user.github_access_token, @user.github_api.access_token end