configure-s3-website 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +1 -1
- data/README.md +44 -33
- data/bin/configure-s3-website +2 -24
- data/changelog.md +5 -0
- data/features/cassettes/cucumber_tags/create-cf-dist.yml +134 -0
- data/features/configure_bucket.feature +18 -11
- data/features/create_cloudfront_dist.feature +164 -0
- data/features/step_definitions/steps.rb +44 -7
- data/features/support/env.rb +4 -0
- data/features/support/sample_config_files/config_with_cloudfront_distribution_id.yml +4 -0
- data/features/support/sample_config_files/create_cf_dist.yml +3 -0
- data/features/support/vcr.rb +1 -0
- data/lib/configure-s3-website.rb +5 -0
- data/lib/configure-s3-website/cli.rb +35 -0
- data/lib/configure-s3-website/cloudfront_client.rb +117 -0
- data/lib/configure-s3-website/config_source/config_source.rb +9 -0
- data/lib/configure-s3-website/config_source/file_config_source.rb +19 -3
- data/lib/configure-s3-website/http_helper.rb +83 -0
- data/lib/configure-s3-website/runner.rb +17 -0
- data/lib/configure-s3-website/s3_client.rb +9 -68
- data/lib/configure-s3-website/version.rb +1 -1
- data/lib/configure-s3-website/xml_helper.rb +15 -0
- data/spec/config_source/file_config_source_spec.rb +22 -0
- data/spec/s3_client_spec.rb +2 -2
- data/spec/xml_helper_spec.rb +39 -0
- metadata +21 -6
- data/spec/config_extractor/file_config_extractor_spec.rb +0 -11
@@ -0,0 +1,15 @@
|
|
1
|
+
module ConfigureS3Website
|
2
|
+
class XmlHelper
|
3
|
+
def self.hash_to_api_xml(hash={}, indent=0)
|
4
|
+
"".tap do |body|
|
5
|
+
hash.each do |key, value|
|
6
|
+
key_name = key.sub(/^[a-z\d]*/) { $&.capitalize }.gsub(/(?:_|(\/))([a-z\d]*)/) { $2.capitalize }
|
7
|
+
value = value.is_a?(Hash) ? self.hash_to_api_xml(value, indent+1) : value
|
8
|
+
body << "\n"
|
9
|
+
body << " " * indent * 2 # 2-space indentation formatting for xml
|
10
|
+
body << "<#{key_name}>#{value}</#{key_name}>"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'configure-s3-website'
|
3
|
+
|
4
|
+
describe ConfigureS3Website::FileConfigSource do
|
5
|
+
let(:yaml_file_path) {
|
6
|
+
'spec/sample_files/_config_file_with_eruby.yml'
|
7
|
+
}
|
8
|
+
|
9
|
+
let(:config_source) {
|
10
|
+
ConfigureS3Website::FileConfigSource.new(yaml_file_path)
|
11
|
+
}
|
12
|
+
|
13
|
+
it 'can parse files that contain eRuby code' do
|
14
|
+
config_source.s3_access_key_id.should eq('hello world')
|
15
|
+
config_source.s3_secret_access_key.should eq('secret world')
|
16
|
+
config_source.s3_bucket_name.should eq('my-bucket')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns the yaml file path as description' do
|
20
|
+
config_source.description.should eq(yaml_file_path)
|
21
|
+
end
|
22
|
+
end
|
data/spec/s3_client_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe ConfigureS3Website::S3Client do
|
|
23
23
|
}
|
24
24
|
|
25
25
|
it 'calls the S3 api without request body' do
|
26
|
-
ConfigureS3Website::
|
26
|
+
ConfigureS3Website::HttpHelper.should_receive(:call_s3_api).
|
27
27
|
with(anything(), anything(), '', anything())
|
28
28
|
ConfigureS3Website::S3Client.send(:create_bucket,
|
29
29
|
config_source)
|
@@ -38,7 +38,7 @@ describe ConfigureS3Website::S3Client do
|
|
38
38
|
}
|
39
39
|
|
40
40
|
it 'calls the S3 api with location constraint XML' do
|
41
|
-
ConfigureS3Website::
|
41
|
+
ConfigureS3Website::HttpHelper.should_receive(:call_s3_api).
|
42
42
|
with(anything(), anything(),
|
43
43
|
%|
|
44
44
|
<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'configure-s3-website'
|
3
|
+
|
4
|
+
describe ConfigureS3Website::XmlHelper do
|
5
|
+
context '#hash_to_api_xml' do
|
6
|
+
it 'returns an empty string, if the hash is empty' do
|
7
|
+
str = ConfigureS3Website::XmlHelper.send(:hash_to_api_xml,
|
8
|
+
{ })
|
9
|
+
str.should eq('')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'capitalises hash keys but not values' do
|
13
|
+
str = ConfigureS3Website::XmlHelper.send(:hash_to_api_xml,
|
14
|
+
{ 'key' => 'value' })
|
15
|
+
str.should eq("\n<Key>value</Key>")
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'removes underscores and capitalises the following letter' do
|
19
|
+
str = ConfigureS3Website::XmlHelper.send(:hash_to_api_xml,
|
20
|
+
{ 'hello_key' => 'value' })
|
21
|
+
str.should eq("\n<HelloKey>value</HelloKey>")
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'can handle hash values as well' do
|
25
|
+
str = ConfigureS3Website::XmlHelper.send(:hash_to_api_xml,
|
26
|
+
{ 'key' => { 'subkey' => 'subvalue' } })
|
27
|
+
str.should eq("\n<Key>\n <Subkey>subvalue</Subkey></Key>")
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'indents' do
|
31
|
+
str = ConfigureS3Website::XmlHelper.send(
|
32
|
+
:hash_to_api_xml,
|
33
|
+
{ 'key' => { 'subkey' => 'subvalue' } },
|
34
|
+
indent = 1
|
35
|
+
)
|
36
|
+
str.should eq("\n <Key>\n <Subkey>subvalue</Subkey></Key>")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: configure-s3-website
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -142,26 +142,36 @@ files:
|
|
142
142
|
- features/cassettes/cucumber_tags/bucket-does-not-exist-in-tokyo.yml
|
143
143
|
- features/cassettes/cucumber_tags/bucket-does-not-exist.yml
|
144
144
|
- features/cassettes/cucumber_tags/bucket-exists.yml
|
145
|
+
- features/cassettes/cucumber_tags/create-cf-dist.yml
|
145
146
|
- features/cassettes/cucumber_tags/redirects.yml
|
146
147
|
- features/config_file.feature
|
147
148
|
- features/configure_bucket.feature
|
149
|
+
- features/create_cloudfront_dist.feature
|
148
150
|
- features/step_definitions/steps.rb
|
149
151
|
- features/support/env.rb
|
152
|
+
- features/support/sample_config_files/config_with_cloudfront_distribution_id.yml
|
153
|
+
- features/support/sample_config_files/create_cf_dist.yml
|
150
154
|
- features/support/sample_config_files/endpoint_tokyo.yml
|
151
155
|
- features/support/sample_config_files/redirects.yml
|
152
156
|
- features/support/sample_config_files/s3_config_with_existing_bucket.yml
|
153
157
|
- features/support/sample_config_files/s3_config_with_non-existing_bucket.yml
|
154
158
|
- features/support/vcr.rb
|
155
159
|
- lib/configure-s3-website.rb
|
160
|
+
- lib/configure-s3-website/cli.rb
|
161
|
+
- lib/configure-s3-website/cloudfront_client.rb
|
156
162
|
- lib/configure-s3-website/config_source/config_source.rb
|
157
163
|
- lib/configure-s3-website/config_source/file_config_source.rb
|
164
|
+
- lib/configure-s3-website/http_helper.rb
|
165
|
+
- lib/configure-s3-website/runner.rb
|
158
166
|
- lib/configure-s3-website/s3_client.rb
|
159
167
|
- lib/configure-s3-website/version.rb
|
160
|
-
-
|
168
|
+
- lib/configure-s3-website/xml_helper.rb
|
169
|
+
- spec/config_source/file_config_source_spec.rb
|
161
170
|
- spec/s3_client_spec.rb
|
162
171
|
- spec/sample_files/_config_file.yml
|
163
172
|
- spec/sample_files/_config_file_oregon.yml
|
164
173
|
- spec/sample_files/_config_file_with_eruby.yml
|
174
|
+
- spec/xml_helper_spec.rb
|
165
175
|
homepage: https://github.com/laurilehmijoki/configure-s3-website
|
166
176
|
licenses: []
|
167
177
|
post_install_message:
|
@@ -176,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
186
|
version: '0'
|
177
187
|
segments:
|
178
188
|
- 0
|
179
|
-
hash: -
|
189
|
+
hash: -2014890720503017169
|
180
190
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
191
|
none: false
|
182
192
|
requirements:
|
@@ -185,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
195
|
version: '0'
|
186
196
|
segments:
|
187
197
|
- 0
|
188
|
-
hash: -
|
198
|
+
hash: -2014890720503017169
|
189
199
|
requirements: []
|
190
200
|
rubyforge_project:
|
191
201
|
rubygems_version: 1.8.25
|
@@ -196,18 +206,23 @@ test_files:
|
|
196
206
|
- features/cassettes/cucumber_tags/bucket-does-not-exist-in-tokyo.yml
|
197
207
|
- features/cassettes/cucumber_tags/bucket-does-not-exist.yml
|
198
208
|
- features/cassettes/cucumber_tags/bucket-exists.yml
|
209
|
+
- features/cassettes/cucumber_tags/create-cf-dist.yml
|
199
210
|
- features/cassettes/cucumber_tags/redirects.yml
|
200
211
|
- features/config_file.feature
|
201
212
|
- features/configure_bucket.feature
|
213
|
+
- features/create_cloudfront_dist.feature
|
202
214
|
- features/step_definitions/steps.rb
|
203
215
|
- features/support/env.rb
|
216
|
+
- features/support/sample_config_files/config_with_cloudfront_distribution_id.yml
|
217
|
+
- features/support/sample_config_files/create_cf_dist.yml
|
204
218
|
- features/support/sample_config_files/endpoint_tokyo.yml
|
205
219
|
- features/support/sample_config_files/redirects.yml
|
206
220
|
- features/support/sample_config_files/s3_config_with_existing_bucket.yml
|
207
221
|
- features/support/sample_config_files/s3_config_with_non-existing_bucket.yml
|
208
222
|
- features/support/vcr.rb
|
209
|
-
- spec/
|
223
|
+
- spec/config_source/file_config_source_spec.rb
|
210
224
|
- spec/s3_client_spec.rb
|
211
225
|
- spec/sample_files/_config_file.yml
|
212
226
|
- spec/sample_files/_config_file_oregon.yml
|
213
227
|
- spec/sample_files/_config_file_with_eruby.yml
|
228
|
+
- spec/xml_helper_spec.rb
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'configure-s3-website'
|
3
|
-
|
4
|
-
describe ConfigureS3Website::FileConfigSource do
|
5
|
-
it 'can parse files that contain eRuby code' do
|
6
|
-
extractor = ConfigureS3Website::FileConfigSource.new('spec/sample_files/_config_file_with_eruby.yml')
|
7
|
-
extractor.s3_access_key_id.should eq('hello world')
|
8
|
-
extractor.s3_secret_access_key.should eq('secret world')
|
9
|
-
extractor.s3_bucket_name.should eq('my-bucket')
|
10
|
-
end
|
11
|
-
end
|