From 35651e9810156592563bfe1f3fbc97c35e9bbf2b Mon Sep 17 00:00:00 2001 From: Marco Colli Date: Fri, 4 Jan 2019 16:44:43 +0100 Subject: [PATCH] Raise Webpush::Unauthorized on HTTP 403 --- lib/webpush/request.rb | 2 +- spec/webpush_spec.rb | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/webpush/request.rb b/lib/webpush/request.rb index fc9aea5..f83103f 100644 --- a/lib/webpush/request.rb +++ b/lib/webpush/request.rb @@ -30,7 +30,7 @@ def perform raise ExpiredSubscription.new(resp, uri.host) elsif resp.is_a?(Net::HTTPNotFound) # 404 raise InvalidSubscription.new(resp, uri.host) - elsif resp.is_a?(Net::HTTPUnauthorized) || # 401, Mozilla autopush + elsif resp.is_a?(Net::HTTPUnauthorized) || resp.is_a?(Net::HTTPForbidden) || # 401, 403 resp.is_a?(Net::HTTPBadRequest) && resp.message == "UnauthorizedRegistration" # 400, Google FCM raise Unauthorized.new(resp, uri.host) elsif resp.is_a?(Net::HTTPRequestEntityTooLarge) # 413 diff --git a/spec/webpush_spec.rb b/spec/webpush_spec.rb index e250539..2330bf7 100644 --- a/spec/webpush_spec.rb +++ b/spec/webpush_spec.rb @@ -18,11 +18,15 @@ expect { subject }.to raise_error(Webpush::ExpiredSubscription) end - it 'raises Unauthorized if the API returns a 401 Error or 400 with specific message' do + it 'raises Unauthorized if the API returns a 401 Error, a 403 Error or 400 with specific message' do stub_request(:post, expected_endpoint). to_return(status: 401, body: "", headers: {}) expect { subject }.to raise_error(Webpush::Unauthorized) + stub_request(:post, expected_endpoint). + to_return(status: 403, body: "", headers: {}) + expect { subject }.to raise_error(Webpush::Unauthorized) + stub_request(:post, expected_endpoint). to_return(status: [400, "UnauthorizedRegistration"], body: "", headers: {}) expect { subject }.to raise_error(Webpush::Unauthorized)