From 019dd9501a31b9ae0509e3d060e21f8f3e70952c Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Mon, 12 Oct 2015 15:03:24 -0700 Subject: [PATCH] Anonymously list private and public-read buckets Signed-off-by: Andrew Gaul --- s3tests/functional/test_s3.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index 374ca5c..406e9f9 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -742,6 +742,41 @@ def test_bucket_list_object_time(): _compare_dates(iso_datetime, http_datetime) +@attr(resource='bucket') +@attr(method='get') +@attr(operation='list all objects (anonymous)') +@attr(assertion='succeeds') +def test_bucket_list_objects_anonymous(): + # Get a connection with bad authorization, then change it to be our new Anonymous auth mechanism, + # emulating standard HTTP access. + # + # While it may have been possible to use httplib directly, doing it this way takes care of also + # allowing us to vary the calling format in testing. + conn = _create_connection_bad_auth() + conn._auth_handler = AnonymousAuth.AnonymousAuthHandler(None, None, None) # Doesn't need this + bucket = get_new_bucket() + bucket.set_acl('public-read') + anon_bucket = conn.get_bucket(bucket.name) + anon_bucket.get_all_keys() + +@attr(resource='bucket') +@attr(method='get') +@attr(operation='list all objects (anonymous)') +@attr(assertion='fails') +def test_bucket_list_objects_anonymous_fail(): + # Get a connection with bad authorization, then change it to be our new Anonymous auth mechanism, + # emulating standard HTTP access. + # + # While it may have been possible to use httplib directly, doing it this way takes care of also + # allowing us to vary the calling format in testing. + conn = _create_connection_bad_auth() + conn._auth_handler = AnonymousAuth.AnonymousAuthHandler(None, None, None) # Doesn't need this + bucket = get_new_bucket() + e = assert_raises(boto.exception.S3ResponseError, conn.get_bucket, bucket.name) + eq(e.status, 403) + eq(e.reason, 'Forbidden') + eq(e.error_code, 'AccessDenied') + @attr(resource='bucket') @attr(method='get')