stripe-ruby/test/test_helper.rb
2021-02-19 20:32:33 -05:00

78 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require "coveralls"
Coveralls.wear!("test_frameworks")
require "stripe"
require "test/unit"
require "mocha/setup"
require "stringio"
require "shoulda/context"
require "webmock/test_unit"
PROJECT_ROOT = ::File.expand_path("../", __dir__)
require ::File.expand_path("test_data", __dir__)
require ::File.expand_path("stripe_mock", __dir__)
# If changing this number, please also change it in `.travis.yml`.
MOCK_MINIMUM_VERSION = "0.103.0"
MOCK_PORT = Stripe::StripeMock.start
# Disable all real network connections except those that are outgoing to
# stripe-mock.
WebMock.disable_net_connect!(allow: "localhost:#{MOCK_PORT}")
# Try one initial test connection to stripe-mock so that if there's a problem
# we can print one error and fail fast so that it's more clear to the user how
# they should fix the problem.
begin
resp = Net::HTTP.get_response(URI("http://localhost:#{MOCK_PORT}/"))
version = resp["Stripe-Mock-Version"]
if version.nil?
abort("Couldn't find `Stripe-Mock-Version` in response from " \
"`localhost:#{MOCK_PORT}`. Is the service running there stripe-mock?")
end
if version != "master" &&
Gem::Version.new(version) < Gem::Version.new(MOCK_MINIMUM_VERSION)
abort("Your version of stripe-mock (#{version}) is too old. The minimum " \
"version to run this test suite is #{MOCK_MINIMUM_VERSION}. Please " \
"see its repository for upgrade instructions.")
end
rescue Errno::ECONNREFUSED
abort("Couldn't reach stripe-mock at `localhost:#{MOCK_PORT}`. Is " \
"it running? Please see README for setup instructions.")
end
Test::Unit.at_exit do
Stripe::StripeMock.stop
end
module Test
module Unit
class TestCase
include Stripe::TestData
include Mocha
WRITE_TIMEOUT_SUPPORTED = Net::HTTP.instance_methods.include?(:write_timeout=)
setup do
Stripe.api_key = "sk_test_123"
Stripe.api_base = "http://localhost:#{MOCK_PORT}"
stub_connect
end
teardown do
Stripe.api_key = nil
end
private def stub_connect
stub_request(:any, /^#{Stripe.connect_base}/).to_return(body: "{}")
end
end
end
end