From 8be3be3e1038c9bfb4df5d8e73b47055cef36b2c Mon Sep 17 00:00:00 2001 From: theworldbright Date: Thu, 6 Aug 2015 15:59:09 +0900 Subject: [PATCH] Refactor authorizations controller destroy action --- .../authorizations_controller.rb | 10 +++++----- .../authorizations_controller_spec.rb | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/openid_connect/authorizations_controller.rb b/app/controllers/api/openid_connect/authorizations_controller.rb index 706062744..25bc0d957 100644 --- a/app/controllers/api/openid_connect/authorizations_controller.rb +++ b/app/controllers/api/openid_connect/authorizations_controller.rb @@ -18,11 +18,11 @@ module Api end def destroy - # TODO: Specs - begin - Api::OpenidConnect::Authorization.find_by(id: params[:id]).destroy - rescue - logger.error "Error while trying revoke inexistant authorization #{params[:id]}" + authorization = Api::OpenidConnect::Authorization.find_by(id: params[:id]) + if authorization + authorization.destroy + else + raise ArgumentError, "Error while trying revoke non-existent authorization with ID #{params[:id]}" end redirect_to user_applications_url end diff --git a/spec/controllers/api/openid_connect/authorizations_controller_spec.rb b/spec/controllers/api/openid_connect/authorizations_controller_spec.rb index d60ec9c1e..fdc69afad 100644 --- a/spec/controllers/api/openid_connect/authorizations_controller_spec.rb +++ b/spec/controllers/api/openid_connect/authorizations_controller_spec.rb @@ -3,6 +3,7 @@ require "spec_helper" describe Api::OpenidConnect::AuthorizationsController, type: :controller do let!(:client) { FactoryGirl.create(:o_auth_application) } let!(:client_with_multiple_redirects) { FactoryGirl.create(:o_auth_application_with_multiple_redirects) } + let!(:auth_with_read) { FactoryGirl.create(:auth_with_read) } before do sign_in :user, alice @@ -218,4 +219,22 @@ describe Api::OpenidConnect::AuthorizationsController, type: :controller do end end end + + describe "#destroy" do + context "with existent authorization" do + before do + delete :destroy, id: auth_with_read.id + end + + it "removes the authorization" do + expect(Api::OpenidConnect::Authorization.find_by(id: auth_with_read.id)).to be_nil + end + end + + context "with non-existent authorization" do + it "raises an error" do + expect{ delete :destroy, id: 123456789 }.to raise_error(ArgumentError) + end + end + end end