comodule 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +6 -0
  4. data/Gemfile +0 -2
  5. data/README.md +115 -43
  6. data/comodule.gemspec +4 -2
  7. data/copy_to_rails.sh +7 -0
  8. data/lib/comodule.rb +32 -2
  9. data/lib/comodule/config_support.rb +95 -18
  10. data/lib/comodule/deployment.rb +2 -0
  11. data/lib/comodule/deployment/base.rb +186 -0
  12. data/lib/comodule/deployment/helper.rb +9 -0
  13. data/lib/comodule/deployment/helper/aws.rb +96 -0
  14. data/lib/comodule/deployment/helper/aws/base.rb +14 -0
  15. data/lib/comodule/deployment/helper/aws/cloud_formation.rb +146 -0
  16. data/lib/comodule/deployment/helper/aws/ec2.rb +37 -0
  17. data/lib/comodule/deployment/helper/aws/rds.rb +46 -0
  18. data/lib/comodule/deployment/helper/aws/s3.rb +52 -0
  19. data/lib/comodule/deployment/helper/aws/ssl.rb +111 -0
  20. data/lib/comodule/deployment/helper/base.rb +18 -0
  21. data/lib/comodule/deployment/helper/shell_command.rb +76 -0
  22. data/lib/comodule/deployment/helper/system_utility.rb +80 -0
  23. data/lib/comodule/deployment/helper/uploader.rb +155 -0
  24. data/lib/comodule/deployment/platform.rb +156 -0
  25. data/lib/comodule/deployment/platform/default_files/.gitignore.erb +5 -0
  26. data/lib/comodule/deployment/platform/default_files/aws_config.yml.erb +2 -0
  27. data/lib/comodule/version.rb +1 -1
  28. data/lib/tasks/comodule.rake +94 -0
  29. data/spec/comodule/config_support_spec.rb +102 -0
  30. data/spec/comodule/deployment/helper/aws/cloud_formation_spec.rb +71 -0
  31. data/spec/comodule/deployment/helper/aws/s3_spec.rb +85 -0
  32. data/spec/comodule/deployment/helper/shell_command_spec.rb +176 -0
  33. data/spec/comodule/deployment/helper/system_utility_spec.rb +250 -0
  34. data/spec/comodule/deployment/helper/uploader_spec.rb +274 -0
  35. data/spec/comodule/deployment/platform_spec.rb +310 -0
  36. data/spec/comodule_spec.rb +1 -1
  37. data/spec/rails/experiment/.gitignore +16 -0
  38. data/spec/rails/experiment/Gemfile +43 -0
  39. data/spec/rails/experiment/README.rdoc +28 -0
  40. data/spec/rails/experiment/Rakefile +6 -0
  41. data/spec/rails/experiment/app/assets/images/.keep +0 -0
  42. data/spec/rails/experiment/app/assets/javascripts/application.js +16 -0
  43. data/spec/rails/experiment/app/assets/javascripts/experiences.js.coffee +3 -0
  44. data/spec/rails/experiment/app/assets/stylesheets/application.css +15 -0
  45. data/spec/rails/experiment/app/assets/stylesheets/experiences.css.scss +3 -0
  46. data/spec/rails/experiment/app/assets/stylesheets/scaffolds.css.scss +69 -0
  47. data/spec/rails/experiment/app/controllers/application_controller.rb +5 -0
  48. data/spec/rails/experiment/app/controllers/concerns/.keep +0 -0
  49. data/spec/rails/experiment/app/controllers/experiences_controller.rb +74 -0
  50. data/spec/rails/experiment/app/helpers/application_helper.rb +2 -0
  51. data/spec/rails/experiment/app/helpers/experiences_helper.rb +2 -0
  52. data/spec/rails/experiment/app/mailers/.keep +0 -0
  53. data/spec/rails/experiment/app/models/.keep +0 -0
  54. data/spec/rails/experiment/app/models/concerns/.keep +0 -0
  55. data/spec/rails/experiment/app/models/experience.rb +2 -0
  56. data/spec/rails/experiment/app/views/experiences/_form.html.slim +12 -0
  57. data/spec/rails/experiment/app/views/experiences/edit.html.slim +8 -0
  58. data/spec/rails/experiment/app/views/experiences/index.html.slim +21 -0
  59. data/spec/rails/experiment/app/views/experiences/index.json.jbuilder +4 -0
  60. data/spec/rails/experiment/app/views/experiences/new.html.slim +5 -0
  61. data/spec/rails/experiment/app/views/experiences/show.html.slim +9 -0
  62. data/spec/rails/experiment/app/views/experiences/show.json.jbuilder +1 -0
  63. data/spec/rails/experiment/app/views/layouts/application.html.erb +14 -0
  64. data/spec/rails/experiment/bin/bundle +3 -0
  65. data/spec/rails/experiment/bin/rails +8 -0
  66. data/spec/rails/experiment/bin/rake +8 -0
  67. data/spec/rails/experiment/bin/spring +18 -0
  68. data/spec/rails/experiment/config.ru +4 -0
  69. data/spec/rails/experiment/config/application.rb +23 -0
  70. data/spec/rails/experiment/config/boot.rb +4 -0
  71. data/spec/rails/experiment/config/database.yml +25 -0
  72. data/spec/rails/experiment/config/environment.rb +5 -0
  73. data/spec/rails/experiment/config/environments/development.rb +37 -0
  74. data/spec/rails/experiment/config/environments/production.rb +78 -0
  75. data/spec/rails/experiment/config/environments/test.rb +39 -0
  76. data/spec/rails/experiment/config/experiment_unicorn.rb +104 -0
  77. data/spec/rails/experiment/config/initializers/assets.rb +8 -0
  78. data/spec/rails/experiment/config/initializers/backtrace_silencers.rb +7 -0
  79. data/spec/rails/experiment/config/initializers/cookies_serializer.rb +3 -0
  80. data/spec/rails/experiment/config/initializers/filter_parameter_logging.rb +4 -0
  81. data/spec/rails/experiment/config/initializers/inflections.rb +16 -0
  82. data/spec/rails/experiment/config/initializers/mime_types.rb +4 -0
  83. data/spec/rails/experiment/config/initializers/session_store.rb +3 -0
  84. data/spec/rails/experiment/config/initializers/wrap_parameters.rb +14 -0
  85. data/spec/rails/experiment/config/locales/en.yml +23 -0
  86. data/spec/rails/experiment/config/routes.rb +59 -0
  87. data/spec/rails/experiment/config/secrets.yml +22 -0
  88. data/spec/rails/experiment/db/migrate/20141004050218_create_experiences.rb +9 -0
  89. data/spec/rails/experiment/db/schema.rb +22 -0
  90. data/spec/rails/experiment/db/seeds.rb +7 -0
  91. data/spec/rails/experiment/lib/assets/.keep +0 -0
  92. data/spec/rails/experiment/lib/tasks/.keep +0 -0
  93. data/spec/rails/experiment/log/.keep +0 -0
  94. data/spec/rails/experiment/platform/.gitignore +5 -0
  95. data/spec/rails/experiment/platform/ami/cloud_formation/.keep +0 -0
  96. data/spec/rails/experiment/platform/ami/cloud_formation/template.json.erb +138 -0
  97. data/spec/rails/experiment/platform/ami/config.yml +5 -0
  98. data/spec/rails/experiment/platform/ami/config/.keep +0 -0
  99. data/spec/rails/experiment/platform/cloud_formation/.keep +0 -0
  100. data/spec/rails/experiment/platform/config.yml +18 -0
  101. data/spec/rails/experiment/platform/config/.keep +0 -0
  102. data/spec/rails/experiment/platform/config/nginx/conf.d/default.conf.erb +46 -0
  103. data/spec/rails/experiment/platform/config/nginx/nginx.conf.erb +53 -0
  104. data/spec/rails/experiment/platform/deployment/cloud_formation/.keep +0 -0
  105. data/spec/rails/experiment/platform/deployment/cloud_formation/template.json.erb +107 -0
  106. data/spec/rails/experiment/platform/deployment/config.yml +16 -0
  107. data/spec/rails/experiment/platform/deployment/config/.keep +0 -0
  108. data/spec/rails/experiment/public/404.html +67 -0
  109. data/spec/rails/experiment/public/422.html +67 -0
  110. data/spec/rails/experiment/public/500.html +66 -0
  111. data/spec/rails/experiment/public/favicon.ico +0 -0
  112. data/spec/rails/experiment/public/robots.txt +5 -0
  113. data/spec/rails/experiment/test/controllers/.keep +0 -0
  114. data/spec/rails/experiment/test/controllers/experiences_controller_test.rb +49 -0
  115. data/spec/rails/experiment/test/fixtures/.keep +0 -0
  116. data/spec/rails/experiment/test/fixtures/experiences.yml +7 -0
  117. data/spec/rails/experiment/test/helpers/.keep +0 -0
  118. data/spec/rails/experiment/test/helpers/experiences_helper_test.rb +4 -0
  119. data/spec/rails/experiment/test/integration/.keep +0 -0
  120. data/spec/rails/experiment/test/mailers/.keep +0 -0
  121. data/spec/rails/experiment/test/models/.keep +0 -0
  122. data/spec/rails/experiment/test/models/experience_test.rb +7 -0
  123. data/spec/rails/experiment/test/test_helper.rb +10 -0
  124. data/spec/rails/experiment/vendor/assets/javascripts/.keep +0 -0
  125. data/spec/rails/experiment/vendor/assets/stylesheets/.keep +0 -0
  126. data/spec/spec_helper.rb +3 -0
  127. data/spec/support/deployment/helper/shell_command_support.rb +34 -0
  128. data/spec/support/deployment/helper/uploader_support.rb +21 -0
  129. data/spec/support/deployment/platform_support.rb +32 -0
  130. metadata +262 -21
  131. data/lib/comodule/customize_class/hash_custom.rb +0 -20
  132. 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