eb_deployer 0.3.8 → 0.3.9

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/test/deploy_test.rb CHANGED
@@ -8,450 +8,7 @@ class DeployTest < MiniTest::Unit::TestCase
8
8
  @sample_package = sample_file('app-package.war')
9
9
  end
10
10
 
11
- def test_deployment_with_s3_package_specification
12
- File.open('mingle_package.yml', 'w') do |f|
13
- f.write("s3_bucket: test-bucket\n")
14
- f.write("s3_key: test-mingle.war")
15
- end
16
-
17
- deploy(:application => 'simple', :environment => "production",
18
- :package => 'mingle_package.yml', :version_label => 1)
19
- assert @eb_driver.application_exists?('simple')
20
- last_version = @eb_driver.application_versions('simple').last
21
- assert_equal({'s3_bucket' => 'test-bucket', 's3_key' => 'test-mingle.war'}, last_version[:source_bundle])
22
- ensure
23
- FileUtils.rm_rf('mingle_package.yml')
24
- end
25
-
26
- def test_first_deployment_create_eb_application
27
- assert !@eb_driver.application_exists?('simple')
28
- deploy(:application => 'simple', :environment => "production")
29
- assert @eb_driver.application_exists?('simple')
30
- end
31
-
32
- def test_set_option_settings_on_deployment
33
- redudant = [{:namespace => 'aws:autoscaling:launchconfiguration',
34
- :option_name => 'MinSize',
35
- :value => '2' }]
36
- deploy(:application => 'simple', :environment => "production",
37
- :option_settings => [redudant])
38
-
39
- assert_equal [redudant], @eb_driver.environment_settings('simple', 'production')
40
-
41
- end
42
-
43
- def test_destroy_should_clean_up_eb_application_and_env
44
- deploy(:application => 'simple', :environment => "production")
45
- destroy(:application => 'simple')
46
- assert !@eb_driver.application_exists?('simple')
47
- assert !@eb_driver.environment_exists?('simple', 'production')
48
- end
49
-
50
- def test_first_deployment_create_environment
51
- assert !@eb_driver.environment_exists?('simple', 'production')
52
- deploy(:application => 'simple', :environment => "production")
53
- assert @eb_driver.environment_exists?('simple', 'production')
54
- end
55
-
56
- def test_support_very_very_long_app_name
57
- deploy(:application => 'ver-very-simple-application', :environment => "production")
58
- assert @eb_driver.environment_exists?('ver-very-simple-application', 'production')
59
- end
60
-
61
- def test_should_raise_error_when_env_name_is_too_long
62
- assert_raises(RuntimeError) { deploy(:application => 'simple', :environment => "p" * 24) }
63
- end
64
-
65
- def test_update_environment_with_new_version_should_change_version_that_deployed
66
- deploy(:application => 'simple',
67
- :environment => "production",
68
- :version_label => 1)
69
- assert_equal '1', @eb_driver.environment_verion_label('simple', 'production')
70
-
71
- deploy(:application => 'simple',
72
- :environment => "production",
73
- :version_label => 2)
74
-
75
- assert_equal '2', @eb_driver.environment_verion_label('simple', 'production')
76
- end
77
-
78
- def test_version_prefix_should_be_prepended_to_version_label
79
- deploy(:application => 'simple',
80
- :environment => "production",
81
- :version_label => 1,
82
- :version_prefix => "prod-")
83
- assert_equal 'prod-1', @eb_driver.environment_verion_label('simple', 'production')
84
- end
85
-
86
- def test_should_keep_only_number_of_versions_specified
87
- deploy(:application => 'simple',
88
- :environment => "production",
89
- :version_label => 1)
90
-
91
- deploy(:application => 'simple',
92
- :environment => "production",
93
- :version_label => 2)
94
-
95
- deploy(:application => 'simple',
96
- :environment => "production",
97
- :version_label => 3,
98
- :keep_latest => 2)
99
-
100
- assert_equal '1', @eb_driver.versions_deleted('simple').first
101
- end
102
-
103
- def test_should_only_remove_versions_with_matching_prefix
104
- deploy(:application => 'simple',
105
- :environment => "production",
106
- :version_label => 1,
107
- :version_prefix => "prod1-",
108
- :keep_latest => 1)
109
- deploy(:application => 'simple',
110
- :environment => "production",
111
- :version_label => 2,
112
- :version_prefix => "prod1-",
113
- :keep_latest => 1)
114
- deploy(:application => 'simple',
115
- :environment => "production",
116
- :version_label => 1,
117
- :version_prefix => "prod2-",
118
- :keep_latest => 1)
119
-
120
- assert_equal 'prod1-1', @eb_driver.versions_deleted('simple').first
121
- assert_equal 1, @eb_driver.versions_deleted('simple').count
122
-
123
- app_versions = @eb_driver.application_versions('simple').map { |apv| apv[:version_label] }
124
- assert_equal ["prod1-2", "prod2-1"], app_versions
125
- end
126
-
127
- def test_default_cname_that_deployed_should_app_env_name
128
- deploy(:application => 'simple',
129
- :environment => "production",
130
- :version_label => 42)
131
- assert_equal "simple-production", @eb_driver.environment_cname_prefix('simple', 'production')
132
- end
133
-
134
- def test_cname_prefix_can_be_override
135
- deploy(:application => 'simple',
136
- :environment => "production",
137
- :cname_prefix => 'sports123',
138
- :version_label => 42)
139
- assert_equal "sports123", @eb_driver.environment_cname_prefix('simple', 'production')
140
- end
141
-
142
- def test_smoke_test_should_be_run_after_env_created_or_update
143
- host_for_smoke_test = nil
144
- deploy(:application => 'simple',
145
- :environment => "production",
146
- :cname_prefix => 'foobar',
147
- :smoke_test => lambda { |host| host_for_smoke_test = host },
148
- :version_label => 42)
149
- assert_equal 'foobar.elasticbeanstalk.com', host_for_smoke_test
150
-
151
- host_for_smoke_test = nil
152
- deploy(:application => 'simple',
153
- :environment => "production",
154
- :cname_prefix => 'foobar',
155
- :smoke_test => lambda { |host| host_for_smoke_test = host },
156
- :version_label => 43)
157
-
158
- assert_equal 'foobar.elasticbeanstalk.com', host_for_smoke_test
159
- end
160
-
161
- def test_blue_green_deployment_strategy_should_create_blue_env_on_first_deployment
162
- deploy(:application => 'simple',
163
- :environment => "production",
164
- :strategy => 'blue-green',
165
- :version_label => 42)
166
-
167
- assert @eb_driver.environment_exists?('simple', 'production-a')
168
- assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-a')
169
- end
170
-
171
-
172
- def test_blue_green_deployment_should_create_green_env_if_blue_exists
173
- deploy(:application => 'simple',
174
- :environment => "production",
175
- :strategy => 'blue-green',
176
- :version_label => 42)
177
-
178
- deploy(:application => 'simple',
179
- :environment => "production",
180
- :strategy => 'blue-green',
181
- :version_label => 43)
182
-
183
- assert @eb_driver.environment_exists?('simple', 'production-a')
184
- assert @eb_driver.environment_exists?('simple', 'production-b')
185
- end
186
-
187
-
188
- def test_blue_green_deployment_should_swap_cname_to_make_active_most_recent_updated_env
189
- deploy(:application => 'simple',
190
- :environment => "production",
191
- :strategy => 'blue-green',
192
- :version_label => 42)
193
-
194
- deploy(:application => 'simple',
195
- :environment => "production",
196
- :strategy => 'blue-green',
197
- :version_label => 43)
198
-
199
- assert_match(/simple-production-inactive/, @eb_driver.environment_cname_prefix('simple', 'production-a'))
200
-
201
- assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-b')
202
-
203
-
204
- deploy(:application => 'simple',
205
- :environment => "production",
206
- :strategy => 'blue-green',
207
- :version_label => 44)
208
-
209
- assert_match(/simple-production-inactive/, @eb_driver.environment_cname_prefix('simple', 'production-b'))
210
-
211
- assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-a')
212
- end
213
-
214
-
215
- def test_blue_green_deploy_should_run_smoke_test_before_cname_switch
216
- smoked_host = []
217
- smoke_test = lambda { |host| smoked_host << host }
218
- [42, 43, 44].each do |version_label|
219
- deploy(:application => 'simple',
220
- :environment => "production",
221
- :strategy => 'blue-green',
222
- :smoke_test => smoke_test,
223
- :version_label => version_label)
224
- end
225
-
226
- assert_equal ['simple-production.elasticbeanstalk.com',
227
- 'simple-production-inactive.elasticbeanstalk.com',
228
- 'simple-production-inactive.elasticbeanstalk.com'], smoked_host
229
- end
230
-
231
- def test_deploy_with_resources_declared_will_create_a_cf_stack_for_env
232
- cf_template = temp_file(JSON.dump({'Resources' => {'R1' => {}}}))
233
- deploy(:application => 'simple', :environment => "production",
234
- :resources => {
235
- :template => cf_template
236
- })
237
- assert @cf_driver.stack_exists?('simple-production')
238
- assert_equal({}, @cf_driver.stack_config('simple-production')[:parameters])
239
- assert_equal([], @cf_driver.stack_config('simple-production')[:capabilities])
240
- end
241
-
242
- def test_provision_resources_with_capacities
243
- cf_template = temp_file(JSON.dump({'Resources' => {'R1' => {}}}))
244
- deploy(:application => 'simple', :environment => "production",
245
- :resources => {
246
- :template => cf_template,
247
- :capabilities => ['CAPABILITY_IAM']
248
- })
249
- assert_equal ['CAPABILITY_IAM'], @cf_driver.stack_config('simple-production')[:capabilities]
250
- end
251
-
252
- def test_provision_resources_with_parameters
253
- cf_template = temp_file(JSON.dump({'Resources' => {'R1' => {}}}))
254
- deploy(:application => 'simple', :environment => "production",
255
- :resources => {
256
- :template => cf_template,
257
- :parameters => {'a' => 1}
258
- })
259
- assert_equal({'a' => 1 }, @cf_driver.stack_config('simple-production')[:parameters])
260
- end
261
-
262
- def test_skip_resource_update
263
- cf_template = temp_file(JSON.dump({'Resources' => {'R1' => {}}}))
264
- deploy(:application => 'simple', :environment => "production",
265
- :resources => {
266
- :template => cf_template,
267
- :parameters => {'a' => 1 }
268
- })
269
- assert_equal(1, @cf_driver.stack_config('simple-production')[:parameters]['a'])
270
- deploy(:application => 'simple', :environment => "production",
271
- :resources => {
272
- :template => cf_template,
273
- :parameters => {'a' => 2 }
274
- })
275
- assert_equal(2, @cf_driver.stack_config('simple-production')[:parameters]['a'])
276
- deploy(:application => 'simple',
277
- :environment => "production",
278
- :skip_resource_stack_update => true,
279
- :resources => {
280
- :template => cf_template,
281
- :parameters => {'a' => 3 }
282
- })
283
- assert_equal(2, @cf_driver.stack_config('simple-production')[:parameters]['a'])
284
- end
285
-
286
- def test_should_still_query_output_to_set_eb_options_even_skip_resources_update_is_specified
287
- cf_template = temp_file(JSON.dump({'Resources' => {'R1' => {}},
288
- 'Outputs' => {'O1' => {}, 'O2' => {}}}))
289
- deploy(:application => 'simple', :environment => "production",
290
- :resources => {
291
- :template => cf_template
292
- })
293
-
294
- deploy(:application => 'simple', :environment => "production",
295
- :skip_resource_stack_update => true,
296
- :resources => {
297
- :template => cf_template,
298
- :transforms => {
299
- 'O2' => lambda { |v| {:namespace => 'aws.foo', :option_name => 'o2', :value => "transformed " + v} }
300
- }
301
- })
302
-
303
- assert @eb_driver.environment_settings('simple', 'production').
304
- include?({:namespace => 'aws.foo', :option_name => 'o2', :value => 'transformed value of O2'})
305
- end
306
-
307
-
308
- def test_set_s3_bucket_name_on_deployment
309
- deploy(:application => 'simple',
310
- :environment => "production",
311
- :package_bucket => 'thoughtworks.simple')
312
-
313
- assert @s3_driver.bucket_exists?('thoughtworks.simple.packages')
314
- end
315
-
316
- def test_transforms_resource_provsion_output_to_elastic_beanstalk_settings
317
- cf_template = temp_file(JSON.dump({
318
- 'Resources' => {'R1' => {}},
319
- 'Outputs' => {'O1' => {}, 'O2' => {}}
320
- }))
321
- deploy(:application => 'simple', :environment => "production",
322
- :resources => {
323
- :template => cf_template,
324
- :transforms => {
325
- 'O1' => lambda { |v| {:namespace => 'aws.foo', :option_name => 'o1', :value => v} }
326
- }
327
- })
328
- assert @eb_driver.environment_settings('simple', 'production').
329
- include?({:namespace => 'aws.foo', :option_name => 'o1', :value => 'value of O1'})
330
- end
331
-
332
- def test_can_query_resource_stack_output_after_deploy
333
- cf_template = temp_file(JSON.dump({
334
- 'Resources' => {'R1' => {}},
335
- 'Outputs' => {'O1' => {}, 'O2' => {}}
336
- }))
337
- deploy(:application => 'simple',
338
- :environment => "production",
339
- :resources => { :template => cf_template })
340
- assert_equal 'value of O1', query_resource_output('O1',
341
- :application => 'simple',
342
- :environment => "production")
343
- assert_equal 'value of O2', query_resource_output('O2',
344
- :application => 'simple',
345
- :environment => "production")
346
-
347
- end
348
-
349
- def test_should_raise_error_if_query_resources_that_have_not_been_provisioned_yet
350
- assert_raises(EbDeployer::ResourceNotInReadyState) do
351
- query_resource_output('O1',
352
- :application => 'simple',
353
- :environment => "production")
354
- end
355
- end
356
-
357
- def test_should_terminate_old_environment_if_phoenix_mode_is_enabled
358
- deploy(:application => 'simple', :environment => "production", :phoenix_mode => true)
359
- assert @eb_driver.environment_exists?('simple', 'production')
360
- deploy(:application => 'simple', :environment => "production", :phoenix_mode => true)
361
- assert @eb_driver.environments_been_deleted('simple').include?('production')
362
- assert @eb_driver.environment_exists?('simple', 'production')
363
- end
364
-
365
- def test_blue_green_deployment_should_delete_and_recreate_inactive_env_if_phoenix_mode_is_enabled
366
- deploy(:application => 'simple',
367
- :environment => "production",
368
- :strategy => 'blue-green',
369
- :version_label => 42,
370
- :phoenix_mode => true)
371
-
372
- deploy(:application => 'simple',
373
- :environment => "production",
374
- :strategy => 'blue-green',
375
- :version_label => 43,
376
- :phoenix_mode => true)
377
-
378
- assert_equal [], @eb_driver.environments_been_deleted('simple')
379
-
380
- inactive_env = 'production-a'
381
- assert_match(/inactive/, @eb_driver.environment_cname_prefix('simple', inactive_env))
382
-
383
-
384
- deploy(:application => 'simple',
385
- :environment => "production",
386
- :strategy => 'blue-green',
387
- :version_label => 44,
388
- :phoenix_mode => true)
389
-
390
- assert_equal [inactive_env], @eb_driver.environments_been_deleted('simple')
391
-
392
- assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', inactive_env)
393
- end
394
-
395
- def test_pass_pathname_as_package_file
396
- deploy(:package => Pathname.new(@sample_package),
397
- :application => 'simple',
398
- :environment => "production",
399
- :package_bucket => 'thoughtworks.simple')
400
-
401
- s3_objects = @s3_driver.objects('thoughtworks.simple.packages')
402
- assert_equal 1, s3_objects.size
403
- assert_equal @sample_package, s3_objects.values.first.to_s
404
- end
405
-
406
- def test_sets_default_tier_as_webserver
407
- deploy(:application => 'simple', :environment => "production")
408
- assert_equal EbDeployer.environment_tier('WebServer'), @eb_driver.environment_tier('simple', 'production')
409
- end
410
-
411
- def test_can_change_tier
412
- deploy(:application => 'simple', :environment => "production", :tier => 'Worker')
413
- assert_equal EbDeployer.environment_tier('Worker'), @eb_driver.environment_tier('simple', 'production')
414
- end
415
-
416
- def test_should_raise_error_when_tier_setting_is_not_recognized
417
- assert_raises(RuntimeError) do
418
- deploy(:application => 'simple', :environment => "production", :tier => 'Gum')
419
- end
420
- end
421
-
422
- def test_pass_s3_object_name_as_package_file
423
- package_name = 'test-bucket:test-mingle.war'
424
-
425
- deploy(:package => package_name,
426
- :application => 'simple',
427
- :environment => "production",
428
- :version_label => 1)
429
-
430
- assert @eb_driver.application_exists?('simple')
431
- last_version = @eb_driver.application_versions('simple').last
432
- assert_equal({'s3_bucket' => 'test-bucket', 's3_key' => 'test-mingle.war'}, last_version[:source_bundle])
433
- end
434
-
435
- # def test_deploy_with_components
436
- # deploy(:application => 'simple',
437
- # :environment => 'production',
438
- # :components => [{ :name => 'web' }])
439
-
440
- # assert @eb_driver.environment_exists?('simple', 'production-web')
441
- # end
442
-
443
- def test_should_clean_up_legacy_environment_on_deploy
444
- legacy_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production")
445
- @eb_driver.create_application("simple")
446
- @eb_driver.create_environment("simple", legacy_env_name, 'solution-stack', 'simple-production', 'foo', 'web' ,{})
447
- deploy(:application => 'simple',
448
- :environment => 'production',
449
- :version_label => 1)
450
- assert @eb_driver.environment_exists?("simple", "production")
451
- assert !@eb_driver.environment_exists?("simple", legacy_env_name)
452
- end
453
-
454
- private
11
+ protected
455
12
 
