comodule 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +0 -2
- data/README.md +115 -43
- data/comodule.gemspec +4 -2
- data/copy_to_rails.sh +7 -0
- data/lib/comodule.rb +32 -2
- data/lib/comodule/config_support.rb +95 -18
- data/lib/comodule/deployment.rb +2 -0
- data/lib/comodule/deployment/base.rb +186 -0
- data/lib/comodule/deployment/helper.rb +9 -0
- data/lib/comodule/deployment/helper/aws.rb +96 -0
- data/lib/comodule/deployment/helper/aws/base.rb +14 -0
- data/lib/comodule/deployment/helper/aws/cloud_formation.rb +146 -0
- data/lib/comodule/deployment/helper/aws/ec2.rb +37 -0
- data/lib/comodule/deployment/helper/aws/rds.rb +46 -0
- data/lib/comodule/deployment/helper/aws/s3.rb +52 -0
- data/lib/comodule/deployment/helper/aws/ssl.rb +111 -0
- data/lib/comodule/deployment/helper/base.rb +18 -0
- data/lib/comodule/deployment/helper/shell_command.rb +76 -0
- data/lib/comodule/deployment/helper/system_utility.rb +80 -0
- data/lib/comodule/deployment/helper/uploader.rb +155 -0
- data/lib/comodule/deployment/platform.rb +156 -0
- data/lib/comodule/deployment/platform/default_files/.gitignore.erb +5 -0
- data/lib/comodule/deployment/platform/default_files/aws_config.yml.erb +2 -0
- data/lib/comodule/version.rb +1 -1
- data/lib/tasks/comodule.rake +94 -0
- data/spec/comodule/config_support_spec.rb +102 -0
- data/spec/comodule/deployment/helper/aws/cloud_formation_spec.rb +71 -0
- data/spec/comodule/deployment/helper/aws/s3_spec.rb +85 -0
- data/spec/comodule/deployment/helper/shell_command_spec.rb +176 -0
- data/spec/comodule/deployment/helper/system_utility_spec.rb +250 -0
- data/spec/comodule/deployment/helper/uploader_spec.rb +274 -0
- data/spec/comodule/deployment/platform_spec.rb +310 -0
- data/spec/comodule_spec.rb +1 -1
- data/spec/rails/experiment/.gitignore +16 -0
- data/spec/rails/experiment/Gemfile +43 -0
- data/spec/rails/experiment/README.rdoc +28 -0
- data/spec/rails/experiment/Rakefile +6 -0
- data/spec/rails/experiment/app/assets/images/.keep +0 -0
- data/spec/rails/experiment/app/assets/javascripts/application.js +16 -0
- data/spec/rails/experiment/app/assets/javascripts/experiences.js.coffee +3 -0
- data/spec/rails/experiment/app/assets/stylesheets/application.css +15 -0
- data/spec/rails/experiment/app/assets/stylesheets/experiences.css.scss +3 -0
- data/spec/rails/experiment/app/assets/stylesheets/scaffolds.css.scss +69 -0
- data/spec/rails/experiment/app/controllers/application_controller.rb +5 -0
- data/spec/rails/experiment/app/controllers/concerns/.keep +0 -0
- data/spec/rails/experiment/app/controllers/experiences_controller.rb +74 -0
- data/spec/rails/experiment/app/helpers/application_helper.rb +2 -0
- data/spec/rails/experiment/app/helpers/experiences_helper.rb +2 -0
- data/spec/rails/experiment/app/mailers/.keep +0 -0
- data/spec/rails/experiment/app/models/.keep +0 -0
- data/spec/rails/experiment/app/models/concerns/.keep +0 -0
- data/spec/rails/experiment/app/models/experience.rb +2 -0
- data/spec/rails/experiment/app/views/experiences/_form.html.slim +12 -0
- data/spec/rails/experiment/app/views/experiences/edit.html.slim +8 -0
- data/spec/rails/experiment/app/views/experiences/index.html.slim +21 -0
- data/spec/rails/experiment/app/views/experiences/index.json.jbuilder +4 -0
- data/spec/rails/experiment/app/views/experiences/new.html.slim +5 -0
- data/spec/rails/experiment/app/views/experiences/show.html.slim +9 -0
- data/spec/rails/experiment/app/views/experiences/show.json.jbuilder +1 -0
- data/spec/rails/experiment/app/views/layouts/application.html.erb +14 -0
- data/spec/rails/experiment/bin/bundle +3 -0
- data/spec/rails/experiment/bin/rails +8 -0
- data/spec/rails/experiment/bin/rake +8 -0
- data/spec/rails/experiment/bin/spring +18 -0
- data/spec/rails/experiment/config.ru +4 -0
- data/spec/rails/experiment/config/application.rb +23 -0
- data/spec/rails/experiment/config/boot.rb +4 -0
- data/spec/rails/experiment/config/database.yml +25 -0
- data/spec/rails/experiment/config/environment.rb +5 -0
- data/spec/rails/experiment/config/environments/development.rb +37 -0
- data/spec/rails/experiment/config/environments/production.rb +78 -0
- data/spec/rails/experiment/config/environments/test.rb +39 -0
- data/spec/rails/experiment/config/experiment_unicorn.rb +104 -0
- data/spec/rails/experiment/config/initializers/assets.rb +8 -0
- data/spec/rails/experiment/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/rails/experiment/config/initializers/cookies_serializer.rb +3 -0
- data/spec/rails/experiment/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/rails/experiment/config/initializers/inflections.rb +16 -0
- data/spec/rails/experiment/config/initializers/mime_types.rb +4 -0
- data/spec/rails/experiment/config/initializers/session_store.rb +3 -0
- data/spec/rails/experiment/config/initializers/wrap_parameters.rb +14 -0
- data/spec/rails/experiment/config/locales/en.yml +23 -0
- data/spec/rails/experiment/config/routes.rb +59 -0
- data/spec/rails/experiment/config/secrets.yml +22 -0
- data/spec/rails/experiment/db/migrate/20141004050218_create_experiences.rb +9 -0
- data/spec/rails/experiment/db/schema.rb +22 -0
- data/spec/rails/experiment/db/seeds.rb +7 -0
- data/spec/rails/experiment/lib/assets/.keep +0 -0
- data/spec/rails/experiment/lib/tasks/.keep +0 -0
- data/spec/rails/experiment/log/.keep +0 -0
- data/spec/rails/experiment/platform/.gitignore +5 -0
- data/spec/rails/experiment/platform/ami/cloud_formation/.keep +0 -0
- data/spec/rails/experiment/platform/ami/cloud_formation/template.json.erb +138 -0
- data/spec/rails/experiment/platform/ami/config.yml +5 -0
- data/spec/rails/experiment/platform/ami/config/.keep +0 -0
- data/spec/rails/experiment/platform/cloud_formation/.keep +0 -0
- data/spec/rails/experiment/platform/config.yml +18 -0
- data/spec/rails/experiment/platform/config/.keep +0 -0
- data/spec/rails/experiment/platform/config/nginx/conf.d/default.conf.erb +46 -0
- data/spec/rails/experiment/platform/config/nginx/nginx.conf.erb +53 -0
- data/spec/rails/experiment/platform/deployment/cloud_formation/.keep +0 -0
- data/spec/rails/experiment/platform/deployment/cloud_formation/template.json.erb +107 -0
- data/spec/rails/experiment/platform/deployment/config.yml +16 -0
- data/spec/rails/experiment/platform/deployment/config/.keep +0 -0
- data/spec/rails/experiment/public/404.html +67 -0
- data/spec/rails/experiment/public/422.html +67 -0
- data/spec/rails/experiment/public/500.html +66 -0
- data/spec/rails/experiment/public/favicon.ico +0 -0
- data/spec/rails/experiment/public/robots.txt +5 -0
- data/spec/rails/experiment/test/controllers/.keep +0 -0
- data/spec/rails/experiment/test/controllers/experiences_controller_test.rb +49 -0
- data/spec/rails/experiment/test/fixtures/.keep +0 -0
- data/spec/rails/experiment/test/fixtures/experiences.yml +7 -0
- data/spec/rails/experiment/test/helpers/.keep +0 -0
- data/spec/rails/experiment/test/helpers/experiences_helper_test.rb +4 -0
- data/spec/rails/experiment/test/integration/.keep +0 -0
- data/spec/rails/experiment/test/mailers/.keep +0 -0
- data/spec/rails/experiment/test/models/.keep +0 -0
- data/spec/rails/experiment/test/models/experience_test.rb +7 -0
- data/spec/rails/experiment/test/test_helper.rb +10 -0
- data/spec/rails/experiment/vendor/assets/javascripts/.keep +0 -0
- data/spec/rails/experiment/vendor/assets/stylesheets/.keep +0 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/deployment/helper/shell_command_support.rb +34 -0
- data/spec/support/deployment/helper/uploader_support.rb +21 -0
- data/spec/support/deployment/platform_support.rb +32 -0
- metadata +262 -21
- data/lib/comodule/customize_class/hash_custom.rb +0 -20
- data/spec/comodule/customize_class/hash_custom_spec.rb +0 -32
@@ -0,0 +1,250 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Comodule::Deployment::Helper::SystemUtility do
|
4
|
+
|
5
|
+
include_context 'deployment.platform'
|
6
|
+
|
7
|
+
let(:sample_yaml) do
|
8
|
+
<<-HERE
|
9
|
+
production:
|
10
|
+
username: <%= config.db.username %>
|
11
|
+
password: <%= config.db.password %>
|
12
|
+
HERE
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:sample_result) do
|
16
|
+
<<-HERE
|
17
|
+
production:
|
18
|
+
username: jamiroquai
|
19
|
+
password: afunkodyssey
|
20
|
+
HERE
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:erb_path) { File.join(platform_dir, 'config', 'database.yml.erb') }
|
24
|
+
|
25
|
+
before do
|
26
|
+
platform.create
|
27
|
+
|
28
|
+
File.open(File.join(platform_root, 'config.yml'), 'w') do |file|
|
29
|
+
file.write <<-HERE
|
30
|
+
db:
|
31
|
+
username: jamiroquai
|
32
|
+
password: afunkodyssey
|
33
|
+
HERE
|
34
|
+
end
|
35
|
+
|
36
|
+
File.open(erb_path, 'w') do |file|
|
37
|
+
file.write sample_yaml
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#render' do
|
42
|
+
subject { platform.render(erb_path) }
|
43
|
+
|
44
|
+
it 'render erb' do
|
45
|
+
is_expected.to eq(sample_result)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#render_in_path' do
|
50
|
+
let(:path) do
|
51
|
+
FileUtils.mkdir_p File.join(platform_root, 'render_in_dir_test')
|
52
|
+
File.join(platform_root, 'render_in_dir_test', 'database_config.yml')
|
53
|
+
end
|
54
|
+
|
55
|
+
subject { platform.render_in_path erb_path, path }
|
56
|
+
|
57
|
+
it 'makes a file rendered erb in specify path' do
|
58
|
+
is_expected.to eq(path)
|
59
|
+
expect(File.file?(path)).to eq(true)
|
60
|
+
expect(File.read(path)).to eq(sample_result)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#render_in_dir' do
|
65
|
+
let(:in_dir) { File.join(platform_root, 'render_in_dir_test') }
|
66
|
+
|
67
|
+
before do
|
68
|
+
FileUtils.mkdir_p in_dir
|
69
|
+
end
|
70
|
+
|
71
|
+
subject { platform.render_in_dir erb_path, in_dir }
|
72
|
+
|
73
|
+
it 'makes a file rendered erb in specify directory' do
|
74
|
+
result_path = File.join(in_dir, 'database.yml')
|
75
|
+
is_expected.to eq(result_path)
|
76
|
+
expect(File.file?(result_path)).to eq(true)
|
77
|
+
expect(File.read(result_path)).to eq(sample_result)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '#yaml_to_config' do
|
82
|
+
let(:path) do
|
83
|
+
FileUtils.mkdir_p File.join(platform_root, 'yaml_to_config_test')
|
84
|
+
File.join(platform_root, 'yaml_to_config_test', 'database.yml')
|
85
|
+
end
|
86
|
+
|
87
|
+
before do
|
88
|
+
platform.render_in_path erb_path, path
|
89
|
+
end
|
90
|
+
|
91
|
+
subject { platform.yaml_to_config(path).to_hash }
|
92
|
+
|
93
|
+
it 'makes a ConfigSupport::Config instance source specify file' do
|
94
|
+
is_expected.to eq({ production: { username: 'jamiroquai', password: 'afunkodyssey' } })
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe 'about directory or file' do
|
99
|
+
let(:dir) { File.join(platform_root, 'dir_test') }
|
100
|
+
let(:dirs) do
|
101
|
+
[
|
102
|
+
File.join(platform_root, 'dir_test1'),
|
103
|
+
File.join(platform_root, 'dir_test2'),
|
104
|
+
File.join(platform_root, 'dir_test3')
|
105
|
+
]
|
106
|
+
end
|
107
|
+
|
108
|
+
describe '#rm_rf' do
|
109
|
+
context 'given path outside of #platform_root' do
|
110
|
+
it 'raises an error' do
|
111
|
+
expect {
|
112
|
+
platform.rm_rf "/test/tet/tett"
|
113
|
+
}.to raise_error(ArgumentError)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'given path inside of #platform_root' do
|
118
|
+
context 'exists the directory' do
|
119
|
+
subject { platform.rm_rf platform.tmp_dir }
|
120
|
+
|
121
|
+
before do
|
122
|
+
FileUtils.mkdir_p platform.tmp_dir
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'execute rm -rf' do
|
126
|
+
allow(platform).to receive(:`).with(
|
127
|
+
"rm -rf #{platform.tmp_dir}"
|
128
|
+
)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'not exists the directory' do
|
133
|
+
subject { platform.rm_rf platform.tmp_dir }
|
134
|
+
|
135
|
+
before do
|
136
|
+
`rm -rf #{platform.tmp_dir}`
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'do nothing' do
|
140
|
+
is_expected.to eq(nil)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
describe '#be_dir' do
|
147
|
+
context 'given a path' do
|
148
|
+
subject { platform.be_dir dir }
|
149
|
+
|
150
|
+
it 'makes the directory' do
|
151
|
+
is_expected.to eq(dir)
|
152
|
+
expect(File.directory?(dir)).to eq(true)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
context 'given some paths' do
|
157
|
+
subject { platform.be_dir *dirs }
|
158
|
+
|
159
|
+
it 'makes those directories' do
|
160
|
+
is_expected.to eq(dirs)
|
161
|
+
dirs.each do |dir|
|
162
|
+
expect(File.directory?(dir)).to eq(true)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
describe '#re_dir' do
|
169
|
+
context 'given a directory' do
|
170
|
+
let(:sample_file) { File.join(dir, 'sample.txt') }
|
171
|
+
|
172
|
+
subject { platform.re_dir dir}
|
173
|
+
|
174
|
+
before do
|
175
|
+
FileUtils.mkdir_p dir
|
176
|
+
`touch #{sample_file}`
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'remakes the directory' do
|
180
|
+
expect(File.directory?(dir)).to eq(true)
|
181
|
+
expect(File.file?(sample_file)).to eq(true)
|
182
|
+
is_expected.to eq(dir)
|
183
|
+
expect(File.directory?(dir)).to eq(true)
|
184
|
+
expect(File.file?(sample_file)).to eq(false)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
context 'given some directories' do
|
189
|
+
let(:sample_files) do
|
190
|
+
dirs.map { |d| File.join(d, 'sample.txt')}
|
191
|
+
end
|
192
|
+
|
193
|
+
subject { platform.re_dir dirs }
|
194
|
+
|
195
|
+
before do
|
196
|
+
sample_files.each do |path|
|
197
|
+
FileUtils.mkdir_p File.dirname(path)
|
198
|
+
`touch #{path}`
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'remakes those directories' do
|
203
|
+
sample_files.each do |path|
|
204
|
+
expect(File.directory?(File.dirname(path))).to eq(true)
|
205
|
+
expect(File.file?(path)).to eq(true)
|
206
|
+
end
|
207
|
+
is_expected.to eq(dirs)
|
208
|
+
sample_files.each do |path|
|
209
|
+
expect(File.directory?(File.dirname(path))).to eq(true)
|
210
|
+
expect(File.file?(path)).to eq(false)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
describe '#be_file' do
|
217
|
+
context 'given a filepath' do
|
218
|
+
let(:path) do
|
219
|
+
FileUtils.mkdir_p dir
|
220
|
+
File.join(dir, 'test_file.txt')
|
221
|
+
end
|
222
|
+
|
223
|
+
subject { platform.be_file path }
|
224
|
+
|
225
|
+
it 'makes the file' do
|
226
|
+
is_expected.to eq(path)
|
227
|
+
expect(File.file?(path)).to eq(true)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
context 'given some filepaths' do
|
232
|
+
let(:paths) do
|
233
|
+
(1..3).map do |n|
|
234
|
+
FileUtils.mkdir_p dir
|
235
|
+
File.join(dir, "test_file#{n}.txt")
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
subject { platform.be_file paths }
|
240
|
+
|
241
|
+
it 'makes those files' do
|
242
|
+
is_expected.to eq(paths)
|
243
|
+
paths.each do |path|
|
244
|
+
expect(File.file?(path)).to eq(true)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
@@ -0,0 +1,274 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Comodule::Deployment::Helper::Uploader do
|
4
|
+
include_context 'deployment.platform'
|
5
|
+
include_context 'deployment.helper.uploader'
|
6
|
+
|
7
|
+
before do
|
8
|
+
platform.create
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#secret_files' do
|
12
|
+
let(:common_secret_config) do
|
13
|
+
File.join(platform.platform_root, 'secret_config.yml')
|
14
|
+
end
|
15
|
+
let(:secret_config) do
|
16
|
+
File.join(platform.platform_dir, 'secret_config.yml')
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'exists a file' do
|
20
|
+
subject { platform.secret_files }
|
21
|
+
|
22
|
+
context 'in #common_secret_config_dir' do
|
23
|
+
before do
|
24
|
+
be_files :common_secret_config_dir, ['rails/config/database.yml']
|
25
|
+
end
|
26
|
+
|
27
|
+
it_behaves_like 'has default secret_files'
|
28
|
+
|
29
|
+
it 'has the file' do
|
30
|
+
is_expected.to include(
|
31
|
+
File.join(platform.common_secret_config_dir, 'rails', 'config', 'database.yml')
|
32
|
+
)
|
33
|
+
expect(subject.size).to eq(3)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'in #secret_config_dir' do
|
38
|
+
before do
|
39
|
+
be_files :secret_config_dir, ['rails/config/database.yml']
|
40
|
+
end
|
41
|
+
|
42
|
+
it_behaves_like 'has default secret_files'
|
43
|
+
|
44
|
+
it 'has the file' do
|
45
|
+
is_expected.to include(
|
46
|
+
File.join(platform.secret_config_dir, 'rails', 'config', 'database.yml')
|
47
|
+
)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'exists some files' do
|
53
|
+
let(:files) do
|
54
|
+
['rails/config/database.yml', 'etc/nginx/ssl.pem']
|
55
|
+
end
|
56
|
+
|
57
|
+
subject { platform.secret_files }
|
58
|
+
|
59
|
+
context 'in #common_secret_config_dir' do
|
60
|
+
before do
|
61
|
+
be_files :common_secret_config_dir, files
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'has the files' do
|
65
|
+
files.each do |file|
|
66
|
+
is_expected.to include(File.join(platform.common_secret_config_dir, file))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'in $secret_config_dir' do
|
72
|
+
before do
|
73
|
+
be_files :secret_config_dir, files
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'has the files' do
|
77
|
+
files.each do |file|
|
78
|
+
is_expected.to include(File.join(platform.secret_config_dir, file))
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'in $common_secret_config_dir and $secret_config_dir' do
|
84
|
+
before do
|
85
|
+
be_files :common_secret_config_dir, files
|
86
|
+
be_files :secret_config_dir, files
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'has the files' do
|
90
|
+
files.each do |file|
|
91
|
+
is_expected.to include(File.join(platform.common_secret_config_dir, file))
|
92
|
+
end
|
93
|
+
files.each do |file|
|
94
|
+
is_expected.to include(File.join(platform.secret_config_dir, file))
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '#upload_secret_files' do
|
102
|
+
let(:common_secret_config) do
|
103
|
+
File.join(platform.platform_root, 'secret_config.yml')
|
104
|
+
end
|
105
|
+
let(:secret_config) do
|
106
|
+
File.join(platform.platform_dir, 'secret_config.yml')
|
107
|
+
end
|
108
|
+
|
109
|
+
subject { platform.upload_secret_files }
|
110
|
+
|
111
|
+
context '#config.upload_secret_files != true' do
|
112
|
+
it 'do nothing' do
|
113
|
+
expect(platform.s3).not_to receive(:bucket)
|
114
|
+
is_expected.to eq(nil)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context '#config.upload_secret_files == true' do
|
119
|
+
let(:test_dir_common) { "#{platform.test_upload_secret_files_dir}/#{platform.name}/platform" }
|
120
|
+
let(:test_dir) { "#{platform.test_upload_secret_files_dir}/#{platform.name}/platform/#{platform.name}" }
|
121
|
+
|
122
|
+
before do
|
123
|
+
platform.config.upload_secret_files = true
|
124
|
+
end
|
125
|
+
|
126
|
+
it "copies the secret files to S3" do
|
127
|
+
expect(platform).to receive(:re_dir)
|
128
|
+
expect(platform).to receive(:be_dir).with(test_dir_common)
|
129
|
+
expect(platform).to receive(:be_dir).with(test_dir)
|
130
|
+
|
131
|
+
expect(FileUtils).to receive(:cp).with(common_secret_config, test_dir_common)
|
132
|
+
expect(FileUtils).to receive(:cp).with(secret_config, test_dir)
|
133
|
+
|
134
|
+
s3_obj_common = double('s3_obj_common')
|
135
|
+
s3_obj = double('s3_obj')
|
136
|
+
|
137
|
+
expect(s3_obj_common).to receive(:write).with(
|
138
|
+
Pathname.new(common_secret_config), server_side_encryption: :aes256
|
139
|
+
)
|
140
|
+
expect(s3_obj).to receive(:write).with(
|
141
|
+
Pathname.new(secret_config), server_side_encryption: :aes256
|
142
|
+
)
|
143
|
+
|
144
|
+
allow(platform.s3).to receive_message_chain(
|
145
|
+
'bucket.objects.[]'
|
146
|
+
).with(
|
147
|
+
"#{platform.name}/platform/secret_config.yml"
|
148
|
+
).and_return(s3_obj_common)
|
149
|
+
|
150
|
+
allow(platform.s3).to receive_message_chain(
|
151
|
+
'bucket.objects.[]'
|
152
|
+
).with(
|
153
|
+
"#{platform.name}/platform/#{platform.name}/secret_config.yml"
|
154
|
+
).and_return(s3_obj)
|
155
|
+
|
156
|
+
is_expected.to eq(platform.secret_files)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe '#tmp_archives_dir' do
|
162
|
+
subject { platform.tmp_archives_dir }
|
163
|
+
|
164
|
+
it 'equals #tmp_dir/archives' do
|
165
|
+
is_expected.to eq(File.join(platform.tmp_dir, 'archives'))
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
describe '#archive_filename' do
|
170
|
+
subject { platform.archive_filename }
|
171
|
+
|
172
|
+
it do
|
173
|
+
"#{platform.project_name}-#{platform.config.platform_name}.tar.gz"
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe '#archive_path' do
|
178
|
+
subject { platform.archive_path }
|
179
|
+
|
180
|
+
it do
|
181
|
+
is_expected.to eq(
|
182
|
+
File.join(platform.tmp_archives_dir, platform.archive_filename)
|
183
|
+
)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe '#archive_s3_path' do
|
188
|
+
subject { platform.archive_s3_path }
|
189
|
+
|
190
|
+
it do
|
191
|
+
is_expected.to eq(
|
192
|
+
platform.archive_path.sub(%r|^#{platform.tmp_dir}/|, '')
|
193
|
+
)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
describe '#archive_project' do
|
198
|
+
subject { platform.archive_project }
|
199
|
+
|
200
|
+
context 'not exists #git_dir' do
|
201
|
+
it 'do nothing' do
|
202
|
+
expect(platform).to receive(:puts).with('.git not found')
|
203
|
+
expect { subject }.to raise_error(RuntimeError)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
context 'not #config.upload_project == "without_git"' do
|
208
|
+
include_context 'exists #git_dir'
|
209
|
+
|
210
|
+
it 'project with .git' do
|
211
|
+
is_expected.to eq(platform.archive_path)
|
212
|
+
expect(
|
213
|
+
File.file?(File.join(platform.tmp_project_dir, 'project_stamp.txt'))
|
214
|
+
).to eq(true)
|
215
|
+
expect(
|
216
|
+
File.file?(File.join(platform.archive_path))
|
217
|
+
).to eq(true)
|
218
|
+
expect(
|
219
|
+
File.directory?(File.join(platform.tmp_project_dir, '.git'))
|
220
|
+
).to eq(true)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
context '#config.upload_project == "without_git' do
|
225
|
+
include_context 'exists #git_dir'
|
226
|
+
|
227
|
+
before do
|
228
|
+
platform.config.upload_project = 'without_git'
|
229
|
+
end
|
230
|
+
|
231
|
+
it 'project without .git' do
|
232
|
+
is_expected.to eq(platform.archive_path)
|
233
|
+
expect(
|
234
|
+
File.file?(File.join(platform.tmp_project_dir, 'project_stamp.txt'))
|
235
|
+
).to eq(true)
|
236
|
+
expect(
|
237
|
+
File.file?(platform.archive_path)
|
238
|
+
).to eq(true)
|
239
|
+
expect(
|
240
|
+
File.directory?(File.join(platform.tmp_project_dir, '.git'))
|
241
|
+
).to eq(false)
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
describe '#download_project' do
|
247
|
+
include_context 'exists #git_dir'
|
248
|
+
|
249
|
+
subject { platform.download_project }
|
250
|
+
|
251
|
+
before do
|
252
|
+
platform.archive_project
|
253
|
+
end
|
254
|
+
|
255
|
+
it 'download tar ball' do
|
256
|
+
allow(platform).to receive_message_chain('s3.bucket.objects.[].read') do
|
257
|
+
File.open(platform.archive_path).read
|
258
|
+
end
|
259
|
+
|
260
|
+
local_dir = File.join(platform.test_dir, 'download_archive')
|
261
|
+
|
262
|
+
is_expected.to eq(
|
263
|
+
File.join(
|
264
|
+
local_dir,
|
265
|
+
File.basename(platform.archive_path)
|
266
|
+
)
|
267
|
+
)
|
268
|
+
expect(File.file?(subject)).to eq(true)
|
269
|
+
expect(
|
270
|
+
File.file?(File.join(local_dir, 'project_stamp.txt'))
|
271
|
+
).to eq(true)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|