commit
4aec1d7bfc
6 changed files with 137 additions and 111 deletions
2
Gemfile
2
Gemfile
|
@ -1,6 +1,6 @@
|
||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
gem 'rails', '~> 5.2.0.rc1'
|
gem 'rails', '~> 5.2.0'
|
||||||
|
|
||||||
# Use SCSS for stylesheets
|
# Use SCSS for stylesheets
|
||||||
gem 'sass-rails'
|
gem 'sass-rails'
|
||||||
|
|
130
Gemfile.lock
130
Gemfile.lock
|
@ -29,25 +29,25 @@ GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
CFPropertyList (2.3.6)
|
CFPropertyList (2.3.6)
|
||||||
actioncable (5.2.0.rc1)
|
actioncable (5.2.0)
|
||||||
actionpack (= 5.2.0.rc1)
|
actionpack (= 5.2.0)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
actionmailer (5.2.0.rc1)
|
actionmailer (5.2.0)
|
||||||
actionpack (= 5.2.0.rc1)
|
actionpack (= 5.2.0)
|
||||||
actionview (= 5.2.0.rc1)
|
actionview (= 5.2.0)
|
||||||
activejob (= 5.2.0.rc1)
|
activejob (= 5.2.0)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
actionpack (5.2.0.rc1)
|
actionpack (5.2.0)
|
||||||
actionview (= 5.2.0.rc1)
|
actionview (= 5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||||
actionview (5.2.0.rc1)
|
actionview (5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
|
@ -57,34 +57,34 @@ GEM
|
||||||
activemodel (>= 4.1, < 6)
|
activemodel (>= 4.1, < 6)
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
activejob (5.2.0.rc1)
|
activejob (5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (5.2.0.rc1)
|
activemodel (5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
activemodel-serializers-xml (1.0.2)
|
activemodel-serializers-xml (1.0.2)
|
||||||
activemodel (> 5.x)
|
activemodel (> 5.x)
|
||||||
activesupport (> 5.x)
|
activesupport (> 5.x)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
activerecord (5.2.0.rc1)
|
activerecord (5.2.0)
|
||||||
activemodel (= 5.2.0.rc1)
|
activemodel (= 5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
arel (>= 9.0)
|
arel (>= 9.0)
|
||||||
activestorage (5.2.0.rc1)
|
activestorage (5.2.0)
|
||||||
actionpack (= 5.2.0.rc1)
|
actionpack (= 5.2.0)
|
||||||
activerecord (= 5.2.0.rc1)
|
activerecord (= 5.2.0)
|
||||||
marcel (~> 0.3.1)
|
marcel (~> 0.3.1)
|
||||||
activesupport (5.2.0.rc1)
|
activesupport (5.2.0)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (~> 0.7)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
addressable (2.5.2)
|
addressable (2.5.2)
|
||||||
public_suffix (>= 2.0.2, < 4.0)
|
public_suffix (>= 2.0.2, < 4.0)
|
||||||
administrate (0.9.0)
|
administrate (0.10.0)
|
||||||
actionpack (>= 4.2, < 5.2)
|
actionpack (>= 4.2, < 6.0)
|
||||||
actionview (>= 4.2, < 5.2)
|
actionview (>= 4.2, < 6.0)
|
||||||
activerecord (>= 4.2, < 5.2)
|
activerecord (>= 4.2, < 6.0)
|
||||||
autoprefixer-rails (>= 6.0)
|
autoprefixer-rails (>= 6.0)
|
||||||
datetime_picker_rails (~> 0.0.7)
|
datetime_picker_rails (~> 0.0.7)
|
||||||
jquery-rails (>= 4.0)
|
jquery-rails (>= 4.0)
|
||||||
|
@ -98,7 +98,7 @@ GEM
|
||||||
arel (9.0.0)
|
arel (9.0.0)
|
||||||
ast (2.4.0)
|
ast (2.4.0)
|
||||||
attr_required (1.0.1)
|
attr_required (1.0.1)
|
||||||
autoprefixer-rails (8.0.0)
|
autoprefixer-rails (8.3.0)
|
||||||
execjs
|
execjs
|
||||||
axlsx (2.0.1)
|
axlsx (2.0.1)
|
||||||
htmlentities (~> 4.3.1)
|
htmlentities (~> 4.3.1)
|
||||||
|
@ -155,7 +155,7 @@ GEM
|
||||||
safe_yaml (~> 1.0.0)
|
safe_yaml (~> 1.0.0)
|
||||||
crass (1.0.4)
|
crass (1.0.4)
|
||||||
daemons (1.2.6)
|
daemons (1.2.6)
|
||||||
database_cleaner (1.6.2)
|
database_cleaner (1.7.0)
|
||||||
datetime_picker_rails (0.0.7)
|
datetime_picker_rails (0.0.7)
|
||||||
momentjs-rails (>= 2.8.1)
|
momentjs-rails (>= 2.8.1)
|
||||||
deep_cloneable (2.3.2)
|
deep_cloneable (2.3.2)
|
||||||
|
@ -176,9 +176,9 @@ GEM
|
||||||
diff-lcs (1.3)
|
diff-lcs (1.3)
|
||||||
domain_name (0.5.20170404)
|
domain_name (0.5.20170404)
|
||||||
unf (>= 0.0.5, < 1.0.0)
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
dotenv (2.2.2)
|
dotenv (2.3.0)
|
||||||
dotenv-rails (2.2.2)
|
dotenv-rails (2.3.0)
|
||||||
dotenv (= 2.2.2)
|
dotenv (= 2.3.0)
|
||||||
railties (>= 3.2, < 6.0)
|
railties (>= 3.2, < 6.0)
|
||||||
draper (3.0.1)
|
draper (3.0.1)
|
||||||
actionpack (~> 5.0)
|
actionpack (~> 5.0)
|
||||||
|
@ -189,7 +189,7 @@ GEM
|
||||||
em-websocket (0.5.1)
|
em-websocket (0.5.1)
|
||||||
eventmachine (>= 0.12.9)
|
eventmachine (>= 0.12.9)
|
||||||
http_parser.rb (~> 0.6.0)
|
http_parser.rb (~> 0.6.0)
|
||||||
erubi (1.7.0)
|
erubi (1.7.1)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
ethon (0.11.0)
|
ethon (0.11.0)
|
||||||
ffi (>= 1.3.0)
|
ffi (>= 1.3.0)
|
||||||
|
@ -409,11 +409,11 @@ GEM
|
||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
httpclient (2.8.3)
|
httpclient (2.8.3)
|
||||||
i18n (0.9.5)
|
i18n (1.0.1)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
inflecto (0.0.2)
|
inflecto (0.0.2)
|
||||||
ipaddress (0.8.3)
|
ipaddress (0.8.3)
|
||||||
jquery-rails (4.3.1)
|
jquery-rails (4.3.3)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
railties (>= 4.2.0)
|
railties (>= 4.2.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
|
@ -465,7 +465,7 @@ GEM
|
||||||
activesupport (>= 3.1.0)
|
activesupport (>= 3.1.0)
|
||||||
rack (>= 1.4.0)
|
rack (>= 1.4.0)
|
||||||
rest-client
|
rest-client
|
||||||
marcel (0.3.1)
|
marcel (0.3.2)
|
||||||
mimemagic (~> 0.3.2)
|
mimemagic (~> 0.3.2)
|
||||||
maruku (0.7.3)
|
maruku (0.7.3)
|
||||||
method_source (0.9.0)
|
method_source (0.9.0)
|
||||||
|
@ -476,7 +476,7 @@ GEM
|
||||||
mini_mime (1.0.0)
|
mini_mime (1.0.0)
|
||||||
mini_portile2 (2.3.0)
|
mini_portile2 (2.3.0)
|
||||||
minitest (5.11.3)
|
minitest (5.11.3)
|
||||||
momentjs-rails (2.17.1)
|
momentjs-rails (2.20.1)
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
multi_json (1.13.1)
|
multi_json (1.13.1)
|
||||||
multi_xml (0.6.0)
|
multi_xml (0.6.0)
|
||||||
|
@ -484,7 +484,7 @@ GEM
|
||||||
mustermann (1.0.2)
|
mustermann (1.0.2)
|
||||||
nenv (0.3.0)
|
nenv (0.3.0)
|
||||||
netrc (0.11.0)
|
netrc (0.11.0)
|
||||||
nio4r (2.2.0)
|
nio4r (2.3.0)
|
||||||
nokogiri (1.8.2)
|
nokogiri (1.8.2)
|
||||||
mini_portile2 (~> 2.3.0)
|
mini_portile2 (~> 2.3.0)
|
||||||
notiffany (0.1.1)
|
notiffany (0.1.1)
|
||||||
|
@ -551,20 +551,20 @@ GEM
|
||||||
rack
|
rack
|
||||||
rack-protection (2.0.1)
|
rack-protection (2.0.1)
|
||||||
rack
|
rack
|
||||||
rack-test (0.8.2)
|
rack-test (1.0.0)
|
||||||
rack (>= 1.0, < 3)
|
rack (>= 1.0, < 3)
|
||||||
rails (5.2.0.rc1)
|
rails (5.2.0)
|
||||||
actioncable (= 5.2.0.rc1)
|
actioncable (= 5.2.0)
|
||||||
actionmailer (= 5.2.0.rc1)
|
actionmailer (= 5.2.0)
|
||||||
actionpack (= 5.2.0.rc1)
|
actionpack (= 5.2.0)
|
||||||
actionview (= 5.2.0.rc1)
|
actionview (= 5.2.0)
|
||||||
activejob (= 5.2.0.rc1)
|
activejob (= 5.2.0)
|
||||||
activemodel (= 5.2.0.rc1)
|
activemodel (= 5.2.0)
|
||||||
activerecord (= 5.2.0.rc1)
|
activerecord (= 5.2.0)
|
||||||
activestorage (= 5.2.0.rc1)
|
activestorage (= 5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
bundler (>= 1.3.0)
|
bundler (>= 1.3.0)
|
||||||
railties (= 5.2.0.rc1)
|
railties (= 5.2.0)
|
||||||
sprockets-rails (>= 2.0.0)
|
sprockets-rails (>= 2.0.0)
|
||||||
rails-controller-testing (1.0.2)
|
rails-controller-testing (1.0.2)
|
||||||
actionpack (~> 5.x, >= 5.0.1)
|
actionpack (~> 5.x, >= 5.0.1)
|
||||||
|
@ -575,16 +575,16 @@ GEM
|
||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
rails-html-sanitizer (1.0.4)
|
rails-html-sanitizer (1.0.4)
|
||||||
loofah (~> 2.2, >= 2.2.2)
|
loofah (~> 2.2, >= 2.2.2)
|
||||||
railties (5.2.0.rc1)
|
railties (5.2.0)
|
||||||
actionpack (= 5.2.0.rc1)
|
actionpack (= 5.2.0)
|
||||||
activesupport (= 5.2.0.rc1)
|
activesupport (= 5.2.0)
|
||||||
method_source
|
method_source
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
rainbow (3.0.0)
|
rainbow (3.0.0)
|
||||||
raindrops (0.19.0)
|
raindrops (0.19.0)
|
||||||
rake (12.3.0)
|
rake (12.3.1)
|
||||||
rb-fsevent (0.10.2)
|
rb-fsevent (0.10.3)
|
||||||
rb-inotify (0.9.10)
|
rb-inotify (0.9.10)
|
||||||
ffi (>= 0.5.0, < 2)
|
ffi (>= 0.5.0, < 2)
|
||||||
rbnacl (5.0.0)
|
rbnacl (5.0.0)
|
||||||
|
@ -600,7 +600,7 @@ GEM
|
||||||
nokogiri (~> 1.5)
|
nokogiri (~> 1.5)
|
||||||
trollop (~> 2.1)
|
trollop (~> 2.1)
|
||||||
ref (2.0.0)
|
ref (2.0.0)
|
||||||
request_store (1.4.0)
|
request_store (1.4.1)
|
||||||
rack (>= 1.4)
|
rack (>= 1.4)
|
||||||
responders (2.4.0)
|
responders (2.4.0)
|
||||||
actionpack (>= 4.2.0, < 5.3)
|
actionpack (>= 4.2.0, < 5.3)
|
||||||
|
@ -650,12 +650,12 @@ GEM
|
||||||
rubocop (>= 0.51)
|
rubocop (>= 0.51)
|
||||||
ruby-progressbar (1.9.0)
|
ruby-progressbar (1.9.0)
|
||||||
ruby_dep (1.5.0)
|
ruby_dep (1.5.0)
|
||||||
ruby_parser (3.10.1)
|
ruby_parser (3.11.0)
|
||||||
sexp_processor (~> 4.9)
|
sexp_processor (~> 4.9)
|
||||||
rubyzip (1.0.0)
|
rubyzip (1.0.0)
|
||||||
safe_yaml (1.0.4)
|
safe_yaml (1.0.4)
|
||||||
sanitize-url (0.1.4)
|
sanitize-url (0.1.4)
|
||||||
sass (3.5.5)
|
sass (3.5.6)
|
||||||
sass-listen (~> 4.0.0)
|
sass-listen (~> 4.0.0)
|
||||||
sass-listen (4.0.0)
|
sass-listen (4.0.0)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
|
@ -681,13 +681,13 @@ GEM
|
||||||
rubyzip (~> 1.0)
|
rubyzip (~> 1.0)
|
||||||
sentry-raven (2.7.2)
|
sentry-raven (2.7.2)
|
||||||
faraday (>= 0.7.6, < 1.0)
|
faraday (>= 0.7.6, < 1.0)
|
||||||
sexp_processor (4.10.1)
|
sexp_processor (4.11.0)
|
||||||
shellany (0.0.1)
|
shellany (0.0.1)
|
||||||
shoulda-matchers (3.1.2)
|
shoulda-matchers (3.1.2)
|
||||||
activesupport (>= 4.0.0)
|
activesupport (>= 4.0.0)
|
||||||
simple_form (3.5.1)
|
simple_form (4.0.0)
|
||||||
actionpack (> 4, < 5.2)
|
actionpack (> 4)
|
||||||
activemodel (> 4, < 5.2)
|
activemodel (> 4)
|
||||||
sinatra (2.0.1)
|
sinatra (2.0.1)
|
||||||
mustermann (~> 1.0)
|
mustermann (~> 1.0)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0)
|
||||||
|
@ -736,7 +736,7 @@ GEM
|
||||||
ethon (>= 0.9.0)
|
ethon (>= 0.9.0)
|
||||||
tzinfo (1.2.5)
|
tzinfo (1.2.5)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
uglifier (4.1.9)
|
uglifier (4.1.10)
|
||||||
execjs (>= 0.3.0, < 3)
|
execjs (>= 0.3.0, < 3)
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
|
@ -754,7 +754,7 @@ GEM
|
||||||
activemodel (>= 3.0.0)
|
activemodel (>= 3.0.0)
|
||||||
addressable
|
addressable
|
||||||
vcr (4.0.0)
|
vcr (4.0.0)
|
||||||
web-console (3.6.0)
|
web-console (3.6.1)
|
||||||
actionview (>= 5.0)
|
actionview (>= 5.0)
|
||||||
activemodel (>= 5.0)
|
activemodel (>= 5.0)
|
||||||
bindex (>= 0.4.0)
|
bindex (>= 0.4.0)
|
||||||
|
@ -834,7 +834,7 @@ DEPENDENCIES
|
||||||
pry-byebug
|
pry-byebug
|
||||||
rack-handlers
|
rack-handlers
|
||||||
rack-mini-profiler
|
rack-mini-profiler
|
||||||
rails (~> 5.2.0.rc1)
|
rails (~> 5.2.0)
|
||||||
rails-controller-testing
|
rails-controller-testing
|
||||||
rbnacl-libsodium
|
rbnacl-libsodium
|
||||||
rest-client
|
rest-client
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
# Monkey patch ActiveStorage to make Range query compatible with CleverCloud Cellar
|
|
||||||
#
|
|
||||||
# FIXME : remove when better fix is available
|
|
||||||
ActiveStorage::Identification.class_eval do
|
|
||||||
private
|
|
||||||
|
|
||||||
def identifiable_chunk
|
|
||||||
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |client|
|
|
||||||
client.get(uri, "Range" => "bytes=0-4096").body
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -22,6 +22,12 @@ module ActiveStorage
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def download_chunk(key, range)
|
||||||
|
instrument :download_chunk, key: key, range: range do
|
||||||
|
@adapter.session { |s| s.download(key, range: range) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def delete(key)
|
def delete(key)
|
||||||
instrument :delete, key: key do
|
instrument :delete, key: key do
|
||||||
@adapter.session { |s| s.delete(key) }
|
@adapter.session { |s| s.delete(key) }
|
||||||
|
|
|
@ -47,8 +47,11 @@ module Cellar
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def download(key)
|
def download(key, range: nil)
|
||||||
request = Net::HTTP::Get.new("/#{key}")
|
request = Net::HTTP::Get.new("/#{key}")
|
||||||
|
if range.present?
|
||||||
|
add_range_header(request, range)
|
||||||
|
end
|
||||||
@signer.sign(request, key)
|
@signer.sign(request, key)
|
||||||
if block_given?
|
if block_given?
|
||||||
@http.request(request) do |response|
|
@http.request(request) do |response|
|
||||||
|
@ -106,6 +109,12 @@ module Cellar
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def add_range_header(request, range)
|
||||||
|
bytes_end = range.exclude_end? ? range.end - 1 : range.end
|
||||||
|
|
||||||
|
request['range'] = "bytes=#{range.begin}-#{bytes_end}"
|
||||||
|
end
|
||||||
|
|
||||||
def parse_bucket_listing(bucket_listing_xml)
|
def parse_bucket_listing(bucket_listing_xml)
|
||||||
doc = Nokogiri::XML(bucket_listing_xml)
|
doc = Nokogiri::XML(bucket_listing_xml)
|
||||||
doc
|
doc
|
||||||
|
|
|
@ -4,9 +4,30 @@ describe 'CellarAdapter' do
|
||||||
before { Timecop.freeze(Time.gm(2016, 10, 2)) }
|
before { Timecop.freeze(Time.gm(2016, 10, 2)) }
|
||||||
after { Timecop.return }
|
after { Timecop.return }
|
||||||
|
|
||||||
|
describe 'add_range_header' do
|
||||||
|
let(:request) { Net::HTTP::Get.new('/whatever') }
|
||||||
|
|
||||||
|
before { session.send(:add_range_header, request, range) }
|
||||||
|
|
||||||
|
subject { request['range'] }
|
||||||
|
|
||||||
|
context 'with end included' do
|
||||||
|
let(:range) { 100..500 }
|
||||||
|
|
||||||
|
it { is_expected.to eq('bytes=100-500') }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with end excluded' do
|
||||||
|
let(:range) { 10...50 }
|
||||||
|
|
||||||
|
it { is_expected.to eq('bytes=10-49') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'parse_bucket_listing' do
|
describe 'parse_bucket_listing' do
|
||||||
let(:response) do
|
let(:response) do
|
||||||
'<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
<<~EOS
|
||||||
|
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
||||||
<Name>example-bucket</Name>
|
<Name>example-bucket</Name>
|
||||||
<Prefix></Prefix>
|
<Prefix></Prefix>
|
||||||
<KeyCount>2</KeyCount>
|
<KeyCount>2</KeyCount>
|
||||||
|
@ -28,6 +49,7 @@ describe 'CellarAdapter' do
|
||||||
<StorageClass>STANDARD</StorageClass>
|
<StorageClass>STANDARD</StorageClass>
|
||||||
</Contents>
|
</Contents>
|
||||||
</ListBucketResult>'
|
</ListBucketResult>'
|
||||||
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { session.send(:parse_bucket_listing, response) }
|
subject { session.send(:parse_bucket_listing, response) }
|
||||||
|
@ -37,16 +59,17 @@ describe 'CellarAdapter' do
|
||||||
|
|
||||||
describe 'bulk_deletion_request_body' do
|
describe 'bulk_deletion_request_body' do
|
||||||
let(:expected_response) do
|
let(:expected_response) do
|
||||||
'<?xml version="1.0" encoding="UTF-8"?>
|
<<~EOS
|
||||||
<Delete>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Delete>
|
||||||
<Object>
|
<Object>
|
||||||
<Key>chapi</Key>
|
<Key>chapi</Key>
|
||||||
</Object>
|
</Object>
|
||||||
<Object>
|
<Object>
|
||||||
<Key>chapo</Key>
|
<Key>chapo</Key>
|
||||||
</Object>
|
</Object>
|
||||||
</Delete>
|
</Delete>
|
||||||
'
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { session.send(:bulk_deletion_request_body, ['chapi', 'chapo']) }
|
subject { session.send(:bulk_deletion_request_body, ['chapi', 'chapo']) }
|
||||||
|
|
Loading…
Add table
Reference in a new issue