Skip to content

Commit

Permalink
Merge pull request #446 from tatsuyafw/support-s3-server-side-encryption
Browse files Browse the repository at this point in the history
Add have_server_side_encryption matcher to s3_bucket
  • Loading branch information
k1LoW authored Feb 11, 2019
2 parents 42ce8a8 + 2a3a703 commit 947b032
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 0 deletions.
9 changes: 9 additions & 0 deletions doc/_resource_types/s3_bucket.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,15 @@ describe s3_bucket('my-bucket') do
end
```

### have_server_side_encryption

```
describe s3_bucket('my-bucket') do
it { should have_server_side_encryption(algorithm: "AES256") }
it { should have_server_side_encryption(algorithm: "aws:kms") }
end
```

### advanced

`s3_bucket` can use `Aws::S3::Bucket` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Bucket.html).
Expand Down
10 changes: 10 additions & 0 deletions doc/resource_types.md
Original file line number Diff line number Diff line change
Expand Up @@ -2962,6 +2962,16 @@ end
```


### have_server_side_encryption

```
describe s3_bucket('my-bucket') do
it { should have_server_side_encryption(algorithm: "AES256") }
it { should have_server_side_encryption(algorithm: "aws:kms") }
end
```


### have_tag

```ruby
Expand Down
7 changes: 7 additions & 0 deletions lib/awspec/helper/finder/s3.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ def find_bucket_lifecycle_configuration(id)
nil
end

def find_bucket_server_side_encryption(id)
res = s3_client.get_bucket_encryption(bucket: id)
res.server_side_encryption_configuration
rescue Aws::S3::Errors::ServiceError
nil
end

def select_all_buckets
s3_client.list_buckets.buckets
end
Expand Down
12 changes: 12 additions & 0 deletions lib/awspec/stub/s3_bucket.rb
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,18 @@
}
}
]
},
get_bucket_encryption: {
server_side_encryption_configuration: {
rules: [
{
apply_server_side_encryption_by_default: {
sse_algorithm: 'aws:kms',
kms_master_key_id: '[FILTERED]'
}
}
]
}
}
}
}
8 changes: 8 additions & 0 deletions lib/awspec/type/s3_bucket.rb
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,14 @@ def has_mfa_delete_enabled?
bv ? (bv.mfa_delete == 'Enabled') : false
end

def has_server_side_encryption?(algorithm:)
configuration = find_bucket_server_side_encryption(id)
return false unless configuration

sse_algorithm = configuration.rules[0].apply_server_side_encryption_by_default.sse_algorithm
sse_algorithm ? (sse_algorithm == algorithm) : false
end

private

def cors_rules
Expand Down
2 changes: 2 additions & 0 deletions spec/type/s3_bucket_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@

it { should have_mfa_delete_enabled }

it { should have_server_side_encryption(algorithm: 'aws:kms') }

context 'nested attribute call' do
its(:resource) { should be_an_instance_of(Awspec::ResourceReader) }
its('resource.name') { should eq 'my-bucket' }
Expand Down

0 comments on commit 947b032

Please sign in to comment.