From 9151d0878a00a3fb5cb5f65461acbe17e487c448 Mon Sep 17 00:00:00 2001 From: "Jesse R. Adams" Date: Thu, 28 May 2020 14:04:29 -0700 Subject: [PATCH 1/3] Convert ENV['AWS_MAX_ATTEMPTS'] string value to int --- gems/aws-sdk-core/CHANGELOG.md | 1 + gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gems/aws-sdk-core/CHANGELOG.md b/gems/aws-sdk-core/CHANGELOG.md index 2e47047fc6a..d8e81c4fb3c 100644 --- a/gems/aws-sdk-core/CHANGELOG.md +++ b/gems/aws-sdk-core/CHANGELOG.md @@ -1,5 +1,6 @@ Unreleased Changes ------------------ +* Issue - Convert ENV['AWS_MAX_ATTEMPTS'] String value to Integer when set 3.97.0 (2020-05-28) ------------------ diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb b/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb index abdf76eeeda..4c99a3cfe15 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb @@ -174,7 +174,7 @@ def self.resolve_retry_mode(cfg) end def self.resolve_max_attempts(cfg) - value = ENV['AWS_MAX_ATTEMPTS'] || + value = ENV['AWS_MAX_ATTEMPTS'] && ENV['AWS_MAX_ATTEMPTS'].to_i || Aws.shared_config.max_attempts(profile: cfg.profile) || 3 # Raise if provided value is not a positive integer From 2bf4326f329f8194bc00a7fa7b9a0ce16d1ad262 Mon Sep 17 00:00:00 2001 From: "Jesse R. Adams" Date: Thu, 28 May 2020 15:21:54 -0700 Subject: [PATCH 2/3] Adjusting tests to catch failure and then confirm fix --- gems/aws-sdk-core/spec/aws/client_spec.rb | 3 + .../spec/aws/plugins/retry_errors_spec.rb | 154 ++++++++++-------- .../spec/aws/plugins/signature_v4_spec.rb | 3 + gems/aws-sdk-core/spec/aws/sts/client_spec.rb | 4 + .../spec/aws/sts/presigner_spec.rb | 1 + .../aws/sts/sts_regional_endpoints_spec.rb | 3 + .../spec/aws/stubbing/empty_stub_spec.rb | 3 + gems/aws-sdk-core/spec/aws/waiters_spec.rb | 3 + .../spec/aws/xml/error_handler_spec.rb | 3 + gems/aws-sdk-core/spec/shared_spec_helper.rb | 5 +- 10 files changed, 107 insertions(+), 75 deletions(-) diff --git a/gems/aws-sdk-core/spec/aws/client_spec.rb b/gems/aws-sdk-core/spec/aws/client_spec.rb index 92b8f246a66..c57e4f4e824 100644 --- a/gems/aws-sdk-core/spec/aws/client_spec.rb +++ b/gems/aws-sdk-core/spec/aws/client_spec.rb @@ -3,6 +3,9 @@ module Aws describe 'Client' do describe 'response stubbing' do + before(:each) do + stub_const('ENV', {}) + end ResponseStubbingExample = ApiHelper.sample_service diff --git a/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb b/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb index 39ee5f52c80..55d3af1fd80 100644 --- a/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb +++ b/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb @@ -6,97 +6,109 @@ module Plugins describe RetryErrors do let(:client) { RetryErrorsSvc::Client.new(stub_responses: true) } - it 'can configure retry_mode with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:retry_mode).and_return('standard') - expect(client.config.retry_mode).to eq('standard') - end + context 'ENV is stubbed' do + before(:each) do + stub_const('ENV', {}) + end - it 'can configure retry_mode using ENV with precedence over config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:retry_mode).and_return('standard') - ENV['AWS_RETRY_MODE'] = 'adaptive' - expect(client.config.retry_mode).to eq('adaptive') - end + it 'can configure retry_mode with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:retry_mode).and_return('standard') + expect(client.config.retry_mode).to eq('standard') + end - it 'raises when retry_mode is not legacy, standard, or adaptive' do - ENV['AWS_RETRY_MODE'] = 'peccy' - expect { client }.to raise_error(ArgumentError) - end + it 'can configure retry_mode using ENV with precedence over config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:retry_mode).and_return('standard') + ENV['AWS_RETRY_MODE'] = 'adaptive' + expect(client.config.retry_mode).to eq('adaptive') + end - it 'uses the handler when retry_mode is standard' do - client = RetryErrorsSvc::Client.new(retry_mode: 'standard', - region: 'us-west-2') - expect(client.handlers.entries.map(&:handler_class)). - to include(RetryErrors::Handler) - end + it 'raises when retry_mode is not legacy, standard, or adaptive' do + ENV['AWS_RETRY_MODE'] = 'peccy' + expect { client }.to raise_error(ArgumentError) + end - it 'uses the handler when retry_mode is adaptive' do - client = RetryErrorsSvc::Client.new(retry_mode: 'adaptive', - region: 'us-west-2') - expect(client.handlers.entries.map(&:handler_class)) - .to include(RetryErrors::Handler) - end + it 'uses the handler when retry_mode is standard' do + client = RetryErrorsSvc::Client.new(retry_mode: 'standard', + region: 'us-west-2') + expect(client.handlers.entries.map(&:handler_class)). + to include(RetryErrors::Handler) + end - it 'defaults config.max_attempts to 3' do - expect(client.config.max_attempts).to eq(3) - end + it 'uses the handler when retry_mode is adaptive' do + client = RetryErrorsSvc::Client.new(retry_mode: 'adaptive', + region: 'us-west-2') + expect(client.handlers.entries.map(&:handler_class)) + .to include(RetryErrors::Handler) + end - it 'can configure max_attempts with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:max_attempts).and_return(5) - expect(client.config.max_attempts).to eq(5) - end + it 'defaults config.max_attempts to 3' do + expect(client.config.max_attempts).to eq(3) + end - it 'can configure max_attempts using ENV with precedence over config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:max_attempts).and_return(3) - ENV['AWS_MAX_ATTEMPTS'] = 1 - expect(client.config.max_attempts).to eq(1) - end + it 'can configure max_attempts with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:max_attempts).and_return(5) + expect(client.config.max_attempts).to eq(5) + end - it 'raises when max_attempts is not an integer' do - ENV['AWS_MAX_ATTEMPTS'] = 'string' - expect { client }.to raise_error(ArgumentError) - end + it 'defaults config.adaptive_retry_wait_to_fill to true' do + expect(client.config.adaptive_retry_wait_to_fill).to eq(true) + end - it 'raises when max_attempts is not >= 0' do - ENV['AWS_MAX_ATTEMPTS'] = -1 - expect { client }.to raise_error(ArgumentError) - end + it 'can configure adaptive_retry_wait_to_fill using ENV with precedence over config' do + ENV['AWS_ADAPTIVE_RETRY_WAIT_TO_FILL'] = 'false' + expect(client.config.adaptive_retry_wait_to_fill).to eq(false) + end - it 'defaults config.adaptive_retry_wait_to_fill to true' do - expect(client.config.adaptive_retry_wait_to_fill).to eq(true) - end + it 'can configure adaptive_retry_wait_to_fill with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:adaptive_retry_wait_to_fill).and_return('false') + expect(client.config.adaptive_retry_wait_to_fill).to eq(false) + end - it 'can configure adaptive_retry_wait_to_fill using ENV with precedence over config' do - ENV['AWS_ADAPTIVE_RETRY_WAIT_TO_FILL'] = 'false' - expect(client.config.adaptive_retry_wait_to_fill).to eq(false) - end + it 'defaults config.correct_clock_skew to true' do + expect(client.config.correct_clock_skew).to eq(true) + end - it 'can configure adaptive_retry_wait_to_fill with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:adaptive_retry_wait_to_fill).and_return('false') - expect(client.config.adaptive_retry_wait_to_fill).to eq(false) - end + it 'can configure correct_clock_skew using ENV with precedence over config' do + ENV['AWS_CORRECT_CLOCK_SKEW'] = 'true' + expect(client.config.correct_clock_skew).to eq(true) + end - it 'defaults config.correct_clock_skew to true' do - expect(client.config.correct_clock_skew).to eq(true) + it 'can configure correct_clock_skew with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:correct_clock_skew).and_return('true') + expect(client.config.correct_clock_skew).to eq(true) + end end - it 'can configure correct_clock_skew using ENV with precedence over config' do - ENV['AWS_CORRECT_CLOCK_SKEW'] = 'true' - expect(client.config.correct_clock_skew).to eq(true) - end + context 'ENV is not stubbed' do + it 'can configure max_attempts using ENV with precedence over config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:max_attempts).and_return(3) + ENV['AWS_MAX_ATTEMPTS'] = '1' + expect(client.config.max_attempts).to eq(1) + end + + it 'raises when max_attempts is not an integer' do + ENV['AWS_MAX_ATTEMPTS'] = 'string' + expect { client }.to raise_error(ArgumentError) + end - it 'can configure correct_clock_skew with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:correct_clock_skew).and_return('true') - expect(client.config.correct_clock_skew).to eq(true) + it 'raises when max_attempts is not >= 0' do + ENV['AWS_MAX_ATTEMPTS'] = '-1' + expect { client }.to raise_error(ArgumentError) + end end end describe RetryErrors::Handler do + before(:each) do + stub_const('ENV', {}) + end + let(:credentials) { Credentials.new('akid', 'secret') } let(:cache) { EndpointCache.new } diff --git a/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb b/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb index 873dc09424e..1ce863d59f5 100644 --- a/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb +++ b/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb @@ -3,6 +3,9 @@ module Aws module Plugins describe SignatureV4 do + before(:each) do + stub_const('ENV', {}) + end Sigv4Client = ApiHelper.sample_service(metadata: { 'signatureVersion' => 'v4', diff --git a/gems/aws-sdk-core/spec/aws/sts/client_spec.rb b/gems/aws-sdk-core/spec/aws/sts/client_spec.rb index dd36985f5cc..f6051c386cb 100644 --- a/gems/aws-sdk-core/spec/aws/sts/client_spec.rb +++ b/gems/aws-sdk-core/spec/aws/sts/client_spec.rb @@ -3,6 +3,10 @@ module Aws module STS describe Client do + before(:each) do + stub_const('ENV', {}) + end + it 'constructs the proper endpoint in gov-cloud' do client = Client.new( region: 'us-gov-west-1', diff --git a/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb b/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb index f273b8deb34..6250ee58847 100644 --- a/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb +++ b/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb @@ -7,6 +7,7 @@ module STS allow(Time).to receive(:now).and_return(now) allow(now).to receive(:utc).and_return(utc) allow(utc).to receive(:strftime).and_return(datetime) + stub_const('ENV', {}) end let(:now) { double('now') } diff --git a/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb b/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb index e194c558239..4bd7d104cb0 100644 --- a/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb +++ b/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb @@ -3,6 +3,9 @@ module Aws module STS describe Client do + before(:each) do + stub_const('ENV', {}) + end describe ':sts_regional_endpoints' do diff --git a/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb b/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb index 21d6c8a3221..4a21b581957 100644 --- a/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb +++ b/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb @@ -4,6 +4,9 @@ module Aws module Stubbing describe EmptyStub do + before(:each) do + stub_const('ENV', {}) + end it 'supports complex recursive structures' do now = Time.now diff --git a/gems/aws-sdk-core/spec/aws/waiters_spec.rb b/gems/aws-sdk-core/spec/aws/waiters_spec.rb index a998f447bf1..7eda8b249f4 100644 --- a/gems/aws-sdk-core/spec/aws/waiters_spec.rb +++ b/gems/aws-sdk-core/spec/aws/waiters_spec.rb @@ -3,6 +3,9 @@ module Aws module Waiters describe 'Waiters' do + before(:each) do + stub_const('ENV', {}) + end dir = File.expand_path('../../fixtures/waiters', __FILE__) WaiterTest = ApiHelper.sample_service( diff --git a/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb b/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb index 3ebae7d9682..9e208355e5b 100644 --- a/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb +++ b/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb @@ -3,6 +3,9 @@ module Aws module Xml describe ErrorHandler do + before(:each) do + stub_const('ENV', {}) + end let(:cloudfront) { ApiHelper.sample_service( diff --git a/gems/aws-sdk-core/spec/shared_spec_helper.rb b/gems/aws-sdk-core/spec/shared_spec_helper.rb index f43384bf35b..82f33fa5cc4 100644 --- a/gems/aws-sdk-core/spec/shared_spec_helper.rb +++ b/gems/aws-sdk-core/spec/shared_spec_helper.rb @@ -15,9 +15,6 @@ # RSpec.configure do |config| config.before(:each) do - - stub_const('ENV', {}) - # disable loading credentials from shared file allow(Dir).to receive(:home).and_raise(ArgumentError) @@ -43,4 +40,4 @@ Thread.report_on_exception = current_value if current_value end -end \ No newline at end of file +end From 351507414b5dc182d841d5e739acc991f30cd04a Mon Sep 17 00:00:00 2001 From: Matt Muller Date: Fri, 29 May 2020 10:06:43 -0700 Subject: [PATCH 3/3] Use ENV.clear instead of stubbing as a hash --- gems/aws-sdk-core/CHANGELOG.md | 3 +- .../lib/aws-sdk-core/plugins/retry_errors.rb | 6 +- gems/aws-sdk-core/spec/aws/client_spec.rb | 3 - .../spec/aws/plugins/retry_errors_spec.rb | 156 ++++++++---------- .../spec/aws/plugins/signature_v4_spec.rb | 3 - gems/aws-sdk-core/spec/aws/sts/client_spec.rb | 4 - .../spec/aws/sts/presigner_spec.rb | 1 - .../aws/sts/sts_regional_endpoints_spec.rb | 3 - .../spec/aws/stubbing/empty_stub_spec.rb | 3 - gems/aws-sdk-core/spec/aws/waiters_spec.rb | 3 - .../spec/aws/xml/error_handler_spec.rb | 3 - .../seahorse/client/net_http/handler_spec.rb | 2 +- gems/aws-sdk-core/spec/shared_spec_helper.rb | 4 + 13 files changed, 81 insertions(+), 113 deletions(-) diff --git a/gems/aws-sdk-core/CHANGELOG.md b/gems/aws-sdk-core/CHANGELOG.md index d8e81c4fb3c..874c2fb559b 100644 --- a/gems/aws-sdk-core/CHANGELOG.md +++ b/gems/aws-sdk-core/CHANGELOG.md @@ -1,6 +1,7 @@ Unreleased Changes ------------------ -* Issue - Convert ENV['AWS_MAX_ATTEMPTS'] String value to Integer when set + +* Issue - Convert ENV['AWS_MAX_ATTEMPTS'] String value to Integer when set. (#2319) 3.97.0 (2020-05-28) ------------------ diff --git a/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb b/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb index 4c99a3cfe15..b6adb19c6b3 100644 --- a/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb +++ b/gems/aws-sdk-core/lib/aws-sdk-core/plugins/retry_errors.rb @@ -174,7 +174,7 @@ def self.resolve_retry_mode(cfg) end def self.resolve_max_attempts(cfg) - value = ENV['AWS_MAX_ATTEMPTS'] && ENV['AWS_MAX_ATTEMPTS'].to_i || + value = (ENV['AWS_MAX_ATTEMPTS'] && ENV['AWS_MAX_ATTEMPTS'].to_i) || Aws.shared_config.max_attempts(profile: cfg.profile) || 3 # Raise if provided value is not a positive integer @@ -190,7 +190,6 @@ def self.resolve_adaptive_retry_wait_to_fill(cfg) value = ENV['AWS_ADAPTIVE_RETRY_WAIT_TO_FILL'] || Aws.shared_config.adaptive_retry_wait_to_fill(profile: cfg.profile) || 'true' - # Raise if provided value is not true or false if value != 'true' && value != 'false' raise ArgumentError, @@ -198,7 +197,6 @@ def self.resolve_adaptive_retry_wait_to_fill(cfg) 'adaptive_retry_wait_to_fill profile option or for '\ 'ENV[\'AWS_ADAPTIVE_RETRY_WAIT_TO_FILL\']' end - value == 'true' end @@ -206,7 +204,6 @@ def self.resolve_correct_clock_skew(cfg) value = ENV['AWS_CORRECT_CLOCK_SKEW'] || Aws.shared_config.correct_clock_skew(profile: cfg.profile) || 'true' - # Raise if provided value is not true or false if value != 'true' && value != 'false' raise ArgumentError, @@ -214,7 +211,6 @@ def self.resolve_correct_clock_skew(cfg) 'correct_clock_skew profile option or for '\ 'ENV[\'AWS_CORRECT_CLOCK_SKEW\']' end - value == 'true' end diff --git a/gems/aws-sdk-core/spec/aws/client_spec.rb b/gems/aws-sdk-core/spec/aws/client_spec.rb index c57e4f4e824..92b8f246a66 100644 --- a/gems/aws-sdk-core/spec/aws/client_spec.rb +++ b/gems/aws-sdk-core/spec/aws/client_spec.rb @@ -3,9 +3,6 @@ module Aws describe 'Client' do describe 'response stubbing' do - before(:each) do - stub_const('ENV', {}) - end ResponseStubbingExample = ApiHelper.sample_service diff --git a/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb b/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb index 55d3af1fd80..c5693750ed9 100644 --- a/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb +++ b/gems/aws-sdk-core/spec/aws/plugins/retry_errors_spec.rb @@ -6,109 +6,99 @@ module Plugins describe RetryErrors do let(:client) { RetryErrorsSvc::Client.new(stub_responses: true) } - context 'ENV is stubbed' do - before(:each) do - stub_const('ENV', {}) - end - - it 'can configure retry_mode with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:retry_mode).and_return('standard') - expect(client.config.retry_mode).to eq('standard') - end + it 'can configure retry_mode with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:retry_mode).and_return('standard') + expect(client.config.retry_mode).to eq('standard') + end - it 'can configure retry_mode using ENV with precedence over config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:retry_mode).and_return('standard') - ENV['AWS_RETRY_MODE'] = 'adaptive' - expect(client.config.retry_mode).to eq('adaptive') - end + it 'can configure retry_mode using ENV with precedence over config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:retry_mode).and_return('standard') + ENV['AWS_RETRY_MODE'] = 'adaptive' + expect(client.config.retry_mode).to eq('adaptive') + end - it 'raises when retry_mode is not legacy, standard, or adaptive' do - ENV['AWS_RETRY_MODE'] = 'peccy' - expect { client }.to raise_error(ArgumentError) - end + it 'raises when retry_mode is not legacy, standard, or adaptive' do + ENV['AWS_RETRY_MODE'] = 'peccy' + expect { client }.to raise_error(ArgumentError) + end - it 'uses the handler when retry_mode is standard' do - client = RetryErrorsSvc::Client.new(retry_mode: 'standard', - region: 'us-west-2') - expect(client.handlers.entries.map(&:handler_class)). - to include(RetryErrors::Handler) - end + it 'uses the handler when retry_mode is standard' do + client = RetryErrorsSvc::Client.new( + retry_mode: 'standard', region: 'us-west-2' + ) + expect(client.handlers.entries.map(&:handler_class)). + to include(RetryErrors::Handler) + end - it 'uses the handler when retry_mode is adaptive' do - client = RetryErrorsSvc::Client.new(retry_mode: 'adaptive', - region: 'us-west-2') - expect(client.handlers.entries.map(&:handler_class)) - .to include(RetryErrors::Handler) - end + it 'uses the handler when retry_mode is adaptive' do + client = RetryErrorsSvc::Client.new( + retry_mode: 'adaptive', region: 'us-west-2' + ) + expect(client.handlers.entries.map(&:handler_class)) + .to include(RetryErrors::Handler) + end - it 'defaults config.max_attempts to 3' do - expect(client.config.max_attempts).to eq(3) - end + it 'defaults config.max_attempts to 3' do + expect(client.config.max_attempts).to eq(3) + end - it 'can configure max_attempts with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:max_attempts).and_return(5) - expect(client.config.max_attempts).to eq(5) - end + it 'can configure max_attempts with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:max_attempts).and_return(5) + expect(client.config.max_attempts).to eq(5) + end - it 'defaults config.adaptive_retry_wait_to_fill to true' do - expect(client.config.adaptive_retry_wait_to_fill).to eq(true) - end + it 'can configure max_attempts using ENV with precedence over config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:max_attempts).and_return(3) + ENV['AWS_MAX_ATTEMPTS'] = '1' + expect(client.config.max_attempts).to eq(1) + end - it 'can configure adaptive_retry_wait_to_fill using ENV with precedence over config' do - ENV['AWS_ADAPTIVE_RETRY_WAIT_TO_FILL'] = 'false' - expect(client.config.adaptive_retry_wait_to_fill).to eq(false) - end + it 'raises when max_attempts is not an integer' do + ENV['AWS_MAX_ATTEMPTS'] = 'string' + expect { client }.to raise_error(ArgumentError) + end - it 'can configure adaptive_retry_wait_to_fill with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:adaptive_retry_wait_to_fill).and_return('false') - expect(client.config.adaptive_retry_wait_to_fill).to eq(false) - end + it 'raises when max_attempts is not >= 0' do + ENV['AWS_MAX_ATTEMPTS'] = '-1' + expect { client }.to raise_error(ArgumentError) + end - it 'defaults config.correct_clock_skew to true' do - expect(client.config.correct_clock_skew).to eq(true) - end + it 'defaults config.adaptive_retry_wait_to_fill to true' do + expect(client.config.adaptive_retry_wait_to_fill).to eq(true) + end - it 'can configure correct_clock_skew using ENV with precedence over config' do - ENV['AWS_CORRECT_CLOCK_SKEW'] = 'true' - expect(client.config.correct_clock_skew).to eq(true) - end + it 'can configure adaptive_retry_wait_to_fill using ENV with precedence over config' do + ENV['AWS_ADAPTIVE_RETRY_WAIT_TO_FILL'] = 'false' + expect(client.config.adaptive_retry_wait_to_fill).to eq(false) + end - it 'can configure correct_clock_skew with shared config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:correct_clock_skew).and_return('true') - expect(client.config.correct_clock_skew).to eq(true) - end + it 'can configure adaptive_retry_wait_to_fill with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:adaptive_retry_wait_to_fill).and_return('false') + expect(client.config.adaptive_retry_wait_to_fill).to eq(false) end - context 'ENV is not stubbed' do - it 'can configure max_attempts using ENV with precedence over config' do - allow_any_instance_of(Aws::SharedConfig) - .to receive(:max_attempts).and_return(3) - ENV['AWS_MAX_ATTEMPTS'] = '1' - expect(client.config.max_attempts).to eq(1) - end + it 'defaults config.correct_clock_skew to true' do + expect(client.config.correct_clock_skew).to eq(true) + end - it 'raises when max_attempts is not an integer' do - ENV['AWS_MAX_ATTEMPTS'] = 'string' - expect { client }.to raise_error(ArgumentError) - end + it 'can configure correct_clock_skew using ENV with precedence over config' do + ENV['AWS_CORRECT_CLOCK_SKEW'] = 'true' + expect(client.config.correct_clock_skew).to eq(true) + end - it 'raises when max_attempts is not >= 0' do - ENV['AWS_MAX_ATTEMPTS'] = '-1' - expect { client }.to raise_error(ArgumentError) - end + it 'can configure correct_clock_skew with shared config' do + allow_any_instance_of(Aws::SharedConfig) + .to receive(:correct_clock_skew).and_return('true') + expect(client.config.correct_clock_skew).to eq(true) end end describe RetryErrors::Handler do - before(:each) do - stub_const('ENV', {}) - end - let(:credentials) { Credentials.new('akid', 'secret') } let(:cache) { EndpointCache.new } diff --git a/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb b/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb index 1ce863d59f5..873dc09424e 100644 --- a/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb +++ b/gems/aws-sdk-core/spec/aws/plugins/signature_v4_spec.rb @@ -3,9 +3,6 @@ module Aws module Plugins describe SignatureV4 do - before(:each) do - stub_const('ENV', {}) - end Sigv4Client = ApiHelper.sample_service(metadata: { 'signatureVersion' => 'v4', diff --git a/gems/aws-sdk-core/spec/aws/sts/client_spec.rb b/gems/aws-sdk-core/spec/aws/sts/client_spec.rb index f6051c386cb..dd36985f5cc 100644 --- a/gems/aws-sdk-core/spec/aws/sts/client_spec.rb +++ b/gems/aws-sdk-core/spec/aws/sts/client_spec.rb @@ -3,10 +3,6 @@ module Aws module STS describe Client do - before(:each) do - stub_const('ENV', {}) - end - it 'constructs the proper endpoint in gov-cloud' do client = Client.new( region: 'us-gov-west-1', diff --git a/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb b/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb index 6250ee58847..f273b8deb34 100644 --- a/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb +++ b/gems/aws-sdk-core/spec/aws/sts/presigner_spec.rb @@ -7,7 +7,6 @@ module STS allow(Time).to receive(:now).and_return(now) allow(now).to receive(:utc).and_return(utc) allow(utc).to receive(:strftime).and_return(datetime) - stub_const('ENV', {}) end let(:now) { double('now') } diff --git a/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb b/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb index 4bd7d104cb0..e194c558239 100644 --- a/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb +++ b/gems/aws-sdk-core/spec/aws/sts/sts_regional_endpoints_spec.rb @@ -3,9 +3,6 @@ module Aws module STS describe Client do - before(:each) do - stub_const('ENV', {}) - end describe ':sts_regional_endpoints' do diff --git a/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb b/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb index 4a21b581957..21d6c8a3221 100644 --- a/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb +++ b/gems/aws-sdk-core/spec/aws/stubbing/empty_stub_spec.rb @@ -4,9 +4,6 @@ module Aws module Stubbing describe EmptyStub do - before(:each) do - stub_const('ENV', {}) - end it 'supports complex recursive structures' do now = Time.now diff --git a/gems/aws-sdk-core/spec/aws/waiters_spec.rb b/gems/aws-sdk-core/spec/aws/waiters_spec.rb index 7eda8b249f4..a998f447bf1 100644 --- a/gems/aws-sdk-core/spec/aws/waiters_spec.rb +++ b/gems/aws-sdk-core/spec/aws/waiters_spec.rb @@ -3,9 +3,6 @@ module Aws module Waiters describe 'Waiters' do - before(:each) do - stub_const('ENV', {}) - end dir = File.expand_path('../../fixtures/waiters', __FILE__) WaiterTest = ApiHelper.sample_service( diff --git a/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb b/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb index 9e208355e5b..3ebae7d9682 100644 --- a/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb +++ b/gems/aws-sdk-core/spec/aws/xml/error_handler_spec.rb @@ -3,9 +3,6 @@ module Aws module Xml describe ErrorHandler do - before(:each) do - stub_const('ENV', {}) - end let(:cloudfront) { ApiHelper.sample_service( diff --git a/gems/aws-sdk-core/spec/seahorse/client/net_http/handler_spec.rb b/gems/aws-sdk-core/spec/seahorse/client/net_http/handler_spec.rb index 7f7a5c69a3a..b7eeeaa0502 100644 --- a/gems/aws-sdk-core/spec/seahorse/client/net_http/handler_spec.rb +++ b/gems/aws-sdk-core/spec/seahorse/client/net_http/handler_spec.rb @@ -49,7 +49,7 @@ def endpoint it 're-uses session for slow request that are taking more time than the configured idle timeout' do session = double('http-session').as_null_object - session.stub(:request) { sleep 2 } + allow(session).to receive(:request) { sleep 2 } pool = ConnectionPool.for(http_idle_timeout: 1) expect(pool).to receive(:start_session). exactly(1).times. diff --git a/gems/aws-sdk-core/spec/shared_spec_helper.rb b/gems/aws-sdk-core/spec/shared_spec_helper.rb index 82f33fa5cc4..3c1e7c3a31c 100644 --- a/gems/aws-sdk-core/spec/shared_spec_helper.rb +++ b/gems/aws-sdk-core/spec/shared_spec_helper.rb @@ -15,6 +15,10 @@ # RSpec.configure do |config| config.before(:each) do + # Clear the current ENV to avoid loading credentials. + # This was previously mocked with stub_const but was provided a hash. + ENV.clear + # disable loading credentials from shared file allow(Dir).to receive(:home).and_raise(ArgumentError)