diff --git a/lib/yammer/http_adapter.rb b/lib/yammer/http_adapter.rb index 02abf8f..0c00ce1 100644 --- a/lib/yammer/http_adapter.rb +++ b/lib/yammer/http_adapter.rb @@ -84,7 +84,7 @@ def send_request(method, path, opts={}) result = Yammer::ApiResponse.new(resp.headers, resp.body, resp.code) rescue => e if e.is_a?(RestClient::ExceptionWithResponse) - e.response + Yammer::Error.from_status(e.http_code) else raise e end diff --git a/spec/http_adapter_spec.rb b/spec/http_adapter_spec.rb index 8d44e43..04e37f6 100644 --- a/spec/http_adapter_spec.rb +++ b/spec/http_adapter_spec.rb @@ -28,7 +28,39 @@ end end - context "initialization" do + describe "#send_request" do + context 'when resource is found' do + subject { @conn = Yammer::HttpAdapter.new('https://www.yammer.com') } + let(:uri) { 'https://www.yammer.com/foo' } + before { stub_request(:get, uri).to_return(status: 200, body: nil) } + it "returns a Yammer APIResponse" do + response = subject.send_request(:get, "/foo") + expect(response).to be_a(Yammer::ApiResponse) + end + end + + context 'when resource is not found' do + subject { @conn = Yammer::HttpAdapter.new('https://www.yammer.com') } + let(:uri) { 'https://www.yammer.com/foo' } + before { stub_request(:get, uri).to_return(status: 404, body: nil) } + it "returns a Yammer APIResponse" do + response = subject.send_request(:get, "/foo") + expect(response).to eq(Yammer::Error::NotFound) + end + end + + context 'when resource is unauthorized' do + subject { @conn = Yammer::HttpAdapter.new('https://www.yammer.com') } + let(:uri) { 'https://www.yammer.com/foo' } + before { stub_request(:get, uri).to_return(status: 401, body: nil) } + it "returns a Yammer APIResponse" do + response = subject.send_request(:get, "/foo") + expect(response).to eq(Yammer::Error::Unauthorized ) + end + end + end + + context "initialization" do context "with user options" do before do @@ -106,4 +138,4 @@ end end end -end \ No newline at end of file +end