# frozen_string_literal: true

WebMock::HttpLibAdapterRegistry.instance.register(
  :final_destination,
  Class.new do
    OriginalHTTP = FinalDestination::HTTP unless const_defined?(:OriginalHTTP)

    def self.enable!
      FinalDestination.send(:remove_const, :HTTP)
      FinalDestination.send(:const_set, :HTTP, Net::HTTP)
    end

    def self.disable!
      FinalDestination.send(:remove_const, :HTTP)
      FinalDestination.send(:const_set, :HTTP, OriginalHTTP)
    end
  end,
)

module FinalDestination::TestHelper
  def self.stub_to_fail(&blk)
    WebMock::HttpLibAdapterRegistry.instance.http_lib_adapters[:final_destination].disable!
    FinalDestination::SSRFDetector.stubs(:lookup_ips).returns(["0.0.0.0"])
    yield
  ensure
    WebMock::HttpLibAdapterRegistry.instance.http_lib_adapters[:final_destination].enable!
    FinalDestination::SSRFDetector.unstub(:lookup_ips)
  end
end