2019-07-30 21:29:24 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-03-25 16:15:39 +00:00
|
|
|
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
2018-03-25 17:30:42 +00:00
|
|
|
require 'rspec'
|
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
describe ChunkedUploader::S3 do
|
|
|
|
context '.upload' do
|
|
|
|
skip 'Only run this if you are okay getting billed on s3' do
|
|
|
|
before(:each) do
|
|
|
|
WebMock.disable!
|
|
|
|
@s3 = AWS::S3.new
|
|
|
|
@bucket = @s3.buckets[ENV['S3_BUCKET_NAME']]
|
|
|
|
@path = 'tmp/export/1000000000.csv'
|
|
|
|
@object = @bucket.objects[@path]
|
|
|
|
end
|
|
|
|
after(:each) do
|
|
|
|
@object.delete
|
|
|
|
WebMock.enable!
|
|
|
|
end
|
|
|
|
it 'uploads empty properly' do
|
|
|
|
ChunkedUploader::S3.upload(@path, [], content_type: 'text/csv')
|
|
|
|
|
|
|
|
info = @object.read.to_s
|
|
|
|
|
|
|
|
expect(info).to eq('')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'uploads very small properly' do
|
|
|
|
input = 'row11,row12\nrow21,row22\n'
|
|
|
|
ChunkedUploader::S3.upload(@path, [input], content_type: 'text/csv')
|
|
|
|
|
|
|
|
info = @object.read.to_s
|
|
|
|
|
|
|
|
expect(info).to eq(input)
|
|
|
|
|
|
|
|
pending('NOTE: METADATA CHECKING ISNT WORKING SO WE SKIP IT FOR NOW')
|
|
|
|
metadata = @object.metadata
|
|
|
|
|
|
|
|
puts metadata
|
|
|
|
expect(metadata['Content-Type']).to eq('text/csv')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'uploads very large single properly' do
|
|
|
|
temp = StringIO.new
|
|
|
|
500_000.times { temp << 'row11,row12\n' }
|
|
|
|
ChunkedUploader::S3.upload(@path, [temp.string])
|
|
|
|
|
|
|
|
info = @object.read.to_s
|
|
|
|
|
|
|
|
expect(info).to eq(temp.string)
|
|
|
|
|
|
|
|
pending('NOTE: METADATA CHECKING ISNT WORKING SO WE SKIP IT FOR NOW')
|
|
|
|
metadata = @object.metadata
|
|
|
|
expect(metadata['Content-Type']).to eq('text/csv')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'uploads properly' do
|
|
|
|
input_item = StringIO.new
|
|
|
|
input = Enumerator.new do |y|
|
|
|
|
temp = StringIO.new
|
|
|
|
300_000.times { temp << 'row11,row12\n' }
|
|
|
|
input_item.write(temp.string)
|
|
|
|
y << temp.string
|
|
|
|
temp = StringIO.new
|
|
|
|
300_000.times { temp << 'row21,row22\n' }
|
|
|
|
input_item.write(temp.string)
|
|
|
|
y << temp.string
|
|
|
|
temp = StringIO.new
|
|
|
|
300_000.times { temp << 'row31,row32\n' }
|
|
|
|
input_item.write(temp.string)
|
|
|
|
y << temp.string
|
|
|
|
end.lazy
|
|
|
|
ChunkedUploader::S3.upload(@path, input, content_type: 'text/csv')
|
|
|
|
|
|
|
|
info = @object.read.to_s
|
|
|
|
|
|
|
|
expect(info).to eq(input_item.string)
|
|
|
|
pending('NOTE: METADATA CHECKING ISNT WORKING SO WE SKIP IT FOR NOW')
|
|
|
|
metadata = @object.metadata
|
|
|
|
expect(metadata['Content-Type']).to eq('text/csv')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|