automan 2.3.6 → 2.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -0
  5. data/Rakefile +5 -0
  6. data/automan.gemspec +3 -3
  7. data/lib/automan/base.rb +7 -3
  8. data/lib/automan/beanstalk/deployer.rb +1 -1
  9. data/lib/automan/beanstalk/package.rb +1 -1
  10. data/lib/automan/beanstalk/router.rb +1 -1
  11. data/lib/automan/cli/snapper.rb +29 -29
  12. data/lib/automan/cli/stacker.rb +19 -0
  13. data/lib/automan/cloudformation/launcher.rb +6 -3
  14. data/lib/automan/cloudformation/replacer.rb +1 -1
  15. data/lib/automan/cloudformation/terminator.rb +1 -1
  16. data/lib/automan/ec2/image.rb +3 -3
  17. data/lib/automan/elasticache/router.rb +79 -0
  18. data/lib/automan/mixins/aws_caller.rb +21 -7
  19. data/lib/automan/rds/snapshot.rb +35 -14
  20. data/lib/automan/s3/downloader.rb +10 -1
  21. data/lib/automan/version.rb +1 -1
  22. data/lib/automan.rb +1 -0
  23. data/spec/beanstalk/application_spec.rb +17 -17
  24. data/spec/beanstalk/configuration_spec.rb +24 -24
  25. data/spec/beanstalk/deployer_spec.rb +65 -65
  26. data/spec/beanstalk/router_spec.rb +18 -19
  27. data/spec/beanstalk/terminator_spec.rb +16 -16
  28. data/spec/beanstalk/uploader_spec.rb +13 -13
  29. data/spec/beanstalk/version_spec.rb +8 -10
  30. data/spec/cloudformation/launcher_spec.rb +63 -65
  31. data/spec/cloudformation/replacer_spec.rb +10 -10
  32. data/spec/cloudformation/terminator_spec.rb +23 -23
  33. data/spec/cloudformation/uploader_spec.rb +13 -13
  34. data/spec/ec2/image_spec.rb +55 -55
  35. data/spec/ec2/instance_spec.rb +17 -17
  36. data/spec/elasticache/router_spec.rb +29 -0
  37. data/spec/mixins/aws_caller_spec.rb +9 -9
  38. data/spec/mixins/utils_spec.rb +27 -28
  39. data/spec/rds/snapshot_spec.rb +44 -46
  40. data/templates/stacker/.env.example +14 -0
  41. data/templates/stacker/.gitignore +2 -0
  42. data/templates/stacker/.ruby-gemset.tt +1 -0
  43. data/templates/stacker/.ruby-version +1 -0
  44. data/templates/stacker/Gemfile +4 -0
  45. data/templates/stacker/bin/%app_name%.tt +62 -0
  46. data/templates/stacker/bin/launch_%app_name%.sh.tt +12 -0
  47. metadata +20 -7
@@ -23,10 +23,10 @@ describe Automan::Beanstalk::Configuration do
23
23
  describe '#config_template_exists?' do
24
24
 
25
25
  it 'returns false if raises InvalidParameterValue with missing config template message' do
26
- c.eb = double(:eb)
27
26
  error = AWS::ElasticBeanstalk::Errors::InvalidParameterValue.new('No Configuration Template named')
28
- c.eb.stub(:describe_configuration_settings).and_raise(error)
29
- c.config_template_exists?.should be_false
27
+ subject.eb = double()
28
+ allow(subject.eb).to receive(:describe_configuration_settings).and_raise(error)
29
+ expect(subject.config_template_exists?).to be_falsey
30
30
  end
31
31
  end
32
32
 
@@ -48,51 +48,51 @@ describe Automan::Beanstalk::Configuration do
48
48
  }
49
49
  ]
50
50
 
51
- c.fix_config_keys(config_before).should eq(config_after)
51
+ expect(subject.fix_config_keys(config_before)).to eq(config_after)
52
52
  end
53
53
  end
54
54
 
55
55
  describe '#create' do
