diff --git a/spec/bucket_store_integration_spec.rb b/spec/bucket_store_integration_spec.rb index 78d5193..c6b17e7 100644 --- a/spec/bucket_store_integration_spec.rb +++ b/spec/bucket_store_integration_spec.rb @@ -79,9 +79,27 @@ end expect(described_class.for(base_bucket_uri.to_s).list.to_a.size).to eq(0) end + + context "using the streaming interface" do + it "supports large file downloads" do + # Upload a large file + large_file_content = "Z" * 1024 * 1024 * 10 # 10Mb + described_class. + for("#{base_bucket_uri}/large.txt"). + upload!(large_file_content) + + # Streaming downloads should return a chunked response + rebuilt_large_file = + described_class.for("#{base_bucket_uri}/large.txt"). + stream. + download. + map { |_meta, chunk| chunk }. + join + expect(rebuilt_large_file).to eq(large_file_content) + end + end end - # We don't test GCS as there's no sensible way of running a local simulator include_examples "adapter integration", "inmemory://bucket" include_examples "adapter integration", "disk://bucket" include_examples "adapter integration", "s3://bucket"