require_relative './test_config' class TestApp < Sinatra::Base get '/test/system_error' do fail P4Error.new(1234, P4::E_FATAL, 'severe problem') end get '/test/user_error' do fail P4Error.new(1234, P4::E_FAILED, 'test error') end end describe 'HelixWebServices' do include Rack::Test::Methods def app HelixWebServices::Master.register_app(TestApp) HelixWebServices::Master end it 'should return a 500 status with a system error' do authorize 'jdoe', ticket_for_jdoe get '/test/system_error' expect(last_response.status).to eq(500) end it 'should return a 400 status with a user error' do authorize 'jdoe', ticket_for_jdoe get '/test/user_error' expect(last_response.status).to eq(400) end it 'should not allow "rsh:" in P4PORT' do # Whatever we do during setup of the cloud tests triggers our error handlers skip('cloud mode triggers error handling') if Cloud::Settings.cloud_enabled? authorize 'jdoe', ticket_for_jdoe header 'X-Perforce-Helix-Web-Services-P4PORT', 'rsh://examplehingy' expect { get '/p4/v78/files' }.to raise_error(P4Error) end end