@@ -244,26 +244,44 @@ def _callFUT(self, bytes_to_sign):
244244 return _base64_md5hash (bytes_to_sign )
245245
246246 def test_it (self ):
247+ from io import BytesIO
247248 BYTES_TO_SIGN = b'FOO'
248- SIGNED_CONTENT = self ._callFUT (BYTES_TO_SIGN )
249+ BUFFER = BytesIO ()
250+ BUFFER .write (BYTES_TO_SIGN )
251+ BUFFER .seek (0 )
252+
253+ SIGNED_CONTENT = self ._callFUT (BUFFER )
249254 self .assertEqual (SIGNED_CONTENT , b'kBiQqOnIz21aGlQrIp/r/w==' )
250255
251256 def test_it_with_stubs (self ):
252257 from gcloud ._testing import _Monkey
253258 from gcloud .storage import _helpers as MUT
254259
260+ class _Buffer (object ):
261+
262+ def __init__ (self , return_vals ):
263+ self .return_vals = return_vals
264+ self ._block_sizes = []
265+
266+ def read (self , block_size ):
267+ self ._block_sizes .append (block_size )
268+ return self .return_vals .pop ()
269+
255270 BASE64 = _Base64 ()
256271 DIGEST_VAL = object ()
257- BYTES_TO_SIGN = object ()
272+ BYTES_TO_SIGN = b'BYTES_TO_SIGN'
273+ BUFFER = _Buffer ([b'' , BYTES_TO_SIGN ])
258274 MD5 = _MD5 (DIGEST_VAL )
259275
260276 with _Monkey (MUT , base64 = BASE64 , MD5 = MD5 ):
261- SIGNED_CONTENT = self ._callFUT (BYTES_TO_SIGN )
277+ SIGNED_CONTENT = self ._callFUT (BUFFER )
262278
279+ self .assertEqual (BUFFER ._block_sizes , [8192 , 8192 ])
263280 self .assertTrue (SIGNED_CONTENT is DIGEST_VAL )
264281 self .assertEqual (BASE64 ._called_b64encode , [DIGEST_VAL ])
265- self .assertEqual (MD5 ._new_called , [BYTES_TO_SIGN ])
282+ self .assertEqual (MD5 ._new_called , [None ])
266283 self .assertEqual (MD5 .hash_obj .num_digest_calls , 1 )
284+ self .assertEqual (MD5 .hash_obj ._blocks , [BYTES_TO_SIGN ])
267285
268286
269287class _Connection (object ):
@@ -283,11 +301,16 @@ class _MD5Hash(object):
283301 def __init__ (self , digest_val ):
284302 self .digest_val = digest_val
285303 self .num_digest_calls = 0
304+ self ._blocks = []
305+
306+ def update (self , block ):
307+ self ._blocks .append (block )
286308
287309 def digest (self ):
288310 self .num_digest_calls += 1
289311 return self .digest_val
290312
313+
291314class _MD5 (object ):
292315
293316 def __init__ (self , digest_val ):
0 commit comments