def test_buckets(self): self.um.create_user('user1') self.um.create_user('user2') self.um.create_user('admin_user', admin=True) Bucket.create('new_bucket', self.um.get_user('user1')) bucket = Bucket('new_bucket') # creator is authorized to use bucket self.assert_(bucket.is_authorized(self.um.get_user('user1'))) # another user is not authorized self.assert_(bucket.is_authorized(self.um.get_user('user2')) == False) # admin is authorized to use bucket self.assert_(bucket.is_authorized(self.um.get_user('admin_user'))) # new buckets are empty self.assert_(bucket.list_keys()['Contents'] == []) # storing keys works bucket['foo'] = "bar" self.assert_(len(bucket.list_keys()['Contents']) == 1) self.assert_(bucket['foo'].read() == 'bar') # md5 of key works self.assert_(bucket['foo'].md5 == hashlib.md5('bar').hexdigest()) # deleting non-empty bucket throws exception exception = False try: bucket.delete() except: exception = True self.assert_(exception) # deleting key del bucket['foo'] # deleting empty button bucket.delete() # accessing deleted bucket throws exception exception = False try: s3server.Bucket('new_bucket') except: exception = True self.assert_(exception)
def get(self, bucket_name): logging.debug("List keys for bucket %s" % (bucket_name)) bucket = Bucket(bucket_name) if not bucket.is_authorized(self.user): raise web.HTTPError(403) prefix = self.get_argument("prefix", u"") marker = self.get_argument("marker", u"") max_keys = int(self.get_argument("max-keys", 1000)) terse = int(self.get_argument("terse", 0)) results = bucket.list_keys(prefix=prefix, marker=marker, max_keys=max_keys, terse=terse) self.render_xml({"ListBucketResult": results})