56
56
  it 'does not create if configuration exists' do
57
- c.stub(:config_template_exists?).and_return(true)
58
- c.should_not_receive(:create_config_template)
59
- c.create
57
+ allow(subject).to receive(:config_template_exists?).and_return(true)
58
+ expect(subject).to_not receive(:create_config_template)
59
+ subject.create
60
60
  end
61
61
 
62
62
  it 'does create if configuration does not exist' do
63
- c.stub(:config_template_exists?).and_return(false)
64
- c.should_receive(:create_config_template)
65
- c.create
63
+ allow(subject).to receive(:config_template_exists?).and_return(false)
64
+ expect(subject).to receive(:create_config_template)
65
+ subject.create
66
66
  end
67
67
  end
68
68
 
69
69
  describe '#delete' do
70
70
  it 'does delete if configuration exists' do
71
- c.stub(:config_template_exists?).and_return(true)
72
- c.should_receive(:delete_config_template)
73
- c.delete
71
+ allow(subject).to receive(:config_template_exists?).and_return(true)
72
+ expect(subject).to receive(:delete_config_template)
73
+ subject.delete
74
74
  end
75
75
 
76
76
  it 'does not delete if configuration does not exist' do
77
- c.stub(:config_template_exists?).and_return(false)
78
- c.should_not_receive(:delete_config_template)
79
- c.delete
77
+ allow(subject).to receive(:config_template_exists?).and_return(false)
78
+ expect(subject).to_not receive(:delete_config_template)
79
+ subject.delete
80
80
  end
81
81
  end
82
82
 
83
83
  describe '#update' do
84
84
  it 'deletes configuration and recreates it if it exists' do
85
- c.stub(:config_template_exists?).and_return(true)
86
- c.should_receive(:delete_config_template)
87
- c.should_receive(:create_config_template)
88
- c.update
85
+ allow(subject).to receive(:config_template_exists?).and_return(true)
86
+ expect(subject).to receive(:delete_config_template)
87
+ expect(subject).to receive(:create_config_template)
88
+ subject.update
89
89
  end
90
90
 
91
91
  it 'does not try to delete configuration if it does not exist' do
92
- c.stub(:config_template_exists?).and_return(false)
93
- c.should_not_receive(:delete_config_template)
94
- c.should_receive(:create_config_template)
95
- c.update
92
+ allow(subject).to receive(:config_template_exists?).and_return(false)
93
+ expect(subject).to_not receive(:delete_config_template)
94
+ expect(subject).to receive(:create_config_template)
95
+ subject.update
96
96
  end
97
97
  end
98
98
  end
@@ -2,59 +2,59 @@ require "automan"
2
2
 
3
3
  describe Automan::Beanstalk::Deployer do
4
4
 
5
- it { should respond_to :name }
6
- it { should respond_to :version_label }
7
- it { should respond_to :package }
8
- it { should respond_to :environment }
9
- it { should respond_to :manifest }
10
- it { should respond_to :read_manifest }
11
- it { should respond_to :manifest_exists? }
12
- it { should respond_to :package_exists? }
13
- it { should respond_to :environment_status }
14
- it { should respond_to :configuration_template }
15
- it { should respond_to :deploy }
16
- it { should respond_to :update_environment }
17
- it { should respond_to :create_environment }
5
+ it { is_expected.to respond_to :name }
6
+ it { is_expected.to respond_to :version_label }
7
+ it { is_expected.to respond_to :package }
8
+ it { is_expected.to respond_to :environment }
9
+ it { is_expected.to respond_to :manifest }
10
+ it { is_expected.to respond_to :read_manifest }
11
+ it { is_expected.to respond_to :manifest_exists? }
12
+ it { is_expected.to respond_to :package_exists? }
13
+ it { is_expected.to respond_to :environment_status }
14
+ it { is_expected.to respond_to :configuration_template }
15
+ it { is_expected.to respond_to :deploy }
16
+ it { is_expected.to respond_to :update_environment }
17
+ it { is_expected.to respond_to :create_environment }
18
18
 
