@@ -39,6 +39,41 @@ func TestAccAWSCloudTrail_basic(t *testing.T) {
3939 })
4040}
4141
42+ func TestAccAWSCloudTrail_enable_logging (t * testing.T ) {
43+ var trail cloudtrail.Trail
44+
45+ resource .Test (t , resource.TestCase {
46+ PreCheck : func () { testAccPreCheck (t ) },
47+ Providers : testAccProviders ,
48+ CheckDestroy : testAccCheckAWSCloudTrailDestroy ,
49+ Steps : []resource.TestStep {
50+ resource.TestStep {
51+ Config : testAccAWSCloudTrailConfig ,
52+ Check : resource .ComposeTestCheckFunc (
53+ testAccCheckCloudTrailExists ("aws_cloudtrail.foobar" , & trail ),
54+ // AWS will create the trail with logging turned off.
55+ // Test that "enable_logging" default works.
56+ testAccCheckCloudTrailLoggingEnabled ("aws_cloudtrail.foobar" , true , & trail ),
57+ ),
58+ },
59+ resource.TestStep {
60+ Config : testAccAWSCloudTrailConfigModified ,
61+ Check : resource .ComposeTestCheckFunc (
62+ testAccCheckCloudTrailExists ("aws_cloudtrail.foobar" , & trail ),
63+ testAccCheckCloudTrailLoggingEnabled ("aws_cloudtrail.foobar" , false , & trail ),
64+ ),
65+ },
66+ resource.TestStep {
67+ Config : testAccAWSCloudTrailConfig ,
68+ Check : resource .ComposeTestCheckFunc (
69+ testAccCheckCloudTrailExists ("aws_cloudtrail.foobar" , & trail ),
70+ testAccCheckCloudTrailLoggingEnabled ("aws_cloudtrail.foobar" , true , & trail ),
71+ ),
72+ },
73+ },
74+ })
75+ }
76+
4277func testAccCheckCloudTrailExists (n string , trail * cloudtrail.Trail ) resource.TestCheckFunc {
4378 return func (s * terraform.State ) error {
4479 rs , ok := s .RootModule ().Resources [n ]
@@ -63,6 +98,30 @@ func testAccCheckCloudTrailExists(n string, trail *cloudtrail.Trail) resource.Te
6398 }
6499}
65100
101+ func testAccCheckCloudTrailLoggingEnabled (n string , desired bool , trail * cloudtrail.Trail ) resource.TestCheckFunc {
102+ return func (s * terraform.State ) error {
103+ rs , ok := s .RootModule ().Resources [n ]
104+ if ! ok {
105+ return fmt .Errorf ("Not found: %s" , n )
106+ }
107+
108+ conn := testAccProvider .Meta ().(* AWSClient ).cloudtrailconn
109+ params := cloudtrail.GetTrailStatusInput {
110+ Name : aws .String (rs .Primary .ID ),
111+ }
112+ resp , err := conn .GetTrailStatus (& params )
113+
114+ if err != nil {
115+ return err
116+ }
117+ if * resp .IsLogging != desired {
118+ return fmt .Errorf ("Expected logging status %t, given %t" , desired , * resp .IsLogging )
119+ }
120+
121+ return nil
122+ }
123+ }
124+
66125func testAccCheckAWSCloudTrailDestroy (s * terraform.State ) error {
67126 conn := testAccProvider .Meta ().(* AWSClient ).cloudtrailconn
68127
@@ -134,6 +193,7 @@ resource "aws_cloudtrail" "foobar" {
134193 s3_bucket_name = "${aws_s3_bucket.foo.id}"
135194 s3_key_prefix = "/prefix"
136195 include_global_service_events = false
196+ enable_logging = false
137197}
138198
139199resource "aws_s3_bucket" "foo" {
0 commit comments