1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
PROJECT_ROOT = File.join(File.dirname(__FILE__), '..')
if ENV['COVERAGE']
require 'simplecov'
SimpleCov.start do
add_filter "/spec/"
end
end
require 'puppet_forge'
module StubbingFaraday
def stub_api_for(klass, base_url = "http://api.example.com", lru_cache: false)
unless lru_cache # Disable LRU cache by default
allow(klass).to receive(:lru_cache).and_return(instance_double('PuppetForge::LruCache', get: nil, put: nil, clear: nil))
end
allow(klass).to receive(:conn) do
Faraday.new :url => base_url do |builder|
builder.response(:json, :content_type => /\bjson$/, :parser_options => { :symbolize_names => true })
builder.response(:raise_error)
builder.use(:connection_failure)
builder.adapter(:test) { |s| yield(s) }
end
end
stubs = Faraday::Adapter::Test::Stubs.new
end
def stub_fixture(stubs, method, path)
stubs.send(method, path) do |env|
load_fixture([ env[:url].path, env[:url].query ].compact.join('?'))
end
end
def load_fixture(path)
xplatform_path = path.to_s.gsub('?', '__')
[ 404 ].tap do |response|
local = File.join(PROJECT_ROOT, 'spec', 'fixtures', xplatform_path)
if File.exist?("#{local}.headers") && File.exist?("#{local}.json")
File.open("#{local}.headers") do |file|
response[0] = file.readline[/\d{3}/].to_i
response[1] = headers = {}
file.read.scan(/^([^:]+?):(.*)/) do |key, val|
headers[key] = val.strip
end
end
response << File.read("#{local}.json")
end
end
end
end
RSpec.configure do |config|
config.run_all_when_everything_filtered = true
config.filter_run :focus
config.include StubbingFaraday
# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = 'random'
config.before(:example) do
@old_host = PuppetForge.host
end
config.after(:example) do
PuppetForge.host = @old_host
end
end
|