19
19
  # Constraint: Must be from 4 to 23 characters in length.
20
20
  # The name can contain only letters, numbers, and hyphens.
21
21
  # It cannot start or end with a hyphen.
22
22
  describe '#eb_environment_name' do
23
- subject(:bd) { Automan::Beanstalk::Deployer.new }
23
+ subject() { Automan::Beanstalk::Deployer.new }
24
24
 
25
25
  it "is at least 4 characters" do
26
- bd.name = "a"
27
- bd.environment = "a"
28
- bd.eb_environment_name.length.should be >= 4
26
+ subject.name = "a"
27
+ subject.environment = "a"
28
+ expect(subject.eb_environment_name.length).to be >= 4
29
29
  end
30
30
 
31
31
  it "is no more than 23 characters" do
32
- bd.name = "a" * 23
33
- bd.environment = "dev"
34
- bd.eb_environment_name.length.should be <= 23
32
+ subject.name = "a" * 23
33
+ subject.environment = "dev"
34
+ expect(subject.eb_environment_name.length).to be <= 23
35
35
  end
36
36
 
37
37
  it "contains only letters, numbers, and hyphens" do
38
- bd.name = '@#$%^foo_bar!$%&&E.'
39
- bd.environment = 'prod.baz'
40
- bd.eb_environment_name.should match(/[a-z0-9-]+/)
38
+ subject.name = '@#$%^foo_bar!$%&&E.'
39
+ subject.environment = 'prod.baz'
40
+ expect(subject.eb_environment_name).to match(/[a-z0-9-]+/)
41
41
  end
42
42
 
43
43
  it "cannot start or end with a hyphen" do
44
- bd.name = '--foo'
45
- bd.environment = 'bar--'
46
- bd.eb_environment_name.should match(/^[^-].*[^-]$/)
44
+ subject.name = '--foo'
45
+ subject.environment = 'bar--'
46
+ expect(subject.eb_environment_name).to match(/^[^-].*[^-]$/)
47
47
  end
48
48
 
49
49
  it "is still at least 4 characters even after removing restricted strings" do
50
- bd.name = '--f'
51
- bd.environment = '-'
52
- bd.eb_environment_name.length.should be >= 4
50
+ subject.name = '--f'
51
+ subject.environment = '-'
52
+ expect(subject.eb_environment_name.length).to be >= 4
53
53
  end
54
54
  end
55
55
 
56
56
  describe '#read_manifest' do
57
- subject(:d) do
57
+ subject() do
58
58
  AWS.stub!
59
59
  d = Automan::Beanstalk::Deployer.new
60
60
  d.logger = Logger.new('/dev/null')
@@ -62,23 +62,23 @@ describe Automan::Beanstalk::Deployer do
62
62
  end
63
63
 
64
64
  it 'raises MissingManifestError if the manifest is missing' do
65
- d.stub(:manifest_exists?).and_return(false)
65
+ expect(subject).to receive(:manifest_exists?).and_return(false)
66
66
  expect {
67
- d.read_manifest
67
+ subject.read_manifest
68
68
  }.to raise_error(Automan::Beanstalk::MissingManifestError)
69
69
  end
70
70
 
71
71
  it 'sets version_label and package properly' do
72
- d.stub(:manifest_exists?).and_return(true)
73
- d.stub(:s3_read).and_return('{"version_label": "foo", "package": "bar"}')
74
- d.read_manifest
75
- d.version_label.should eq('foo')
76
- d.package.should eq('bar')
72
+ allow(subject).to receive(:manifest_exists?).and_return(true)
73
+ allow(subject).to receive(:s3_read).and_return('{"version_label": "foo", "package": "bar"}')
74
+ subject.read_manifest
75
+ expect(subject.version_label).to eq('foo')
76
+ expect(subject.package).to eq('bar')
77
77
  end
78
78
  end
79
79
 
80
80
  describe '#deploy' do
81
- subject(:d) do
81
+ subject() do
82
82
  AWS.stub!
