stripe-ruby/test/test_helper.rb
Brandur 27718e0e47 Drop Timecop dependency (#858)
If #857 comes in, it turns out that we don't need Timecop anymore (it
doesn't freeze the monotic clock, so I had to find another way) -- here
we remove all mentions of it and drop the dependency.

I don't find it causes too much trouble so I'm not against bringing it
back in the future if we need it again, but it seems good for project
cleanliness to take it out for now.
2019-10-01 10:10:39 -07:00

76 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.63.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
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