30 lines
896 B
Ruby
30 lines
896 B
Ruby
|
# 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
|