83
83
  d = Automan::Beanstalk::Deployer.new
84
84
  d.logger = Logger.new('/dev/null')
@@ -86,22 +86,22 @@ describe Automan::Beanstalk::Deployer do
86
86
  end
87
87
 
88
88
  it 'raises MissingPackageError if the package does not exist' do
89
- d.stub(:package_exists?).and_return(false)
89
+ allow(subject).to receive(:package_exists?).and_return(false)
90
90
  expect {
91
- d.deploy
91
+ subject.deploy
92
92
  }.to raise_error(Automan::Beanstalk::MissingPackageFileError)
93
93
  end
94
94
 
95
95
  it 'makes sure the application version and environment exists' do
96
- d.stub(:package_exists?).and_return(true)
97
- d.should_receive(:ensure_version_exists)
98
- d.should_receive(:create_or_update_environment)
99
- d.deploy
96
+ allow(subject).to receive(:package_exists?).and_return(true)
97
+ expect(subject).to receive(:ensure_version_exists)
98
+ expect(subject).to receive(:create_or_update_environment)
99
+ subject.deploy
100
100
  end
101
101
  end
102
102
 
103
103
  describe '#ensure_version_exists' do
104
- subject(:d) do
104
+ subject() do
105
105
  AWS.stub!
106
106
  d = Automan::Beanstalk::Deployer.new
107
107
  d.logger = Logger.new('/dev/null')
@@ -109,51 +109,51 @@ describe Automan::Beanstalk::Deployer do
109
109
  end
110
110
 
111
111
  it 'creates version if it does not exist' do
112
- version = double(:version)
113
- version.stub(:exists?).and_return(false)
114
- version.should_receive(:create)
115
- d.stub(:get_version).and_return(version)
116
- d.ensure_version_exists
112
+ version = double()
113
+ allow(version).to receive(:exists?).and_return(false)
114
+ expect(version).to receive(:create)
115
+ allow(subject).to receive(:get_version).and_return(version)
116
+ subject.ensure_version_exists
117
117
  end
118
118
 
119
119
  it 'does not create version if it exists' do
120
- version = double(:version)
121
- version.stub(:exists?).and_return(true)
122
- version.should_not_receive(:create)
123
- d.stub(:get_version).and_return(version)
124
- d.ensure_version_exists
120
+ version = double()
121
+ allow(version).to receive(:exists?).and_return(true)
122
+ expect(version).to_not receive(:create)
123
+ allow(subject).to receive(:get_version).and_return(version)
124
+ subject.ensure_version_exists
125
125
  end
126
126
  end
127
127
 
128
128
  describe '#create_or_update_environment' do
129
- subject(:d) do
129
+ subject() do
130
130
  AWS.stub!
131
131
  d = Automan::Beanstalk::Deployer.new
132
132
  d.logger = Logger.new('/dev/null')
133
- d.stub(:ensure_version_exists)
133
+ allow(d).to receive(:ensure_version_exists)
134
134
  d
135
135
  end
136
136
 
137
137
  [nil, 'Terminated'].each do |state|
138
138
  it "creates environment if state is #{state.nil? ? 'nil' : state}" do
139
- d.stub(:environment_status).and_return(state)
140
- d.should_receive(:create_environment)
141
- d.create_or_update_environment
139
+ allow(subject).to receive(:environment_status).and_return(state)
140
+ expect(subject).to receive(:create_environment)
141
+ subject.create_or_update_environment
142
142
  end
143
143
  end
144
144
 
145
145
  ['Ready'].each do |state|
146
146
  it "updates environment if state is #{state.nil? ? 'nil' : state}" do
147
- d.stub(:environment_status).and_return(state)
148
- d.should_receive(:update_environment)
149
- d.create_or_update_environment
147
+ allow(subject).to receive(:environment_status).and_return(state)
148
+ expect(subject).to receive(:update_environment)
149
+ subject.create_or_update_environment
150
150
  end
151
151
  end
152
152
 