456
13
  def temp_file(content)
457
14
  f = Tempfile.new("foo")
@@ -55,17 +55,16 @@ class EbEnvironmentTest < MiniTest::Unit::TestCase
55
55
 
56
56
  def test_should_raise_runtime_error_when_deploy_failed
57
57
  env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
58
- env.event_poller = PollerStub.new(["start deploying", "Failed to deploy application"])
58
+ @eb_driver.set_events("myapp", "production", ["start deploying", "Failed to deploy application"])
59
59
  assert_raises(RuntimeError) { env.deploy("version 1") }
60
60
  end
61
61
 
62
62
  def test_should_raise_runtime_error_when_eb_extension_execution_failed
63
63
  env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
64
-
65
- env.event_poller = PollerStub.new(["start deploying",
66
- "create environment",
67
- "Command failed on instance. Return code: 1 Output: Error occurred during build: Command hooks failed",
68
- "Successfully launched environment"])
64
+ @eb_driver.set_events("myapp", "production", ["start deploying",
65
+ "create environment",
66
+ "Command failed on instance. Return code: 1 Output: Error occurred during build: Command hooks failed",
67
+ "Successfully launched environment"])
69
68
 
70
69
  assert_raises(RuntimeError) { env.deploy("version 1") }
71
70
  end
