Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class App < Sinatra::Base
doc_key = DocKey.new app,doc_id
doc = Document.load( @storage_dir, doc_key )
raise InvalidParameter.new :file unless params[:file]
raise EmptyFile if params[:file][:tempfile].size == 0
version = doc.new_version do |version|
doc.add_file version, filename, params[:file][:tempfile], params[:author]
doc.set_current version
Expand Down
3 changes: 3 additions & 0 deletions lib/errors.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ def initialize http_code, message
class InvalidParameter < Error
def initialize param=nil; super 400, "Invalid parameter #{param}"; end
end
class EmptyFile < Error
def initialize; super 400, 'Uploaded file is empty'; end
end
class DocumentExists < Error
def initialize; super 409, 'A document with this doc_id already exists'; end
end
Expand Down
Empty file added spec/fixtures/empty_file.txt
Empty file.
15 changes: 15 additions & 0 deletions spec/lib/app_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,21 @@ def show_backtrace response
expect(JSON.parse(last_response.body)).to be_a Hash
expect(Colore::Sidekiq::ConversionWorker).to_not have_received(:perform_async)
end

context 'when uploaded file is empty' do
it 'does not create the document' do
put "/document/#{appname}/#{new_doc_id}/#{filename}", {
title: 'A title',
file: Rack::Test::UploadedFile.new(fixture('empty_file.txt'), 'text/plain'),
backtrace: true
}
show_backtrace last_response
expect(last_response.status).to eq 400
expect(JSON.parse(last_response.body)).to match(
{"status"=>400, "description"=>"Uploaded file is empty"}
)
end
end
end

context 'POST update document' do
Expand Down