From 207be52ef6ce4fb9ee5eaed97c09f02277911da2 Mon Sep 17 00:00:00 2001 From: Samuel Giddins Date: Tue, 1 Aug 2023 10:53:02 -0700 Subject: [PATCH] Re-upload compact index files on yank/restore --- app/models/deletion.rb | 8 +++++++- test/factories/version.rb | 7 +++++++ test/functional/api/v1/deletions_controller_test.rb | 5 +++++ test/models/deletion_test.rb | 11 +++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/models/deletion.rb b/app/models/deletion.rb index 682129c61a8..0676dbc96a7 100644 --- a/app/models/deletion.rb +++ b/app/models/deletion.rb @@ -45,12 +45,18 @@ def expire_cache def remove_from_index @version.update!(indexed: false, yanked_at: Time.now.utc) - Indexer.perform_later + reindex end def restore_to_index version.update!(indexed: true, yanked_at: nil, yanked_info_checksum: nil) + reindex + end + + def reindex Indexer.perform_later + UploadInfoFileJob.perform_later(rubygem_name: rubygem_name) + UploadVersionsFileJob.perform_later end def remove_from_storage diff --git a/test/factories/version.rb b/test/factories/version.rb index fd7a1950592..a54821dc3c8 100644 --- a/test/factories/version.rb +++ b/test/factories/version.rb @@ -25,5 +25,12 @@ trait :mfa_required do metadata { { "rubygems_mfa_required" => "true" } } end + + after(:create) do |version| + if version.info_checksum.blank? + checksum = GemInfo.new(version.rubygem.name).info_checksum + version.update_attribute :info_checksum, checksum + end + end end end diff --git a/test/functional/api/v1/deletions_controller_test.rb b/test/functional/api/v1/deletions_controller_test.rb index 8c616056596..a21f091904c 100644 --- a/test/functional/api/v1/deletions_controller_test.rb +++ b/test/functional/api/v1/deletions_controller_test.rb @@ -394,6 +394,11 @@ class Api::V1::DeletionsControllerTest < ActionController::TestCase should "have enqueued a webhook" do assert_enqueued_jobs 1, only: NotifyWebHookJob end + should "have enqueued reindexing job" do + assert_enqueued_jobs 1, only: Indexer + assert_enqueued_jobs 1, only: UploadVersionsFileJob + assert_enqueued_jobs 1, only: UploadInfoFileJob, with: { rubygem_name: @rubygem.name } + end end context "and a version 0.1.1" do diff --git a/test/models/deletion_test.rb b/test/models/deletion_test.rb index e134ae5e7a0..38ec6f7a30b 100644 --- a/test/models/deletion_test.rb +++ b/test/models/deletion_test.rb @@ -186,6 +186,17 @@ class DeletionTest < ActiveSupport::TestCase @deletion.restore! end end + + should "enqueue indexing jobs" do + @deletion = delete_gem + assert_enqueued_jobs 1, only: Indexer do + assert_enqueued_jobs 1, only: UploadVersionsFileJob do + assert_enqueued_jobs 1, only: UploadInfoFileJob, with: { rubygem_name: @rubygem.name } do + @deletion.restore! + end + end + end + end end private