commit: cf32f7da5c5af7c86af3cab89d18cdbe7b35f4a2
parent: 2bb393684baf5da1112923db7bcda920d606be78
Author: abcang <abcang1015@gmail.com>
Date: Thu, 8 Feb 2018 13:00:45 +0900
Fix response of signature_verification_failure_reason (#6441)
Diffstat:
3 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/app/controllers/activitypub/inboxes_controller.rb b/app/controllers/activitypub/inboxes_controller.rb
@@ -11,7 +11,7 @@ class ActivityPub::InboxesController < Api::BaseController
process_payload
head 202
else
- [signature_verification_failure_reason, 401]
+ render plain: signature_verification_failure_reason, status: 401
end
end
diff --git a/app/controllers/api/salmon_controller.rb b/app/controllers/api/salmon_controller.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class Api::SalmonController < Api::BaseController
+ include SignatureVerification
+
before_action :set_account
respond_to :txt
@@ -9,7 +11,7 @@ class Api::SalmonController < Api::BaseController
process_salmon
head 202
elsif payload.present?
- [signature_verification_failure_reason, 401]
+ render plain: signature_verification_failure_reason, status: 401
else
head 400
end
diff --git a/spec/controllers/api/salmon_controller_spec.rb b/spec/controllers/api/salmon_controller_spec.rb
@@ -40,7 +40,7 @@ RSpec.describe Api::SalmonController, type: :controller do
end
end
- context 'with invalid post data' do
+ context 'with empty post data' do
before do
request.env['RAW_POST_DATA'] = ''
post :update, params: { id: account.id }
@@ -50,5 +50,19 @@ RSpec.describe Api::SalmonController, type: :controller do
expect(response).to have_http_status(400)
end
end
+
+ context 'with invalid post data' do
+ before do
+ service = double(call: false)
+ allow(VerifySalmonService).to receive(:new).and_return(service)
+
+ request.env['RAW_POST_DATA'] = File.read(File.join(Rails.root, 'spec', 'fixtures', 'salmon', 'mention.xml'))
+ post :update, params: { id: account.id }
+ end
+
+ it 'returns http client error' do
+ expect(response).to have_http_status(401)
+ end
+ end
end
end