From: Ward Vandewege Date: Wed, 27 Oct 2021 19:05:00 +0000 (-0400) Subject: 18183: When the user unsetup api endpoint is hit, any tokens owned by X-Git-Tag: 2.4.0~192^2~2 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/b7ec820ac297bc316ef9ffa36242e7928acbc0b4 18183: When the user unsetup api endpoint is hit, any tokens owned by the user should be deleted. Arvados-DCO-1.1-Signed-off-by: Ward Vandewege --- diff --git a/services/api/app/models/user.rb b/services/api/app/models/user.rb index 2e862d3ae6..366c03e309 100644 --- a/services/api/app/models/user.rb +++ b/services/api/app/models/user.rb @@ -300,6 +300,12 @@ SELECT target_uuid, perm_level Link.where(link_class: 'signature', tail_uuid: self.uuid).destroy_all + # delete tokens for this user + ApiClientAuthorization.where(user_id: self.id).destroy_all + # delete ssh keys for this user + AuthorizedKey.where(owner_uuid: self.uuid).destroy_all + AuthorizedKey.where(authorized_user_uuid: self.uuid).destroy_all + # delete user preferences (including profile) self.prefs = {} diff --git a/services/api/test/integration/users_test.rb b/services/api/test/integration/users_test.rb index b24ddc5a52..81168e15b7 100644 --- a/services/api/test/integration/users_test.rb +++ b/services/api/test/integration/users_test.rb @@ -198,6 +198,13 @@ class UsersTest < ActionDispatch::IntegrationTest verify_link_existence created['uuid'], created['email'], true, true, true, true, false + # create a token + token = act_as_system_user do + ApiClientAuthorization.create!(user: User.find_by_uuid(created['uuid']), api_client: ApiClient.all.first).api_token + end + + assert_equal 1, ApiClientAuthorization.where(user_id: User.find_by_uuid(created['uuid']).id).size, 'expected token not found' + post "/arvados/v1/users/#{created['uuid']}/unsetup", params: {}, headers: auth(:admin) assert_response :success @@ -205,6 +212,7 @@ class UsersTest < ActionDispatch::IntegrationTest created2 = json_response assert_not_nil created2['uuid'], 'expected uuid for the newly created user' assert_equal created['uuid'], created2['uuid'], 'expected uuid not found' + assert_equal 0, ApiClientAuthorization.where(user_id: User.find_by_uuid(created['uuid']).id).size, 'token should have been deleted by user unsetup' verify_link_existence created['uuid'], created['email'], false, false, false, false, false end