# frozen_string_literal: true

RSpec.describe Jobs::CleanUpUnusedUserApiKeys do
  fab!(:key1, :readonly_user_api_key)
  fab!(:key2, :readonly_user_api_key)
  fab!(:key3) { Fabricate(:readonly_user_api_key, revoked_at: 10.days.ago) }

  context "when user api key is unused in last 1 days" do
    before { SiteSetting.revoke_user_api_keys_unused_days = 1 }

    it "revokes only active unused keys" do
      freeze_time

      key1.update!(last_used_at: 2.days.ago)
      key3.update!(last_used_at: 2.days.ago)

      expect { described_class.new.execute({}) }.to change { key1.reload.revoked_at }.from(nil).to(
        be_within_one_second_of Time.current
      ).and not_change { key2.reload.revoked_at }.and not_change { key3.reload.revoked_at }
    end
  end
end