153
153
  it 'raises error if environment state is anything else' do
154
- d.stub(:environment_status).and_return('foo')
154
+ allow(subject).to receive(:environment_status).and_return('foo')
155
155
  expect {
156
- d.create_or_update_environment
156
+ subject.create_or_update_environment
157
157
  }.to raise_error(Automan::Beanstalk::InvalidEnvironmentStatusError)
158
158
  end
159
159
  end
@@ -2,14 +2,14 @@ require 'automan'
2
2
  require 'wait'
3
3
 
4
4
  describe Automan::Beanstalk::Router do
5
- it { should respond_to :run }
6
- it { should respond_to :environment_name }
7
- it { should respond_to :hosted_zone_name }
8
- it { should respond_to :hostname }
5
+ it { is_expected.to respond_to :run }
6
+ it { is_expected.to respond_to :environment_name }
7
+ it { is_expected.to respond_to :hosted_zone_name }
8
+ it { is_expected.to respond_to :hostname }
9
9
 
10
10
  describe '#run' do
11
11
  context 'waiting' do
12
- subject(:r) do
12
+ subject() do
13
13
  AWS.stub!
14
14
  r = Automan::Beanstalk::Router.new
15
15
  r.eb = AWS::ElasticBeanstalk::Client.new
@@ -17,48 +17,47 @@ describe Automan::Beanstalk::Router do
17
17
  r.environment_name = 'foo'
18
18
  r.hosted_zone_name = 'foo.com'
19
19
  r.hostname = 'www.foo.com'
20
- r.log_aws_calls = false
21
20
  r.logger = Logger.new('/dev/null')
22
21
  r.wait = Wait.new(delay: 0.01, rescuer: WaitRescuer.new(AWS::Route53::Errors::InvalidChangeBatch))
23
22
  r
24
23
  end
25
24
 
26
25
  it "raises error if it never finds a name" do
27
- r.stub(:elb_cname_from_beanstalk_environment).and_return(nil)
26
+ allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return(nil)
28
27
  expect {
29
- r.run
28
+ subject.run
30
29
  }.to raise_error Wait::ResultInvalid
31
30
  end
32
31
 
33
32
  it "calls #update_dns_alias if it finds a name" do
34
- r.stub(:elb_cname_from_beanstalk_environment).and_return('foo')
35
- r.should_receive(:update_dns_alias)
36
- r.run
33
+ allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return('foo')
34
+ expect(subject).to receive(:update_dns_alias)
35
+ subject.run
37
36
  end
38
37
 
39
38
  it "ignores InvalidChangeBatch until last attempt" do
40
- r.stub(:elb_cname_from_beanstalk_environment).and_return('foo')
41
- r.stub(:update_dns_alias).and_raise AWS::Route53::Errors::InvalidChangeBatch
39
+ allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return('foo')
40
+ allow(subject).to receive(:update_dns_alias).and_raise AWS::Route53::Errors::InvalidChangeBatch
42
41
  expect {
43
- r.run
42
+ subject.run
44
43
  }.to raise_error AWS::Route53::Errors::InvalidChangeBatch
45
- r.attempts_made.should eq 5
44
+ expect(subject.attempts_made).to eq 5
46
45
  end
47
46
 
48
47
  it "ignores InvalidChangeBatch until it succeeds" do
49
- r.stub(:elb_cname_from_beanstalk_environment).and_return('foo')
48
+ allow(subject).to receive(:elb_cname_from_beanstalk_environment).and_return('foo')
50
49
 
51
50
  @attempts = 0
52
- r.stub(:update_dns_alias) do
51
+ allow(subject).to receive(:update_dns_alias) do
53
52
  @attempts += 1
54
53
  raise AWS::Route53::Errors::InvalidChangeBatch if @attempts < 3
55
54
  end
56
55
 
57
56
  expect {
58
- r.run
57
+ subject.run
59
58
  }.not_to raise_error
60
59
 
61
- r.attempts_made.should eq 3
60
+ expect(subject.attempts_made).to eq 3
62
61
  end
