def test_object_list_many(self): """ operation: list assertion: pagination w/max_keys=2, no marker """ keyname1 = keyname.get_unique_key_name() keyname2 = keyname.get_unique_key_name() keyname3 = keyname.get_unique_key_name() keynames = [keyname1, keyname2, keyname3] self._create_keys(keys=keynames) # bucket.list() is high-level and will not let us set max-keys, # using it would require using >1000 keys to test, and that would # be too slow; use the lower-level call bucket.get_all_keys() # instead l = self.bucket.get_all_keys(max_keys=2) eq(len(l), 2) eq(l.is_truncated, True) names = [e.name for e in l] keynames = sorted(keynames) eq(names, keynames[:2]) l = self.bucket.get_all_keys(max_keys=2, marker=names[-1]) eq(len(l), 1) eq(l.is_truncated, False) names = [e.name for e in l] eq(names, keynames[2:])
def test_object_list_delimiter_invalid(self): """ operation: list under delimiter assertion: non-printable, empty, unused delimiter can be specified """ keyname1 = keyname.get_unique_key_name() keyname2 = keyname.get_unique_key_name() keyname3 = keyname.get_unique_key_name() keyname4 = keyname.get_unique_key_name() keynames = [keyname1, keyname2, keyname3, keyname4] self._create_keys(keys=keynames) keynames = sorted(keynames) for _delimiter in ['\x0a', '', '/']: li = self.bucket.list(delimiter=_delimiter) eq(li.delimiter, _delimiter) (keys, prefixes) = _get_keys_prefixes(li) names = [e.name for e in keys] eq(names, keynames) eq(prefixes, [])
def test_bucket_delete_not_empty(self): """ operation: delete a non-empty bucket assertion: fails with 404 error """ bucket = self._create_bucket() # fill up bucket key_name = keyname.get_unique_key_name() key = bucket.new_key(key_name) key.set_contents_from_string(key_name) # try to delete e = _assert_raises(S3ResponseError, bucket.delete) eq(e.status, 409) eq(e.reason, 'Conflict') eq(e.error_code, 'BucketNotEmpty')
def test_object_list_from_distinct_bucket(self): """ operation: list assertion: distinct buckets have different contents """ bucket1 = self._create_bucket() bucket2 = self._create_bucket() name = keyname.get_unique_key_name() key = bucket1.new_key(name) key.set_contents_from_string(name) l = bucket2.list() l = list(l) eq(l, []) for bucket in [bucket1, bucket2]: logger.debug("delete all keys in bucket: %s", bucket.name) utils.delete_keys(bucket, self.target) self.data_conn.delete_bucket(bucket.name)