@@ -78,6 +77,62 @@ class EbEnvironmentTest < MiniTest::Unit::TestCase
78
77
  assert !@eb_driver.environment_exists?('myapp', 'production')
79
78
  end
80
79
 
80
+ def test_should_terminate_legacy_env_upon_deployment
81
+ legacy_env_name = create_legacy_env("myapp", "production", "myapp-production")
82
+ env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
83
+ @eb_driver.set_events("myapp", legacy_env_name, ["terminateEnvironment completed successfully"])
84
+ @eb_driver.set_events("myapp", "production", ["Successfully launched environment"])
85
+ env.deploy("version1")
86
+ assert !@eb_driver.environment_exists?("myapp", legacy_env_name)
87
+ assert @eb_driver.environment_exists?("myapp", "production")
88
+ end
89
+
90
+ def test_can_find_cname_if_legacy_env_exists
91
+ legacy_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("myapp", "production")
92
+ @eb_driver.create_environment("myapp", legacy_env_name, 'solution-stack', 'myapp-production', 'foo', 'web' ,{})
93
+ env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
94
+ assert_equal 'myapp-production', env.cname_prefix
95
+ end
96
+
97
+ def test_terminate_legacy_env
98
+ legacy_env_name = create_legacy_env("myapp", "production", "myapp-production")
99
+ env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
100
+ env.terminate
101
+ assert !@eb_driver.environment_exists?("myapp", legacy_env_name)
102
+ end
103
+
104
+ def test_swap_legacy_env_with_non_legacy_env
105
+ create_legacy_env("myapp", "production-a", "myapp-production")
106
+ env_a = EbDeployer::EbEnvironment.new("myapp", "production-a", @eb_driver)
107
+ env_b = EbDeployer::EbEnvironment.new("myapp", "production-b", @eb_driver, :cname_prefix => 'myapp-production-inactive')
108
+ env_b.deploy('version1')
109
+
110
+ env_a.swap_cname_with(env_b)
111
+
112
+ assert_equal "myapp-production-inactive", env_a.cname_prefix
113
+ assert_equal "myapp-production", env_b.cname_prefix
114
+ end
115
+
116
+ def test_swap_no_legacy_env_with_legacy_env
117
+ create_legacy_env("myapp", "production-a", "myapp-production")
118
+ env_a = EbDeployer::EbEnvironment.new("myapp", "production-a", @eb_driver)
119
+ env_b = EbDeployer::EbEnvironment.new("myapp", "production-b", @eb_driver, :cname_prefix => 'myapp-production-inactive')
120
+ env_b.deploy('version1')
121
+
122
+ env_b.swap_cname_with(env_a)
123
+
124
+ assert_equal "myapp-production-inactive", env_a.cname_prefix
125
+ assert_equal "myapp-production", env_b.cname_prefix
126
+ end
127
+
128
+ private
129
+
130
+ def create_legacy_env(app_name, env_name, cname_prefix)
131
+ legacy_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name(app_name, env_name)
132
+ @eb_driver.create_environment(app_name, legacy_env_name, 'solution-stack', cname_prefix, 'foo', 'web' ,{})
133
+ legacy_env_name
134
+ end
135
+
81
136
 