63
62
  end
64
63
  end
@@ -14,33 +14,33 @@ describe Automan::Beanstalk::Terminator do
14
14
  end
15
15
 
16
16
  it "returns false if environment does not exist" do
17
- resp = t.eb.stub_for :describe_environments
17
+ resp = subject.eb.stub_for :describe_environments
18
18
  resp.data[:environments] = [{}]
19
- t.environment_exists?('foo').should be_false
19
+ expect(subject.environment_exists?('foo')).to be_falsey
20
20
  end
21
21
 
22
22
  it "returns false if environment is in Terminated state" do
23
- resp = t.eb.stub_for :describe_environments
23
+ resp = subject.eb.stub_for :describe_environments
24
24
  resp.data[:environments] = [{environment_name: 'foo', status: 'Terminated'}]
25
- t.environment_exists?('foo').should be_false
25
+ expect(subject.environment_exists?('foo')).to be_falsey
26
26
  end
27
27
 
28
28
  it "returns false if environment is in Terminating state" do
29
- resp = t.eb.stub_for :describe_environments
29
+ resp = subject.eb.stub_for :describe_environments
30
30
  resp.data[:environments] = [{environment_name: 'foo', status: 'Terminating'}]
31
- t.environment_exists?('foo').should be_false
31
+ expect(subject.environment_exists?('foo')).to be_falsey
32
32
  end
33
33
 
34
34
  it "returns true if environment does exist" do
35
- resp = t.eb.stub_for :describe_environments
35
+ resp = subject.eb.stub_for :describe_environments
36
36
  resp.data[:environments] = [{environment_name: 'foo'}]
37
- t.environment_exists?('foo').should be_true
37
+ expect(subject.environment_exists?('foo')).to be_truthy
38
38
  end
39
39
 
40
40
  it "returns true if environment is in Ready state" do
41
- resp = t.eb.stub_for :describe_environments
41
+ resp = subject.eb.stub_for :describe_environments
42
42
  resp.data[:environments] = [{environment_name: 'foo', status: 'Ready'}]
43
- t.environment_exists?('foo').should be_true
43
+ expect(subject.environment_exists?('foo')).to be_truthy
44
44
  end
45
45
  end
46
46
 
@@ -53,15 +53,15 @@ describe Automan::Beanstalk::Terminator do
53
53
  end
54
54
 
55
55
  it 'should call #terminate_environment if the environment exists' do
56
- t.stub(:environment_exists?).and_return(true)
57
- t.should_receive :terminate_environment
58
- t.terminate
56
+ allow(subject).to receive(:environment_exists?).and_return(true)
57
+ expect(subject).to receive :terminate_environment
58
+ subject.terminate
59
59
  end
60
60
 
61
61
  it 'should not call #terminate_environment if the environment does not exist' do
62
- t.stub(:environment_exists?).and_return(false)
63
- t.should_not_receive :terminate_environment
64
- t.terminate
62
+ allow(subject).to receive(:environment_exists?).and_return(false)
63
+ expect(subject).to_not receive :terminate_environment
64
+ subject.terminate
65
65
  end
66
66
  end
67
67
  end
@@ -6,7 +6,7 @@ describe Automan::Beanstalk::Uploader do
6
6
  u = Automan::Beanstalk::Uploader.new
7
7
  u.logger = Logger.new('/dev/null')
8
8
  u.template_files = 'foo'
9
- u.stub(:config_templates).and_return(['foo'])
9
+ allow(u).to receive(:config_templates).and_return(['foo'])
10
10
  u
11
11
  end
12
12
 
@@ -18,36 +18,36 @@ describe Automan::Beanstalk::Uploader do
18
18
  describe '#config_templates_valid?' do
19
19
 
20
20
  it 'raises error if config templates do not exist' do
21
- u.stub(:config_templates).and_return([])
21
+ allow(subject).to receive(:config_templates).and_return([])
22
22
  expect {
23
- u.config_templates_valid?
23
+ subject.config_templates_valid?
24
24
  }.to raise_error(Automan::Beanstalk::NoConfigurationTemplatesError)
