comodule 0.0.4 → 0.1.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.
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