def test_list_buckets(self): class StubQuery(client.Query): def __init__(query, action, creds, endpoint): super(StubQuery, query).__init__( action=action, creds=creds) self.assertEquals(action, "GET") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, None) self.assertEqual(query.object_name, None) self.assertEqual(query.data, "") self.assertEqual(query.metadata, {}) def submit(query): return succeed(payload.sample_list_buckets_result) def check_list_buckets(results): bucket1, bucket2 = results self.assertEquals(bucket1.name, "quotes") self.assertEquals( bucket1.creation_date.timetuple(), (2006, 2, 3, 16, 45, 9, 4, 34, 0)) self.assertEquals(bucket2.name, "samples") self.assertEquals( bucket2.creation_date.timetuple(), (2006, 2, 3, 16, 41, 58, 4, 34, 0)) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) d = s3.list_buckets() return d.addCallback(check_list_buckets)
def test_copy_object(self): """ L{S3Client.copy_object} creates a L{Query} to copy an object from one bucket to another. """ class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None, data=None, content_type=None, metadata=None, amz_headers=None): super(StubQuery, query).__init__( action=action, creds=creds, bucket=bucket, object_name=object_name, data=data, content_type=content_type, metadata=metadata, amz_headers=amz_headers) self.assertEqual(action, "PUT") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "newbucket") self.assertEqual(query.object_name, "newobjectname") self.assertEqual(query.data, None) self.assertEqual(query.content_type, None) self.assertEqual(query.metadata, {"key": "some meta data"}) self.assertEqual(query.amz_headers, {"copy-source": "/mybucket/objectname"}) def submit(query): return succeed(None) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) return s3.copy_object("mybucket", "objectname", "newbucket", "newobjectname", metadata={"key": "some meta data"})
def test_get_object_acl(self): class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None, data=""): super(StubQuery, query).__init__(action=action, creds=creds, bucket=bucket, object_name=object_name, data=data) self.assertEquals(action, "GET") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, "myobject?acl") self.assertEqual(query.data, "") self.assertEqual(query.metadata, {}) def submit(query, url_context=None): return succeed(payload.sample_access_control_policy_result) def check_result(result): self.assert_(isinstance(result, AccessControlPolicy)) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) deferred = s3.get_object_acl("mybucket", "myobject") return deferred.addCallback(check_result)
def test_get_request_payment(self): """ L{S3Client.get_request_payment} creates a L{Query} to get payment information. It parses the returned C{RequestPaymentConfiguration} XML document and returns a C{Deferred} that fires with the payer's name. """ class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None, data=None, content_type=None, metadata=None): super(StubQuery, query).__init__( action=action, creds=creds, bucket=bucket, object_name=object_name, data=data, content_type=content_type, metadata=metadata) self.assertEqual(action, "GET") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, "?requestPayment") self.assertEqual(query.metadata, None) def submit(query): return succeed(payload.sample_request_payment) def check_request_payment(result): self.assertEquals(result, "Requester") creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) deferred = s3.get_request_payment("mybucket") return deferred.addCallback(check_request_payment)
def test_put_object(self): class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None, data=None, content_type=None, metadata=None, amz_headers=None): super(StubQuery, query).__init__( action=action, creds=creds, bucket=bucket, object_name=object_name, data=data, content_type=content_type, metadata=metadata, amz_headers=amz_headers) self.assertEqual(action, "PUT") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, "objectname") self.assertEqual(query.data, "some data") self.assertEqual(query.content_type, "text/plain") self.assertEqual(query.metadata, {"key": "some meta data"}) self.assertEqual(query.amz_headers, {"acl": "public-read"}) def submit(query): return succeed(None) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) return s3.put_object("mybucket", "objectname", "some data", content_type="text/plain", metadata={"key": "some meta data"}, amz_headers={"acl": "public-read"})
def test_put_request_payment(self): """ L{S3Client.put_request_payment} creates a L{Query} to set payment information. An C{RequestPaymentConfiguration} XML document is built and sent to the endpoint and a C{Deferred} is returned that fires with the results of the request. """ class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None, data=None, content_type=None, metadata=None): super(StubQuery, query).__init__( action=action, creds=creds, bucket=bucket, object_name=object_name, data=data, content_type=content_type, metadata=metadata) self.assertEqual(action, "PUT") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, "?requestPayment") xml = ("<RequestPaymentConfiguration " 'xmlns="http://s3.amazonaws.com/doc/2006-03-01/">\n' " <Payer>Requester</Payer>\n" "</RequestPaymentConfiguration>") self.assertEqual(query.data, xml) self.assertEqual(query.metadata, None) def submit(query): return succeed(None) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) return s3.put_request_payment("mybucket", "Requester")
def test_get_bucket_location(self): """ L{S3Client.get_bucket_location} creates a L{Query} to get a bucket's location. It parses the returned C{LocationConstraint} XML document and returns a C{Deferred} that fires with the bucket's region. """ class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None): super(StubQuery, query).__init__(action=action, creds=creds, bucket=bucket, object_name=object_name) self.assertEquals(action, "GET") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, "?location") self.assertEqual(query.data, "") self.assertEqual(query.metadata, {}) self.assertEqual(query.amz_headers, {}) def submit(query, url_context=None): return succeed(payload.sample_get_bucket_location_result) def check_results(location_constraint): self.assertEquals(location_constraint, "EU") creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) d = s3.get_bucket_location("mybucket") return d.addCallback(check_results)
def test_delete_object(self): class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None, object_name=None, data=None, content_type=None, metadata=None): super(StubQuery, query).__init__(action=action, creds=creds, bucket=bucket, object_name=object_name, data=data, content_type=content_type, metadata=metadata) self.assertEqual(action, "DELETE") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, "objectname") def submit(query): return succeed(None) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) return s3.delete_object("mybucket", "objectname")
def test_get_bucket(self): class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None): super(StubQuery, query).__init__( action=action, creds=creds, bucket=bucket) self.assertEquals(action, "GET") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, None) self.assertEqual(query.data, "") self.assertEqual(query.metadata, {}) def submit(query, url_context=None): return succeed(payload.sample_get_bucket_result) def check_results(listing): self.assertEquals(listing.name, "mybucket") self.assertEquals(listing.prefix, "N") self.assertEquals(listing.marker, "Ned") self.assertEquals(listing.max_keys, "40") self.assertEquals(listing.is_truncated, "false") self.assertEquals(len(listing.contents), 2) content1 = listing.contents[0] self.assertEquals(content1.key, "Nelson") self.assertEquals( content1.modification_date.timetuple(), (2006, 1, 1, 12, 0, 0, 6, 1, 0)) self.assertEquals( content1.etag, '"828ef3fdfa96f00ad9f27c383fc9ac7f"') self.assertEquals(content1.size, "5") self.assertEquals(content1.storage_class, "STANDARD") owner = content1.owner self.assertEquals(owner.id, "bcaf1ffd86f41caff1a493dc2ad8c2c281e37522a640e16" "1ca5fb16fd081034f") self.assertEquals(owner.display_name, "webfile") creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) d = s3.get_bucket("mybucket") return d.addCallback(check_results)
def test_delete_bucket(self): class StubQuery(client.Query): def __init__(query, action, creds, endpoint, bucket=None): super(StubQuery, query).__init__(action=action, creds=creds, bucket=bucket) self.assertEquals(action, "DELETE") self.assertEqual(creds.access_key, "foo") self.assertEqual(creds.secret_key, "bar") self.assertEqual(query.bucket, "mybucket") self.assertEqual(query.object_name, None) self.assertEqual(query.data, "") self.assertEqual(query.metadata, {}) def submit(query, url_context=None): return succeed(None) creds = AWSCredentials("foo", "bar") s3 = client.S3Client(creds, query_factory=StubQuery) return s3.delete_bucket("mybucket")