25
25
  end
26
26
 
27
27
  it 'returns true if config templates are valid json' do
28
- u.stub(:read_config_template).and_return('[{}]')
29
- u.config_templates_valid?.should be_true
28
+ allow(subject).to receive(:read_config_template).and_return('[{}]')
29
+ expect(subject.config_templates_valid?).to be_truthy
30
30
  end
31
31
 
32
32
  it 'returns false if config templates are invalid json' do
33
- u.stub(:read_config_template).and_return('@#$%#')
34
- u.config_templates_valid?.should be_false
33
+ allow(subject).to receive(:read_config_template).and_return('@#$%#')
34
+ expect(subject.config_templates_valid?).to be_falsey
35
35
  end
36
36
  end
37
37
 
38
38
  describe '#upload_config_templates' do
39
39
  it 'raises error if any config template fails validation' do
40
- u.stub(:config_templates_valid?).and_return(false)
40
+ allow(subject).to receive(:config_templates_valid?).and_return(false)
41
41
  expect {
42
- u.upload_config_templates
42
+ subject.upload_config_templates
43
43
  }.to raise_error(Automan::Beanstalk::InvalidConfigurationTemplateError)
44
44
  end
45
45
 
46
46
  it 'uploads files if they are valid' do
47
- u.stub(:config_templates).and_return(%w[a b c])
48
- u.stub(:config_templates_valid?).and_return(true)
49
- u.should_receive(:upload_file).exactly(3).times
50
- u.upload_config_templates
47
+ allow(subject).to receive(:config_templates).and_return(%w[a b c])
48
+ allow(subject).to receive(:config_templates_valid?).and_return(true)
49
+ expect(subject).to receive(:upload_file).exactly(3).times
50
+ subject.upload_config_templates
51
51
  end
52
52
  end
53
53
  end
@@ -16,25 +16,24 @@ describe Automan::Beanstalk::Version do
16
16
  v.eb = AWS::ElasticBeanstalk::Client.new
17
17
  v.application = 'foo'
18
18
  v.label = 'v4'
19
- v.log_aws_calls = false
20
19
  v.logger = Logger.new('/dev/null')
21
20
  v
22
21
  end
23
22
 
24
23
  it "is true when version exists in response" do
25
- resp = v.eb.stub_for :describe_application_versions
24
+ resp = subject.eb.stub_for :describe_application_versions
26
25
  resp.data[:application_versions] = [
27
- {application_name: v.application, version_label: v.label}
26
+ {application_name: subject.application, version_label: subject.label}
28
27
  ]
29
- v.exists?.should be_true
28
+ expect(subject.exists?).to be_truthy
30
29
  end
31
30
 
32
31
  it "is false when version is not in response" do
33
- resp = v.eb.stub_for :describe_application_versions
32
+ resp = subject.eb.stub_for :describe_application_versions
34
33
  resp.data[:application_versions] = [
35
34
  {application_name: '', version_label: ''}
36
35
  ]
37
- v.exists?.should be_false
36
+ expect(subject.exists?).to be_falsey
38
37
  end
39
38
  end
40
39
 
@@ -47,11 +46,10 @@ describe Automan::Beanstalk::Version do
47
46
  end
48
47
 
49
48
  it 'ignores AWS::ElasticBeanstalk::Errors::SourceBundleDeletionFailure' do
50
- eb = double(:eb)
51
- eb.stub(:delete_application_version).and_raise(AWS::ElasticBeanstalk::Errors::SourceBundleDeletionFailure)
52
- v.eb = eb
49
+ subject.eb = double()
50
+ allow(subject.eb).to receive(:delete_application_version).and_raise(AWS::ElasticBeanstalk::Errors::SourceBundleDeletionFailure)
53
51
  expect {
54
- v.delete_by_label('foo')
52
+ subject.delete_by_label('foo')
55
53
  }.not_to raise_error
56
54
  end
57
55