Index: third_party/gsutil/third_party/boto/tests/integration/cloudtrail/test_cloudtrail.py |
diff --git a/third_party/gsutil/third_party/boto/tests/integration/cloudtrail/test_cloudtrail.py b/third_party/gsutil/third_party/boto/tests/integration/cloudtrail/test_cloudtrail.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3e90fbeb2a9dca5707eac0c57d5640e39c4f2757 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/boto/tests/integration/cloudtrail/test_cloudtrail.py |
@@ -0,0 +1,91 @@ |
+import boto |
+ |
+from time import time |
+from tests.compat import unittest |
+ |
+DEFAULT_S3_POLICY = """{ |
+ "Version": "2012-10-17", |
+ "Statement": [ |
+ { |
+ "Sid": "AWSCloudTrailAclCheck20131101", |
+ "Effect": "Allow", |
+ "Principal": { |
+ "AWS": [ |
+ "arn:aws:iam::086441151436:root", |
+ "arn:aws:iam::113285607260:root" |
+ ] |
+ }, |
+ "Action": "s3:GetBucketAcl", |
+ "Resource": "arn:aws:s3:::<BucketName>" |
+ }, |
+ { |
+ "Sid": "AWSCloudTrailWrite20131101", |
+ "Effect": "Allow", |
+ "Principal": { |
+ "AWS": [ |
+ "arn:aws:iam::086441151436:root", |
+ "arn:aws:iam::113285607260:root" |
+ ] |
+ }, |
+ "Action": "s3:PutObject", |
+ "Resource": "arn:aws:s3:::<BucketName>/<Prefix>/AWSLogs/<CustomerAccountID>/*", |
+ "Condition": { |
+ "StringEquals": { |
+ "s3:x-amz-acl": "bucket-owner-full-control" |
+ } |
+ } |
+ } |
+ ] |
+}""" |
+ |
+class TestCloudTrail(unittest.TestCase): |
+ def test_cloudtrail(self): |
+ cloudtrail = boto.connect_cloudtrail() |
+ |
+ # Don't delete existing customer data! |
+ res = cloudtrail.describe_trails() |
+ if len(res['trailList']): |
+ self.fail('A trail already exists on this account!') |
+ |
+ # Who am I? |
+ iam = boto.connect_iam() |
+ response = iam.get_user() |
+ account_id = response['get_user_response']['get_user_result'] \ |
+ ['user']['user_id'] |
+ |
+ # Setup a new bucket |
+ s3 = boto.connect_s3() |
+ bucket_name = 'cloudtrail-integ-{0}'.format(time()) |
+ policy = DEFAULT_S3_POLICY.replace('<BucketName>', bucket_name)\ |
+ .replace('<CustomerAccountID>', account_id)\ |
+ .replace('<Prefix>/', '') |
+ b = s3.create_bucket(bucket_name) |
+ b.set_policy(policy) |
+ |
+ # Setup CloudTrail |
+ cloudtrail.create_trail(trail={'Name': 'test', 'S3BucketName': bucket_name}) |
+ |
+ cloudtrail.update_trail(trail={'Name': 'test', 'IncludeGlobalServiceEvents': False}) |
+ |
+ trails = cloudtrail.describe_trails() |
+ |
+ self.assertEqual('test', trails['trailList'][0]['Name']) |
+ self.assertFalse(trails['trailList'][0]['IncludeGlobalServiceEvents']) |
+ |
+ cloudtrail.start_logging(name='test') |
+ |
+ status = cloudtrail.get_trail_status(name='test') |
+ self.assertTrue(status['IsLogging']) |
+ |
+ cloudtrail.stop_logging(name='test') |
+ |
+ status = cloudtrail.get_trail_status(name='test') |
+ self.assertFalse(status['IsLogging']) |
+ |
+ # Clean up |
+ cloudtrail.delete_trail(name='test') |
+ |
+ for key in b.list(): |
+ key.delete() |
+ |
+ s3.delete_bucket(bucket_name) |