diff --git a/lib/buttercms-ruby.rb b/lib/buttercms-ruby.rb index b0d634c..e7e7697 100644 --- a/lib/buttercms-ruby.rb +++ b/lib/buttercms-ruby.rb @@ -92,6 +92,8 @@ def self.api_request(path, options = {}) case response when Net::HTTPNotFound raise ::ButterCMS::NotFound, JSON.parse(response.body)["detail"] + when Net::HTTPUnauthorized + raise ::ButterCMS::Unauthorized, JSON.parse(response.body)['detail'] end response.body diff --git a/lib/buttercms/errors.rb b/lib/buttercms/errors.rb index 8e727ee..2a9a3f8 100644 --- a/lib/buttercms/errors.rb +++ b/lib/buttercms/errors.rb @@ -6,6 +6,9 @@ class Error < StandardError # NotFound is raised when a resource cannot be found class NotFound < Error end + + class Unauthorized < Error + end class BadRequest < Error end diff --git a/lib/buttercms/version.rb b/lib/buttercms/version.rb index 2ee9ec9..8eb5605 100644 --- a/lib/buttercms/version.rb +++ b/lib/buttercms/version.rb @@ -1,3 +1,3 @@ module ButterCMS - VERSION = '2.2' + VERSION = '2.3' end diff --git a/spec/lib/butter-ruby_spec.rb b/spec/lib/butter-ruby_spec.rb index 0b4d56b..78f0660 100644 --- a/spec/lib/butter-ruby_spec.rb +++ b/spec/lib/butter-ruby_spec.rb @@ -50,5 +50,18 @@ expect(request).to have_been_made end + + it "raises Unauthorized on 401" do + allow(ButterCMS).to receive(:api_token).and_return("test") + + request = stub_request(:get, %r{/posts/slug/}) + .with(query: { auth_token: "test" }) + .to_return(status: 401, body: '{"detail":"Invalid token."}') + + expect { ButterCMS.request("/posts/slug/") } + .to raise_error(ButterCMS::Unauthorized) + + expect(request).to have_been_made + end end end