@@ -536,6 +536,22 @@ def test_ctor(self):
536536 self .assertFalse (acl .loaded )
537537 self .assertTrue (acl .bucket is bucket )
538538
539+ def test_reload_eager_missing (self ):
540+ # https://github.com/GoogleCloudPlatform/gcloud-python/issues/652
541+ NAME = 'name'
542+ ROLE = 'role'
543+ connection = _Connection ({})
544+ bucket = _Bucket (connection , NAME )
545+ acl = self ._makeOne (bucket )
546+ acl .loaded = True
547+ acl .entity ('allUsers' , ROLE )
548+ self .assertTrue (acl .reload () is acl )
549+ self .assertEqual (list (acl ), [])
550+ kw = connection ._requested
551+ self .assertEqual (len (kw ), 1 )
552+ self .assertEqual (kw [0 ]['method' ], 'GET' )
553+ self .assertEqual (kw [0 ]['path' ], '/b/%s/acl' % NAME )
554+
539555 def test_reload_eager_empty (self ):
540556 NAME = 'name'
541557 ROLE = 'role'
@@ -589,6 +605,21 @@ def test_save_none_set_none_passed(self):
589605 kw = connection ._requested
590606 self .assertEqual (len (kw ), 0 )
591607
608+ def test_save_existing_missing_none_passed (self ):
609+ NAME = 'name'
610+ connection = _Connection ({})
611+ bucket = _Bucket (connection , NAME )
612+ acl = self ._makeOne (bucket )
613+ acl .loaded = True
614+ self .assertTrue (acl .save () is acl )
615+ self .assertEqual (list (acl ), [])
616+ kw = connection ._requested
617+ self .assertEqual (len (kw ), 1 )
618+ self .assertEqual (kw [0 ]['method' ], 'PATCH' )
619+ self .assertEqual (kw [0 ]['path' ], '/b/%s' % NAME )
620+ self .assertEqual (kw [0 ]['data' ], {'acl' : []})
621+ self .assertEqual (kw [0 ]['query_params' ], {'projection' : 'full' })
622+
592623 def test_save_no_arg (self ):
593624 NAME = 'name'
594625 ROLE = 'role'
@@ -665,24 +696,22 @@ def test_ctor(self):
665696 self .assertFalse (acl .loaded )
666697 self .assertTrue (acl .blob is blob )
667698
668- def test_reload_eager_empty (self ):
699+ def test_reload_eager_missing (self ):
700+ # https://github.com/GoogleCloudPlatform/gcloud-python/issues/652
669701 NAME = 'name'
670702 BLOB_NAME = 'blob-name'
671703 ROLE = 'role'
672- after = {'items' : [{ 'entity' : 'allUsers' , 'role' : ROLE }] }
704+ after = {}
673705 connection = _Connection (after )
674706 bucket = _Bucket (connection , NAME )
675707 blob = _Blob (bucket , BLOB_NAME )
676708 acl = self ._makeOne (blob )
677709 acl .loaded = True
710+ acl .entity ('allUsers' , ROLE )
678711 self .assertTrue (acl .reload () is acl )
679- self .assertEqual (list (acl ), after ['items' ])
680- kw = connection ._requested
681- self .assertEqual (len (kw ), 1 )
682- self .assertEqual (kw [0 ]['method' ], 'GET' )
683- self .assertEqual (kw [0 ]['path' ], '/b/name/o/%s/acl' % BLOB_NAME )
712+ self .assertEqual (list (acl ), [])
684713
685- def test_reload_eager_nonempty (self ):
714+ def test_reload_eager_empty (self ):
686715 NAME = 'name'
687716 BLOB_NAME = 'blob-name'
688717 ROLE = 'role'
@@ -696,6 +725,23 @@ def test_reload_eager_nonempty(self):
696725 self .assertTrue (acl .reload () is acl )
697726 self .assertEqual (list (acl ), [])
698727
728+ def test_reload_eager_nonempty (self ):
729+ NAME = 'name'
730+ BLOB_NAME = 'blob-name'
731+ ROLE = 'role'
732+ after = {'items' : [{'entity' : 'allUsers' , 'role' : ROLE }]}
733+ connection = _Connection (after )
734+ bucket = _Bucket (connection , NAME )
735+ blob = _Blob (bucket , BLOB_NAME )
736+ acl = self ._makeOne (blob )
737+ acl .loaded = True
738+ self .assertTrue (acl .reload () is acl )
739+ self .assertEqual (list (acl ), after ['items' ])
740+ kw = connection ._requested
741+ self .assertEqual (len (kw ), 1 )
742+ self .assertEqual (kw [0 ]['method' ], 'GET' )
743+ self .assertEqual (kw [0 ]['path' ], '/b/name/o/%s/acl' % BLOB_NAME )
744+
699745 def test_reload_lazy (self ):
700746 NAME = 'name'
701747 BLOB_NAME = 'blob-name'
@@ -724,6 +770,23 @@ def test_save_none_set_none_passed(self):
724770 kw = connection ._requested
725771 self .assertEqual (len (kw ), 0 )
726772
773+ def test_save_existing_missing_none_passed (self ):
774+ # https://github.com/GoogleCloudPlatform/gcloud-python/issues/652
775+ NAME = 'name'
776+ BLOB_NAME = 'blob-name'
777+ connection = _Connection ({'foo' : 'Foo' })
778+ bucket = _Bucket (connection , NAME )
779+ blob = _Blob (bucket , BLOB_NAME )
780+ acl = self ._makeOne (blob )
781+ acl .loaded = True
782+ self .assertTrue (acl .save () is acl )
783+ kw = connection ._requested
784+ self .assertEqual (len (kw ), 1 )
785+ self .assertEqual (kw [0 ]['method' ], 'PATCH' )
786+ self .assertEqual (kw [0 ]['path' ], '/b/name/o/%s' % BLOB_NAME )
787+ self .assertEqual (kw [0 ]['data' ], {'acl' : []})
788+ self .assertEqual (kw [0 ]['query_params' ], {'projection' : 'full' })
789+
727790 def test_save_existing_set_none_passed (self ):
728791 NAME = 'name'
729792 BLOB_NAME = 'blob-name'
0 commit comments