add several test_object_set_get_metadata_* tests

This commit is contained in:
Stephon Striplin 2011-07-11 12:14:38 -07:00
parent bb3f214369
commit f929069189

View file

@ -17,6 +17,8 @@ from nose.plugins.attrib import attr
from utils import assert_raises from utils import assert_raises
import AnonymousAuth import AnonymousAuth
from email.header import decode_header
NONEXISTENT_EMAIL = 'doesnotexist@dreamhost.com.invalid' NONEXISTENT_EMAIL = 'doesnotexist@dreamhost.com.invalid'
s3 = bunch.Bunch() s3 = bunch.Bunch()
@ -299,25 +301,40 @@ def test_object_write_read_update_read_delete():
key.delete() key.delete()
def test_object_set_get_metadata(): def _set_get_metadata(metadata, bucket=None):
bucket = get_new_bucket() if bucket is None:
bucket = get_new_bucket()
key = boto.s3.key.Key(bucket) key = boto.s3.key.Key(bucket)
key.key = ('foo') key.key = ('foo')
key.set_metadata('meta1', 'mymeta') key.set_metadata('meta1', metadata)
key.set_contents_from_string('bar') key.set_contents_from_string('bar')
key2 = bucket.get_key('foo') key2 = bucket.get_key('foo')
got = key2.get_metadata('meta1') return key2.get_metadata('meta1')
def test_object_set_get_metadata_none_to_good():
got = _set_get_metadata('mymeta')
eq(got, 'mymeta') eq(got, 'mymeta')
def test_object_set_get_metadata_empty(): def test_object_set_get_metadata_none_to_empty():
got = _set_get_metadata('')
eq(got, '')
def test_object_set_get_metadata_overwrite_to_good():
bucket = get_new_bucket() bucket = get_new_bucket()
key = boto.s3.key.Key(bucket) got = _set_get_metadata('oldmeta', bucket)
key.key = ('foo') eq(got, 'oldmeta')
key.set_metadata('meta1', '') got = _set_get_metadata('newmeta', bucket)
key.set_contents_from_string('bar') eq(got, 'newmeta')
key2 = bucket.get_key('foo')
got = key2.get_metadata('meta1')
def test_object_set_get_metadata_overwrite_to_empty():
bucket = get_new_bucket()
got = _set_get_metadata('oldmeta', bucket)
eq(got, 'oldmeta')
got = _set_get_metadata('', bucket)
eq(got, '') eq(got, '')
@ -344,6 +361,63 @@ def test_object_set_get_non_utf8_metadata():
eq(got, '=?UTF-8?Q?=04mymeta?=') eq(got, '=?UTF-8?Q?=04mymeta?=')
def _set_get_metadata_unreadable(metadata, bucket=None):
got = _set_get_metadata(metadata, bucket)
got = decode_header(got)
return got
@attr('fails_on_dho')
def test_object_set_get_metadata_empty_to_unreadable_prefix():
metadata = '\x04w'
got = _set_get_metadata_unreadable(metadata)
eq(got, [(metadata, 'utf-8')])
@attr('fails_on_dho')
def test_object_set_get_metadata_empty_to_unreadable_suffix():
metadata = 'h\x04'
got = _set_get_metadata_unreadable(metadata)
eq(got, [(metadata, 'utf-8')])
@attr('fails_on_dho')
def test_object_set_get_metadata_empty_to_unreadable_infix():
metadata = 'h\x04w'
got = _set_get_metadata_unreadable(metadata)
eq(got, [(metadata, 'utf-8')])
@attr('fails_on_dho')
def test_object_set_get_metadata_overwrite_to_unreadable_prefix():
metadata = '\x04w'
got = _set_get_metadata_unreadable(metadata)
eq(got, [(metadata, 'utf-8')])
metadata2 = '\x05w'
got2 = _set_get_metadata_unreadable(metadata2)
eq(got2, [(metadata2, 'utf-8')])
@attr('fails_on_dho')
def test_object_set_get_metadata_overwrite_to_unreadable_suffix():
metadata = 'h\x04'
got = _set_get_metadata_unreadable(metadata)
eq(got, [(metadata, 'utf-8')])
metadata2 = 'h\x05'
got2 = _set_get_metadata_unreadable(metadata2)
eq(got2, [(metadata2, 'utf-8')])
@attr('fails_on_dho')
def test_object_set_get_metadata_overwrite_to_unreadable_infix():
metadata = 'h\x04w'
got = _set_get_metadata_unreadable(metadata)
eq(got, [(metadata, 'utf-8')])
metadata2 = 'h\x05w'
got2 = _set_get_metadata_unreadable(metadata2)
eq(got2, [(metadata2, 'utf-8')])
def test_object_write_file(): def test_object_write_file():
# boto Key.set_contents_from_file / .send_file uses Expect: # boto Key.set_contents_from_file / .send_file uses Expect:
# 100-Continue, so this test exercises that (though a bit too # 100-Continue, so this test exercises that (though a bit too