1
0
Fork 0
mirror of https://github.com/fog/fog-aws.git synced 2022-11-09 13:50:52 -05:00
fog--fog-aws/tests/requests/glacier/tree_hash_tests.rb

63 lines
2.5 KiB
Ruby
Raw Normal View History

2015-01-02 12:34:40 -05:00
Shindo.tests('AWS::Glacier | glacier tree hash calcuation', ['aws']) do
tests('tree_hash(single part < 1MB)') do
returns(OpenSSL::Digest::SHA256.hexdigest('')) { Fog::AWS::Glacier::TreeHash.digest('')}
end
tests('tree_hash(multibyte characters)') do
body = ("\xC2\xA1" * 1024*1024)
body.force_encoding('UTF-8') if body.respond_to? :encoding
expected = OpenSSL::Digest::SHA256.hexdigest(
OpenSSL::Digest::SHA256.digest("\xC2\xA1" * 1024*512) + OpenSSL::Digest::SHA256.digest("\xC2\xA1" * 1024*512)
)
returns(expected) { Fog::AWS::Glacier::TreeHash.digest(body)}
end
tests('tree_hash(power of 2 number of parts)') do
body = ('x' * 1024*1024) + ('y'*1024*1024) + ('z'*1024*1024) + ('t'*1024*1024)
expected = OpenSSL::Digest::SHA256.hexdigest(
OpenSSL::Digest::SHA256.digest(
OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
) +
OpenSSL::Digest::SHA256.digest(
OpenSSL::Digest::SHA256.digest('z' * 1024*1024) + OpenSSL::Digest::SHA256.digest('t' * 1024*1024)
)
)
returns(expected) { Fog::AWS::Glacier::TreeHash.digest(body)}
end
tests('tree_hash(non power of 2 number of parts)') do
body = ('x' * 1024*1024) + ('y'*1024*1024) + ('z'*1024*1024)
expected = OpenSSL::Digest::SHA256.hexdigest(
OpenSSL::Digest::SHA256.digest(
OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
) +
OpenSSL::Digest::SHA256.digest('z' * 1024*1024)
)
returns(expected) { Fog::AWS::Glacier::TreeHash.digest(body)}
end
tests('multipart') do
tree_hash = Fog::AWS::Glacier::TreeHash.new
part = ('x' * 1024*1024) + ('y'*1024*1024)
returns(Fog::AWS::Glacier::TreeHash.digest(part)) { tree_hash.add_part part }
tree_hash.add_part('z'* 1024*1024 + 't'*1024*1024)
expected = OpenSSL::Digest::SHA256.hexdigest(
OpenSSL::Digest::SHA256.digest(
OpenSSL::Digest::SHA256.digest('x' * 1024*1024) + OpenSSL::Digest::SHA256.digest('y' * 1024*1024)
) +
OpenSSL::Digest::SHA256.digest(
OpenSSL::Digest::SHA256.digest('z' * 1024*1024) + OpenSSL::Digest::SHA256.digest('t' * 1024*1024)
)
)
returns(expected) { tree_hash.hexdigest}
end
end