82
137
 
83
138
  end
@@ -0,0 +1,85 @@
1
+ require 'deploy_test'
2
+
3
+ class InplaceUpdateDeployTest < DeployTest
4
+ def test_first_deployment_create_eb_application
5
+ assert !@eb_driver.application_exists?('simple')
6
+ deploy(:application => 'simple', :environment => "production")
7
+ assert @eb_driver.application_exists?('simple')
8
+ end
9
+
10
+ def test_set_option_settings_on_deployment
11
+ redudant = [{:namespace => 'aws:autoscaling:launchconfiguration',
12
+ :option_name => 'MinSize',
13
+ :value => '2' }]
14
+ deploy(:application => 'simple', :environment => "production",
15
+ :option_settings => [redudant])
16
+
17
+ assert_equal [redudant], @eb_driver.environment_settings('simple', 'production')
18
+
19
+ end
20
+
21
+ def test_destroy_should_clean_up_eb_application_and_env
22
+ deploy(:application => 'simple', :environment => "production")
23
+ destroy(:application => 'simple')
24
+ assert !@eb_driver.application_exists?('simple')
25
+ assert !@eb_driver.environment_exists?('simple', 'production')
26
+ end
27
+
28
+ def test_first_deployment_create_environment
29
+ assert !@eb_driver.environment_exists?('simple', 'production')
30
+ deploy(:application => 'simple', :environment => "production")
31
+ assert @eb_driver.environment_exists?('simple', 'production')
32
+ end
33
+
34
+ def test_support_very_very_long_app_name
35
+ deploy(:application => 'ver-very-simple-application', :environment => "production")
36
+ assert @eb_driver.environment_exists?('ver-very-simple-application', 'production')
37
+ end
38
+
39
+ def test_should_raise_error_when_env_name_is_too_long
40
+ assert_raises(RuntimeError) { deploy(:application => 'simple', :environment => "p" * 24) }
41
+ end
42
+
43
+ def test_update_environment_with_new_version_should_change_version_that_deployed
44
+ deploy(:application => 'simple',
45
+ :environment => "production",
46
+ :version_label => 1)
47
+ assert_equal '1', @eb_driver.environment_verion_label('simple', 'production')
48
+
49
+ deploy(:application => 'simple',
50
+ :environment => "production",
51
+ :version_label => 2)
52
+
53
+ assert_equal '2', @eb_driver.environment_verion_label('simple', 'production')
54
+ end
55
+
56
+ def test_smoke_test_should_be_run_after_env_created_or_update
57
+ host_for_smoke_test = nil
58
+ deploy(:application => 'simple',
59
+ :environment => "production",
60
+ :cname_prefix => 'foobar',
61
+ :smoke_test => lambda { |host| host_for_smoke_test = host },
62
+ :version_label => 42)
63
+ assert_equal 'foobar.elasticbeanstalk.com', host_for_smoke_test
64
+
65
+ host_for_smoke_test = nil
66
+ deploy(:application => 'simple',
67
+ :environment => "production",
68
+ :cname_prefix => 'foobar',
69
+ :smoke_test => lambda { |host| host_for_smoke_test = host },
70
+ :version_label => 43)
71
+
72
+ assert_equal 'foobar.elasticbeanstalk.com', host_for_smoke_test
73
+ end
74
+
75
+ def test_should_terminate_old_environment_if_phoenix_mode_is_enabled
76
+ deploy(:application => 'simple', :environment => "production", :phoenix_mode => true)
77
+ assert @eb_driver.environment_exists?('simple', 'production')
78
+ deploy(:application => 'simple', :environment => "production", :phoenix_mode => true)
79
+ assert @eb_driver.environments_been_deleted('simple').include?('production')
80
+ assert @eb_driver.environment_exists?('simple', 'production')
81
+ end
82
+
83
+
84
+
85
+ end