forked from treehouse/mastodon
Improve spec coverage and clean up api/v1/media controller (#3467)
parent
83435c49ea
commit
8235623362
|
@ -10,11 +10,11 @@ class Api::V1::MediaController < ApiController
|
||||||
respond_to :json
|
respond_to :json
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@media = MediaAttachment.create!(account: current_user.account, file: media_params[:file])
|
@media = current_account.media_attachments.create!(file: media_params[:file])
|
||||||
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
||||||
render json: { error: 'File type of uploaded media could not be verified' }, status: 422
|
render json: file_type_error, status: 422
|
||||||
rescue Paperclip::Error
|
rescue Paperclip::Error
|
||||||
render json: { error: 'Error processing thumbnail for uploaded media' }, status: 500
|
render json: processing_error, status: 500
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -22,4 +22,12 @@ class Api::V1::MediaController < ApiController
|
||||||
def media_params
|
def media_params
|
||||||
params.permit(:file)
|
params.permit(:file)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def file_type_error
|
||||||
|
{ error: 'File type of uploaded media could not be verified' }
|
||||||
|
end
|
||||||
|
|
||||||
|
def processing_error
|
||||||
|
{ error: 'Error processing thumbnail for uploaded media' }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,6 +11,30 @@ RSpec.describe Api::V1::MediaController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'POST #create' do
|
describe 'POST #create' do
|
||||||
|
describe 'with paperclip errors' do
|
||||||
|
context 'when imagemagick cant identify the file type' do
|
||||||
|
before do
|
||||||
|
expect_any_instance_of(Account).to receive_message_chain(:media_attachments, :create!).and_raise(Paperclip::Errors::NotIdentifiedByImageMagickError)
|
||||||
|
post :create, params: { file: fixture_file_upload('files/attachment.jpg', 'image/jpeg') }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns http 422' do
|
||||||
|
expect(response).to have_http_status(:unprocessable_entity)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when there is a generic error' do
|
||||||
|
before do
|
||||||
|
expect_any_instance_of(Account).to receive_message_chain(:media_attachments, :create!).and_raise(Paperclip::Error)
|
||||||
|
post :create, params: { file: fixture_file_upload('files/attachment.jpg', 'image/jpeg') }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns http 422' do
|
||||||
|
expect(response).to have_http_status(:error)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'image/jpeg' do
|
context 'image/jpeg' do
|
||||||
before do
|
before do
|
||||||
post :create, params: { file: fixture_file_upload('files/attachment.jpg', 'image/jpeg') }
|
post :create, params: { file: fixture_file_upload('files/attachment.jpg', 'image/jpeg') }
|
||||||
|
|
Loading…
Reference in New Issue