Skip to content

Commit

Permalink
Re-upload compact index files on yank/restore
Browse files Browse the repository at this point in the history
  • Loading branch information
segiddins committed Aug 1, 2023
1 parent ed8133d commit 207be52
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 1 deletion.
8 changes: 7 additions & 1 deletion app/models/deletion.rb
Expand Up @@ -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
Expand Down
7 changes: 7 additions & 0 deletions test/factories/version.rb
Expand Up @@ -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
5 changes: 5 additions & 0 deletions test/functional/api/v1/deletions_controller_test.rb
Expand Up @@ -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
Expand Down
11 changes: 11 additions & 0 deletions test/models/deletion_test.rb
Expand Up @@ -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
Expand Down

0 comments on commit 207be52

Please sign in to comment.