travis-api/spec/integration/error_handling_spec.rb
2016-06-19 14:35:54 +02:00

34 lines
909 B
Ruby

require 'sentry-raven'
describe 'Exception', set_app: true do
class FixRaven < Struct.new(:app)
def call(env)
requested_at = env['requested_at']
env['requested_at'] = env['requested_at'].to_s if env.key?('requested_at')
app.call(env)
rescue Exception => e
env['requested_at'] = requested_at
raise e
end
end
class TestError < StandardError
end
before do
set_app Raven::Rack.new(FixRaven.new(app))
Travis.config.sentry.dsn = "test"
Travis::Api::App.setup_monitoring
end
it 'enques error into a thread' do
error = TestError.new('Konstantin broke all the thingz!')
Travis::Api::App::Endpoint::Repos.any_instance.stubs(:service).raises(error)
Raven.expects(:send_event).with do |event|
event.message == "#{error.class}: #{error.message}"
end
expect { get "/repos" }.to raise_error(TestError)
sleep 0.1
end
end