diff --git a/app/tasks/maintenance/update_api_entreprise_token_expires_at_task.rb b/app/tasks/maintenance/update_api_entreprise_token_expires_at_task.rb new file mode 100644 index 000000000..4c111d7dc --- /dev/null +++ b/app/tasks/maintenance/update_api_entreprise_token_expires_at_task.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Maintenance + class UpdateAPIEntrepriseTokenExpiresAtTask < MaintenanceTasks::Task + def collection + Procedure.where.not(api_entreprise_token: nil) + end + + def process(procedure) + procedure.set_api_entreprise_token_expires_at + procedure.save! + end + end +end diff --git a/spec/tasks/maintenance/update_api_entreprise_token_expires_at_task_spec.rb b/spec/tasks/maintenance/update_api_entreprise_token_expires_at_task_spec.rb new file mode 100644 index 000000000..87a78b147 --- /dev/null +++ b/spec/tasks/maintenance/update_api_entreprise_token_expires_at_task_spec.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module Maintenance + RSpec.describe UpdateAPIEntrepriseTokenExpiresAtTask do + describe "#process" do + subject(:process) { described_class.process(procedure) } + + let(:expiration) { 1.month.from_now.beginning_of_minute } + let(:procedure) { create(:procedure) } + + before do + procedure.update_column(:api_entreprise_token, JWT.encode({ exp: expiration.to_i }, nil, "none")) + end + + it do + expect { process }.to change { procedure.reload.api_entreprise_token_expires_at }.from(nil).to(expiration) + end + end + end +end