diff --git a/lib/foreman_inventory_upload/async/upload_report_direct_job.rb b/lib/foreman_inventory_upload/async/upload_report_direct_job.rb index 24a3d0471..888523cc3 100644 --- a/lib/foreman_inventory_upload/async/upload_report_direct_job.rb +++ b/lib/foreman_inventory_upload/async/upload_report_direct_job.rb @@ -59,11 +59,13 @@ def plan(filename, organization_id) def try_execute if content_disconnected? logger.info("Upload canceled: connection to Insights is not enabled. Report location: #{filename}") + done! return end unless organization.owner_details&.dig('upstreamConsumer', 'idCert') logger.info("Skipping organization '#{organization}', no candlepin certificate defined.") + done! return end diff --git a/test/jobs/upload_report_direct_job_test.rb b/test/jobs/upload_report_direct_job_test.rb index 1acb3b57c..66e71a3ef 100644 --- a/test/jobs/upload_report_direct_job_test.rb +++ b/test/jobs/upload_report_direct_job_test.rb @@ -401,4 +401,33 @@ class UploadReportDirectJobTest < ActiveSupport::TestCase file.close end end + + test 'mark as done when upload aborted due to missing certificate' do + # Remove certificate from organization + Organization.any_instance.stubs(:owner_details).returns({}) + + action = create_action(ForemanInventoryUpload::Async::UploadReportDirectJob) + action.expects(:action_subject).with(@organization) + plan_action(action, nil, @organization.id) + + # Execute the action + action.send(:try_execute) + + # Verify it is marked as done + assert action.done? + end + + test 'mark as done when upload aborted due to disconnected mode' do + Setting.stubs(:[]).with(:subscription_connection_enabled).returns(false) + + action = create_action(ForemanInventoryUpload::Async::UploadReportDirectJob) + action.expects(:action_subject).with(@organization) + plan_action(action, nil, @organization.id) + + # Execute the action + action.send(:try_execute) + + # Verify it is marked as done + assert action.done? + end end